DPDK usage discussions
 help / color / mirror / Atom feed
* [dpdk-users] FDir flex filters on XL710/i40e NICs with the new filter API
@ 2016-06-29  9:40 Paul Emmerich
  2016-07-18 16:36 ` Jeremias Blendin
  2016-08-19 16:39 ` Paul Emmerich
  0 siblings, 2 replies; 3+ messages in thread
From: Paul Emmerich @ 2016-06-29  9:40 UTC (permalink / raw)
  To: users

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-users] FDir flex filters on XL710/i40e NICs with the new filter API
  2016-06-29  9:40 [dpdk-users] FDir flex filters on XL710/i40e NICs with the new filter API Paul Emmerich
@ 2016-07-18 16:36 ` Jeremias Blendin
  2016-08-19 16:39 ` Paul Emmerich
  1 sibling, 0 replies; 3+ messages in thread
From: Jeremias Blendin @ 2016-07-18 16:36 UTC (permalink / raw)
  To: Paul Emmerich; +Cc: users

Hi,

I am really curious about this issue as well. Any hint is appreciated.

Thanks!

2016-06-29 11:40 GMT+02:00 Paul Emmerich <emmericp@net.in.tum.de>:
> 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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [dpdk-users] FDir flex filters on XL710/i40e NICs with the new filter API
  2016-06-29  9:40 [dpdk-users] FDir flex filters on XL710/i40e NICs with the new filter API Paul Emmerich
  2016-07-18 16:36 ` Jeremias Blendin
@ 2016-08-19 16:39 ` Paul Emmerich
  1 sibling, 0 replies; 3+ messages in thread
From: Paul Emmerich @ 2016-08-19 16:39 UTC (permalink / raw)
  To: users, dev

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-08-19 16:39 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-29  9:40 [dpdk-users] FDir flex filters on XL710/i40e NICs with the new filter API Paul Emmerich
2016-07-18 16:36 ` Jeremias Blendin
2016-08-19 16:39 ` Paul Emmerich

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).