From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from stargate3.asicdesigners.com (stargate.chelsio.com [12.32.117.8]) by dpdk.org (Postfix) with ESMTP id 2692A5A6B for ; Mon, 11 Jan 2016 14:51:20 +0100 (CET) Received: from localhost (scalar.blr.asicdesigners.com [10.193.185.94]) by stargate3.asicdesigners.com (8.13.8/8.13.8) with ESMTP id u0BDpGbL019355; Mon, 11 Jan 2016 05:51:16 -0800 Date: Mon, 11 Jan 2016 19:20:53 +0530 From: Rahul Lakkireddy To: dev@dpdk.org Message-ID: <20160111135051.GA5674@scalar.blr.asicdesigners.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Cc: Kumar Sanghvi , Felix Marti , Nirranjan Kirubaharan Subject: Re: [dpdk-dev] [RFC v2 0/2] ethdev: Enhancements to flow director filter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jan 2016 13:51:20 -0000 Hi All, On Wednesday, December 12/23/15, 2015 at 18:11:19 +0530, Rahul Lakkireddy wrote: > This RFC series of patches attempt to extend the flow director filter to > add support for Chelsio T5 hardware filtering capabilities. > > Chelsio T5 supports carrying out filtering in hardware which supports 3 > actions to carry out on a packet which hit a filter viz. > > 1. Action Pass - Packets hitting a filter rule can be directed to a > particular RXQ. > > 2. Action Drop - Packets hitting a filter rule are dropped in h/w. > > 3. Action Switch - Packets hitting a filter rule can be switched in h/w > from one port to another, without involvement of host. Also, the > action Switch also supports rewrite of src-mac/dst-mac headers as > well as rewrite of vlan headers. It also supports rewrite of IP > headers and thereby, supports NAT (Network Address Translation) > in h/w. > > Also, each filter rule can optionally support specifying a mask value > i.e. it's possible to create a filter rule for an entire subnet of IP > addresses or a range of tcp/udp ports, etc. > > Patch 1 does the following: > - Adds an additional flow rte_eth_pkt_filter_flow which encapsulates > ingress ports, l2 payload, vlan and ntuples. > - Adds an additional mask for the flow to allow range of values to be > matched. > - Adds an ability to set both filters with masks (Maskfull) and > without masks (Maskless). Also allow prioritizing one of these > filter types over the other when a packet matches several types. > - Adds a new behavior 'switch'. > - Adds behavior arguments that can be passed when a particular behavior > is taken. For ex: in case of action 'switch', pass additional 4-tuple > to allow rewriting src/dst ip and port addresses to support NAT'ing. > > Patch 2 shows testpmd command line example to support packet filter > flow. > > The patch series has been compile tested on all x86 gcc targets and the > current fdir filter supported drivers seem to return appropriate error > codes when this new flow type and the new action are not supported and > hence are not affected. > > Posting this series mainly for discussion on API change. Once this is > agreeable then, I will post the cxgbe PMD changes to use the new API. > > --- > v2: > 1. Added ttl to rte_eth_ipv4_flow and tc, flow_label, next_header, > and hop_limit to rte_eth_ipv6_flow. > > 2. Added new field type to rte_eth_pkt_filter_flow to differentiate > between maskfull and maskless filter types. > > 3. Added new field prio to rte_eth_pkt_filter_flow to allow setting > priority over maskfull or maskless when packet matches multiple > filter types. > > 4. Added new behavior sub op RTE_FDIR_BEHAVIOR_SUB_OP_SWAP to allow > swapping fields in matched flows. For ex, useful when swapping mac > addresses in hardware before switching. > > 5. Updated the testpmd example to reflect the above new changes. > > 6. Dropped Patch 3 since the ABI announcement has already been merged. > > Rahul Lakkireddy (2): > ethdev: add packet filter flow and new behavior switch to fdir > testpmd: add an example to show packet filter flow > > app/test-pmd/cmdline.c | 528 +++++++++++++++++++++++++++++++++++++++- > lib/librte_ether/rte_eth_ctrl.h | 127 +++++++++- > 2 files changed, 646 insertions(+), 9 deletions(-) > > -- > 2.5.3 > Any comments on this RFC series? If the overall approach is fine then, I'll re-submit it as a PATCH series along with the CXGBE PMD driver changes. Thanks, Rahul