[dpdk-dev] [PATCH 00/10] cxgbe: Add flow director support

Rahul Lakkireddy rahul.lakkireddy at chelsio.com
Wed Feb 3 09:32:21 CET 2016


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



More information about the dev mailing list