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 D16E45A06 for ; Wed, 3 Feb 2016 09:32:38 +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 u138WZ4i024887; Wed, 3 Feb 2016 00:32:36 -0800 From: Rahul Lakkireddy To: dev@dpdk.org Date: Wed, 3 Feb 2016 14:02:21 +0530 Message-Id: X-Mailer: git-send-email 2.5.3 Cc: Kumar Sanghvi , Nirranjan Kirubaharan Subject: [dpdk-dev] [PATCH 00/10] cxgbe: Add flow director support 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, 03 Feb 2016 08:32:39 -0000 This series of patches extend the flow director filter and 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 a new flow RTE_ETH_FLOW_RAW_PKT to allow specifying a generic flow. - Adds an additional generic array to rte_eth_fdir_flow to allow specifying generic flow input. - Adds an additional mask for the flow input to allow range of values to be matched in the flow input. - Adds a new behavior 'switch'. - Adds a generic array to hold 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. RFC series of patches and discussion involving these enhancements to the flow director are available at [1]. Patch 2 adds command line example app to test cxgbe flow director. Also add documentation for the example app. Patch 3 updates the cxgbe base to add support for packet filtering. Patch 4 adds control txq for communicating filter info to the firmware. Patches 5-7 add compressed local ip (CLIP) table, layer 2 table (L2T), and source mac table (SMT) definitions required for holding info for matching and executing various operations on matched filters. Patch 8 adds the LE-TCAM (maskfull) filter support. Patch 9 adds the HASH (maskless) filter support. Patch 10 adds and implements the flow director filter operations. Also add the documentation. [1] http://comments.gmane.org/gmane.comp.networking.dpdk.devel/29986 Rahul Lakkireddy (10): ethdev: add a generic flow and new behavior switch to fdir examples/test-cxgbe-filters: add example to test cxgbe fdir support cxgbe: add skeleton to add support for T5 hardware filtering cxgbe: add control txq for communicating filtering info cxgbe: add compressed local IP table for matching IPv6 addresses cxgbe: add layer 2 table for switch action filter cxgbe: add source mac table for switch action filter cxgbe: add LE-TCAM filtering support cxgbe: add HASH filtering support cxgbe: add flow director support and update documentation MAINTAINERS | 2 + doc/guides/nics/cxgbe.rst | 166 ++ doc/guides/rel_notes/release_2_3.rst | 10 + doc/guides/sample_app_ug/index.rst | 1 + doc/guides/sample_app_ug/test_cxgbe_filters.rst | 694 +++++++++ drivers/net/cxgbe/Makefile | 6 + drivers/net/cxgbe/base/adapter.h | 110 ++ drivers/net/cxgbe/base/common.h | 11 + drivers/net/cxgbe/base/t4_hw.c | 28 + drivers/net/cxgbe/base/t4_msg.h | 324 ++++ drivers/net/cxgbe/base/t4_regs.h | 9 + drivers/net/cxgbe/base/t4_regs_values.h | 25 + drivers/net/cxgbe/base/t4_tcb.h | 95 ++ drivers/net/cxgbe/base/t4fw_interface.h | 272 ++++ drivers/net/cxgbe/clip_tbl.c | 220 +++ drivers/net/cxgbe/clip_tbl.h | 59 + drivers/net/cxgbe/cxgbe.h | 4 + drivers/net/cxgbe/cxgbe_compat.h | 12 + drivers/net/cxgbe/cxgbe_ethdev.c | 21 + drivers/net/cxgbe/cxgbe_fdir.c | 715 +++++++++ drivers/net/cxgbe/cxgbe_fdir.h | 108 ++ drivers/net/cxgbe/cxgbe_filter.c | 1614 ++++++++++++++++++++ drivers/net/cxgbe/cxgbe_filter.h | 260 ++++ drivers/net/cxgbe/cxgbe_main.c | 395 ++++- drivers/net/cxgbe/cxgbe_ofld.h | 126 ++ drivers/net/cxgbe/l2t.c | 261 ++++ drivers/net/cxgbe/l2t.h | 87 ++ drivers/net/cxgbe/sge.c | 202 ++- drivers/net/cxgbe/smt.c | 275 ++++ drivers/net/cxgbe/smt.h | 76 + examples/Makefile | 1 + examples/test-cxgbe-filters/Makefile | 63 + examples/test-cxgbe-filters/commands.c | 429 ++++++ examples/test-cxgbe-filters/commands.h | 40 + examples/test-cxgbe-filters/config.c | 79 + examples/test-cxgbe-filters/cxgbe/cxgbe_commands.c | 554 +++++++ examples/test-cxgbe-filters/cxgbe/cxgbe_fdir.h | 79 + examples/test-cxgbe-filters/init.c | 201 +++ examples/test-cxgbe-filters/main.c | 79 + examples/test-cxgbe-filters/main.h | 77 + examples/test-cxgbe-filters/runtime.c | 74 + lib/librte_ether/rte_eth_ctrl.h | 15 +- 42 files changed, 7874 insertions(+), 5 deletions(-) create mode 100644 doc/guides/sample_app_ug/test_cxgbe_filters.rst create mode 100644 drivers/net/cxgbe/base/t4_tcb.h create mode 100644 drivers/net/cxgbe/clip_tbl.c create mode 100644 drivers/net/cxgbe/clip_tbl.h create mode 100644 drivers/net/cxgbe/cxgbe_fdir.c create mode 100644 drivers/net/cxgbe/cxgbe_fdir.h create mode 100644 drivers/net/cxgbe/cxgbe_filter.c create mode 100644 drivers/net/cxgbe/cxgbe_filter.h create mode 100644 drivers/net/cxgbe/cxgbe_ofld.h create mode 100644 drivers/net/cxgbe/l2t.c create mode 100644 drivers/net/cxgbe/l2t.h create mode 100644 drivers/net/cxgbe/smt.c create mode 100644 drivers/net/cxgbe/smt.h create mode 100644 examples/test-cxgbe-filters/Makefile create mode 100644 examples/test-cxgbe-filters/commands.c create mode 100644 examples/test-cxgbe-filters/commands.h create mode 100644 examples/test-cxgbe-filters/config.c create mode 100644 examples/test-cxgbe-filters/cxgbe/cxgbe_commands.c create mode 100644 examples/test-cxgbe-filters/cxgbe/cxgbe_fdir.h create mode 100644 examples/test-cxgbe-filters/init.c create mode 100644 examples/test-cxgbe-filters/main.c create mode 100644 examples/test-cxgbe-filters/main.h create mode 100644 examples/test-cxgbe-filters/runtime.c -- 2.5.3