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 593F7594B for ; Wed, 23 Dec 2015 13:41:52 +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 tBNCfmFh008856; Wed, 23 Dec 2015 04:41:49 -0800 From: Rahul Lakkireddy To: dev@dpdk.org Date: Wed, 23 Dec 2015 18:11:19 +0530 Message-Id: X-Mailer: git-send-email 2.5.3 In-Reply-To: References: Cc: Felix Marti , Kumar Sanghvi , Nirranjan Kirubaharan Subject: [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: Wed, 23 Dec 2015 12:41:52 -0000 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