[dpdk-dev] [RFC v2 0/2] ethdev: Enhancements to flow director filter

Rahul Lakkireddy rahul.lakkireddy at chelsio.com
Mon Jan 11 14:50:53 CET 2016

Hi All,

On Wednesday, December 12/23/15, 2015 at 18:11:19 +0530, Rahul Lakkireddy wrote:
> This RFC series of patches attempt to extend the flow director filter to
> 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 an additional flow rte_eth_pkt_filter_flow which encapsulates
>   ingress ports, l2 payload, vlan and ntuples.
> - Adds an additional mask for the flow to allow range of values to be
>   matched.
> - Adds an ability to set both filters with masks (Maskfull) and
>   without masks (Maskless).  Also allow prioritizing one of these
>   filter types over the other when a packet matches several types.
> - Adds a new behavior 'switch'.
> - Adds 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.
> Patch 2 shows testpmd command line example to support packet filter
> flow.
> The patch series has been compile tested on all x86 gcc targets and the
> current fdir filter supported drivers seem to return appropriate error
> codes when this new flow type and the new action are not supported and
> hence are not affected.
> Posting this series mainly for discussion on API change. Once this is
> agreeable then, I will post the cxgbe PMD changes to use the new API.
> ---
> v2:
> 1. Added ttl to rte_eth_ipv4_flow and tc, flow_label, next_header,
>    and hop_limit to rte_eth_ipv6_flow.
> 2. Added new field type to rte_eth_pkt_filter_flow to differentiate
>    between maskfull and maskless filter types.
> 3. Added new field prio to rte_eth_pkt_filter_flow to allow setting
>    priority over maskfull or maskless when packet matches multiple
>    filter types.
> 4. Added new behavior sub op RTE_FDIR_BEHAVIOR_SUB_OP_SWAP to allow
>    swapping fields in matched flows. For ex, useful when swapping mac
>    addresses in hardware before switching.
> 5. Updated the testpmd example to reflect the above new changes.
> 6. Dropped Patch 3 since the ABI announcement has already been merged.
> Rahul Lakkireddy (2):
>   ethdev: add packet filter flow and new behavior switch to fdir
>   testpmd: add an example to show packet filter flow
>  app/test-pmd/cmdline.c          | 528 +++++++++++++++++++++++++++++++++++++++-
>  lib/librte_ether/rte_eth_ctrl.h | 127 +++++++++-
>  2 files changed, 646 insertions(+), 9 deletions(-)
> -- 
> 2.5.3

Any comments on this RFC series?  If the overall approach is fine then,
I'll re-submit it as a PATCH series along with the CXGBE PMD driver


More information about the dev mailing list