DPDK usage discussions
 help / color / mirror / Atom feed
From: Paul Emmerich <emmericp@net.in.tum.de>
To: users@dpdk.org, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-users] FDir flex filters on XL710/i40e NICs with the new filter API
Date: Fri, 19 Aug 2016 18:39:14 +0200	[thread overview]
Message-ID: <706195b6-0635-43fc-ce49-41dfcc06dbf8@net.in.tum.de> (raw)
In-Reply-To: <57739782.60708@net.in.tum.de>

Hi,

I've an update and work-around for this issue that we encountered in 
DPDK >= 2.2. (See original email below)
Cross-posting to dev since this seems to be a bug in the i40e driver.

We are trying to set a filter matching on the following conditions while 
ignoring all other header fields.

1. Packet is a UDP packet
2. Bytes 42 and 43 of the payload are a specific value

The first condition is optional, a filter that just matches on the 
payload bytes of arbitrary packets is fine as well.

So we set all fdir masks to ignore everything except for the payload 
bytes and then add a filter that just specifies the payload bytes.


We got the following results with ixgbe:

Old filter API, DPDK  < 2.2:
everything works fine

New filter API, DPDK >= 2.2:
The "packet is a UDP packet" condition stops working if we do not also 
filter for the ports, i.e., flow_type = RTE_ETH_FLOW_NONFRAG_IPV4_UDP 
does not work as expected.

flow_type = RTE_ETH_FLOW_IPV4 does work.
We are fine with this as we assume that it improves compatibility.



The real problem is the i40e driver.

Setting flow_type to anything other RTE_ETH_FLOW_NONFRAG_IPV4_UDP 
doesn't match any packets (the packets we are trying to match are 
actually UDP packets). I guess that's okay, but inconsistent with the 
ixgbe driver that does accept RTE_ETH_FLOW_IPV4 as well.

The actual problem is that we have to explicitly specify IP addresses 
and ports in the filter, *despite setting masks to ignore them*.


Is this a bug? Or are we using something wrong? (The filter API doesn't 
seem to be very well documented)


  Paul


Paul Emmerich:
> Hi,
>
> we are trying to use flex filters to match on payload bytes and our code
> stopped working with the new Filter API after upgrading to DPDK 2.2 or
> later (currently using 16.04).
>
> We use these filters to match on the bytes 42 and 43 of the payload, the
> filter worked with DPDK 2.0 with both XL710 and 82599 NICs with the old
> fdir filter API.
>
> We then upgraded to DPDK 2.2 and later to DPDK 16.04 and migrated to the
> new filter API. The filter still works on 82599 NICs but not on XL710 NICs.
>
> Any ideas what we might be doing wrong here?
>
> The initialization code can be found here:
> https://github.com/emmericp/MoonGen/blob/master/src/device.c#L115-L157
>
> Adding the filter is done here:
> https://github.com/emmericp/MoonGen/blob/master/lua/include/filter.lua#L356-L385
>
>
> rte_eth_dev_filter_ctrl() does not return an error and the same code
> works for the 82599 NIC. Yet, the filter matches no packets on XL710 NICs.
>
> Is there a minimal example for the flex filters somewhere that could
> help me track down this?
>
> Any help would be appreciated.
>
> Thanks!
>
>
>  Paul

      parent reply	other threads:[~2016-08-19 16:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-29  9:40 Paul Emmerich
2016-07-18 16:36 ` Jeremias Blendin
2016-08-19 16:39 ` Paul Emmerich [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=706195b6-0635-43fc-ce49-41dfcc06dbf8@net.in.tum.de \
    --to=emmericp@net.in.tum.de \
    --cc=dev@dpdk.org \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).