`i40e_flow.c` contains the following code processing `RTE_FLOW_ITEM_TYPE_ETH` in the function `i40e_flow_parse_fdir_pattern()` [1]: if (eth_spec && eth_mask && next_type == RTE_FLOW_ITEM_TYPE_END) { ... if (next_type == RTE_FLOW_ITEM_TYPE_VLAN || ...) { ... } } Clearly, that condition in the inner "if" is always "false". Before commit ea0c22fd [2] outer "if" was: if (eth_spec && eth_mask && eth_mask->type) { ... Please clarify, is there really an error? [1]: http://git.dpdk.org/dpdk/tree/drivers/net/i40e/i40e_flow.c#n2448 [2]: http://git.dpdk.org/dpdk/commit/drivers/net/i40e?id=ea0c22fd8227a3ac3507984ff766d66355a3651e
Created attachment 192 [details] Proposed fix This patch reverts the old behavior. Otherwise, EtherType isn't set for any flow where ETH isn't a last item.
Close this ticket.