This series add basic support to offload flows to Chelsio T5/T6 NICs via rte_flow API. Chelsio NICs can support wildcard (maskfull) filters and exact (maskless) filters. Filters can be created in two regions available on Chelsio NICs. The smaller LE-TCAM region can support both maskfull and maskless filters; whereas, the larger HASH region can support only maskless filters. This series adds support for LE-TCAM region. Support for HASH region will be added in subsequent series.
This series adds support for: <match item>: IPv4, IPv6, TCP, and UDP. <action>: Drop, Queue, and Count. Support for more match items and actions will be added in subsequent series. Patch 1 queries firmware for available filtering resources in the underlying device and adds table to manage these resources. Patch 2 introduces rte_flow skeleton and implementes validate operation. Patch 3 exports control queue needed for communicating filter create/delete requests with firmware. Patch 4 adds firmware API to create filter work requests for creating/deleting filters and implements flow create operation. Patch 5 adds flow destroy operation. Patch 6 adds flow query operation to get filter hit and byte counts. Patch 7 adds flow flush operation to delete all filters under specified port. Thanks, Rahul Shagun Agrawal (7): net/cxgbe: query firmware for filter resources net/cxgbe: parse and validate flows net/cxgbe: add control queue to communicate filter requests net/cxgbe: implement flow create operation net/cxgbe: implement flow destroy operation net/cxgbe: implement flow query operation net/cxgbe: implement flow flush operation doc/guides/nics/cxgbe.rst | 1 + doc/guides/nics/features/cxgbe.ini | 1 + doc/guides/rel_notes/release_18_08.rst | 5 + drivers/net/cxgbe/Makefile | 2 + drivers/net/cxgbe/base/adapter.h | 63 +++ drivers/net/cxgbe/base/common.h | 17 + drivers/net/cxgbe/base/t4_hw.c | 234 +++++++++++ drivers/net/cxgbe/base/t4_hw.h | 4 + drivers/net/cxgbe/base/t4_msg.h | 22 + drivers/net/cxgbe/base/t4_regs.h | 16 + drivers/net/cxgbe/base/t4fw_interface.h | 221 ++++++++++ drivers/net/cxgbe/cxgbe.h | 3 + drivers/net/cxgbe/cxgbe_ethdev.c | 5 + drivers/net/cxgbe/cxgbe_filter.c | 609 +++++++++++++++++++++++++++ drivers/net/cxgbe/cxgbe_filter.h | 226 ++++++++++ drivers/net/cxgbe/cxgbe_flow.c | 702 ++++++++++++++++++++++++++++++++ drivers/net/cxgbe/cxgbe_flow.h | 42 ++ drivers/net/cxgbe/cxgbe_main.c | 184 +++++++++ drivers/net/cxgbe/cxgbe_ofld.h | 27 ++ drivers/net/cxgbe/sge.c | 197 ++++++++- 20 files changed, 2580 insertions(+), 1 deletion(-) 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_flow.c create mode 100644 drivers/net/cxgbe/cxgbe_flow.h create mode 100644 drivers/net/cxgbe/cxgbe_ofld.h -- 2.14.1