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

Rahul Lakkireddy rahul.lakkireddy at chelsio.com
Mon Feb 22 11:39:51 CET 2016


Hi All,

On Wednesday, February 02/03/16, 2016 at 14:02:21 +0530, Rahul Lakkireddy wrote:
> 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
> 

Just a gentle reminder if there is any review comment on this series?

Thanks,
Rahul


More information about the dev mailing list