Bug 942

Summary: i40e: condition in `i40e_flow_parse_fdir_pattern()` is always false
Product: DPDK Reporter: Stepan Repin (Stepan.Repin)
Component: ethdevAssignee: dev
Status: RESOLVED FIXED    
Severity: normal CC: kaiwenx.deng, Stepan.Repin
Priority: Normal    
Version: 21.11   
Target Milestone: ---   
Hardware: All   
OS: All   
Attachments: Proposed fix

Description Stepan Repin 2022-03-01 07:59:18 CET
`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
Comment 1 Stepan Repin 2022-03-02 09:47:42 CET
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.
Comment 2 dengkaiwen 2024-04-02 04:26:29 CEST
Close this ticket.