From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pablo Neira Ayuso Subject: Re: [PATCH net-next,v2 03/12] flow_dissector: add flow action infrastructure Date: Mon, 19 Nov 2018 13:35:48 +0100 Message-ID: <20181119123548.qk74xgntgfp6msqm@salvia> References: <20181119001519.12124-1-pablo@netfilter.org> <20181119001519.12124-4-pablo@netfilter.org> <20181119115623.GA2223@nanopsycho.orion> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: netdev@vger.kernel.org, davem@davemloft.net, thomas.lendacky@amd.com, f.fainelli@gmail.com, ariel.elior@cavium.com, michael.chan@broadcom.com, santosh@chelsio.com, madalin.bucur@nxp.com, yisen.zhuang@huawei.com, salil.mehta@huawei.com, jeffrey.t.kirsher@intel.com, tariqt@mellanox.com, saeedm@mellanox.com, jiri@mellanox.com, idosch@mellanox.com, jakub.kicinski@netronome.com, peppe.cavallaro@st.com, grygorii.strashko@ti.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, alexandre.torgue@st.com, joabreu@synopsys.com, linux-net-drivers@solarflare.com, ganeshgr@chelsio.com, ogerlitz@mellanox.com To: Jiri Pirko Return-path: Received: from mail.us.es ([193.147.175.20]:46022 "EHLO mail.us.es" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728724AbeKSW7X (ORCPT ); Mon, 19 Nov 2018 17:59:23 -0500 Received: from antivirus1-rhel7.int (unknown [192.168.2.11]) by mail.us.es (Postfix) with ESMTP id 9FE7FE1259 for ; Mon, 19 Nov 2018 13:35:51 +0100 (CET) Received: from antivirus1-rhel7.int (localhost [127.0.0.1]) by antivirus1-rhel7.int (Postfix) with ESMTP id 8DC0DDA7AF for ; Mon, 19 Nov 2018 13:35:51 +0100 (CET) Content-Disposition: inline In-Reply-To: <20181119115623.GA2223@nanopsycho.orion> Sender: netdev-owner@vger.kernel.org List-ID: On Mon, Nov 19, 2018 at 12:56:23PM +0100, Jiri Pirko wrote: > Mon, Nov 19, 2018 at 01:15:10AM CET, pablo@netfilter.org wrote: > >This new infrastructure defines the nic actions that you can perform > >from existing network drivers. This infrastructure allows us to avoid a > >direct dependency with the native software TC action representation. > > > >Signed-off-by: Pablo Neira Ayuso > >--- > >v2: no changes. > > > > include/net/flow_dissector.h | 70 ++++++++++++++++++++++++++++++++++++++++++++ > > net/core/flow_dissector.c | 18 ++++++++++++ > > 2 files changed, 88 insertions(+) > > > >diff --git a/include/net/flow_dissector.h b/include/net/flow_dissector.h > >index 965a82b8d881..925c208816f1 100644 > >--- a/include/net/flow_dissector.h > >+++ b/include/net/flow_dissector.h > >@@ -402,8 +402,78 @@ void flow_rule_match_enc_keyid(const struct flow_rule *rule, > > void flow_rule_match_enc_opts(const struct flow_rule *rule, > > struct flow_match_enc_opts *out); > > > >+enum flow_action_key_id { > > Why "key"? Why not just "flow_action_id" Sure, will rename this. > >+ FLOW_ACTION_KEY_ACCEPT = 0, > >+ FLOW_ACTION_KEY_DROP, > >+ FLOW_ACTION_KEY_TRAP, > >+ FLOW_ACTION_KEY_GOTO, > >+ FLOW_ACTION_KEY_REDIRECT, > >+ FLOW_ACTION_KEY_MIRRED, > >+ FLOW_ACTION_KEY_VLAN_PUSH, > >+ FLOW_ACTION_KEY_VLAN_POP, > >+ FLOW_ACTION_KEY_VLAN_MANGLE, > >+ FLOW_ACTION_KEY_TUNNEL_ENCAP, > >+ FLOW_ACTION_KEY_TUNNEL_DECAP, > >+ FLOW_ACTION_KEY_MANGLE, > >+ FLOW_ACTION_KEY_ADD, > >+ FLOW_ACTION_KEY_CSUM, > >+ FLOW_ACTION_KEY_MARK, I assume I should remove _KEY_ from this enum definitions too. > >+}; > >+ > >+/* This is mirroring enum pedit_header_type definition for easy mapping between > >+ * tc pedit action. Legacy TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK is mapped to > >+ * FLOW_ACT_MANGLE_UNSPEC, which is supported by no driver. > >+ */ > >+enum flow_act_mangle_base { > > Please be consistent in naming: "act" vs "action" OK. > >+ FLOW_ACT_MANGLE_UNSPEC = 0, > >+ FLOW_ACT_MANGLE_HDR_TYPE_ETH, > >+ FLOW_ACT_MANGLE_HDR_TYPE_IP4, > >+ FLOW_ACT_MANGLE_HDR_TYPE_IP6, > >+ FLOW_ACT_MANGLE_HDR_TYPE_TCP, > >+ FLOW_ACT_MANGLE_HDR_TYPE_UDP, > >+}; > >+ > >+struct flow_action_key { > > And here "struct flow_action" OK. > >+ enum flow_action_key_id id; > >+ union { > >+ u32 chain_index; /* FLOW_ACTION_KEY_GOTO */ > >+ struct net_device *dev; /* FLOW_ACTION_KEY_REDIRECT */ > >+ struct { /* FLOW_ACTION_KEY_VLAN */ > >+ u16 vid; > >+ __be16 proto; > >+ u8 prio; > >+ } vlan; > >+ struct { /* FLOW_ACTION_KEY_PACKET_EDIT */ > >+ enum flow_act_mangle_base htype; > >+ u32 offset; > >+ u32 mask; > >+ u32 val; > >+ } mangle; > >+ const struct ip_tunnel_info *tunnel; /* FLOW_ACTION_KEY_TUNNEL_ENCAP */ > >+ u32 csum_flags; /* FLOW_ACTION_KEY_CSUM */ > >+ u32 mark; /* FLOW_ACTION_KEY_MARK */ > >+ }; > >+}; > >+ > >+struct flow_action { > > And here "struct flow_actions" > > > >+ int num_keys; > > unsigned int; OK.