Thread (27 messages) 27 messages, 5 authors, 2016-07-20

Re: [PATCH 00/10] cxgbe: Add flow director support

From: Rahul Lakkireddy <hidden>
Date: 2016-02-22 10:40:09

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help