Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752643AbdLFRKv (ORCPT ); Wed, 6 Dec 2017 12:10:51 -0500 Received: from mail-qt0-f181.google.com ([209.85.216.181]:45808 "EHLO mail-qt0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752326AbdLFRKt (ORCPT ); Wed, 6 Dec 2017 12:10:49 -0500 X-Google-Smtp-Source: ACJfBovoQGYA3FMPF7rmz2K7yo455wKCtqzEIiI6E+mz8W4cKddHPd3Crc/ztHnPKf9GqX5yf4kPGJa27CCI1sNZFgg= MIME-Version: 1.0 In-Reply-To: References: <20171205143514.4441-1-sven.eckelmann@openmesh.com> <20171205143514.4441-7-sven.eckelmann@openmesh.com> <1932095.qaFFlVjcYD@bentobox> From: Tom Herbert Date: Wed, 6 Dec 2017 09:10:48 -0800 Message-ID: Subject: Re: [RFC v2 6/6] flow_dissector: Parse batman-adv unicast headers To: Willem de Bruijn Cc: Sven Eckelmann , Linux Kernel Network Developers , "David S . Miller" , Jiri Pirko , Eric Dumazet , LKML , b.a.t.m.a.n@lists.open-mesh.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2077 Lines: 46 On Wed, Dec 6, 2017 at 8:54 AM, Willem de Bruijn wrote: > On Wed, Dec 6, 2017 at 5:26 AM, Sven Eckelmann > wrote: >> On Dienstag, 5. Dezember 2017 09:19:45 CET Tom Herbert wrote: >> [...] >>> Switch statements with cases having many LOC is hard to read and >>> __skb_flow_dissect is aleady quite convoluted to begin with. >>> >>> I suggest putting this in a static function similar to how MPLS and >>> GRE are handled. > > Perhaps it can even be behind a static key depending on whether any > devices are active, adjusted in batadv_hardif_(en|dis)able_interface. > It's aready in a switch statement so static key shouldn't make a difference. Also, we have made flow dissector operate indendently of whether to end protocol is enable (for instance GRE is dissected regarless of whether and GRE tunnels are configured). Tom >> Thanks for the feedback. >> >> I was not sure whether "inline" or an extra function would be preferred. I've >> then decided to implement it like most of the other protocols. But since an >> extra function is the preferred method for handling new protos, I will move it >> to an extra function. >> >> The change can already be found in >> https://git.open-mesh.org/linux-merge.git/shortlog/refs/heads/ecsv/flowdissector >> >> I also saw that you've introduced in >> commit 823b96939578 ("flow_dissector: Add control/reporting of encapsulation") >> a flag to stop dissecting when something encapsulated was detected. It is not >> 100% clear to me when the FLOW_DIS_ENCAPSULATION should be set and >> FLOW_DISSECTOR_F_STOP_AT_ENCAP be checked. Only when there is IP/eth in IP >> (like in the two examples from the commit message) or also when there is a >> ethernet header, followed by batman-adv unicast header and again followed by >> an ethernet header? > > Please implement FLOW_DISSECTOR_F_STOP_AT_ENCAP. It may > be used in more flow dissector paths in the future. > > The features are also used by GRE, which can encap Ethernet, for an example > that is closer to this protocol.