[v3] net/i40e: fix qinq flow pattern to allow non full mask
Checks
Commit Message
Issue reported by customer that only full mask was allowed on inner and
outer VLAN tag, thus not allowing mask to set VLAN ID filter only.
Removed check thatenforces inner vlan and outer vlan equal
I40E_TCI_MASK (full mask 0xffff).
Fixes: d37705068ee8 ("net/i40e: parse QinQ pattern")
Cc: bernard.iremonger@intel.com
Cc: stable@dpdk.org
Tested-by: Padraig Connolly <padraig.j.connolly@intel.com>
Signed-off-by: Padraig Connolly <padraig.j.connolly@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
drivers/net/i40e/i40e_flow.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
Comments
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Padraig Connolly
> Sent: Thursday, October 15, 2020 5:29 PM
> To: Xing, Beilei <beilei.xing@intel.com>
> Cc: dev@dpdk.org; Connolly, Padraig J <padraig.j.connolly@intel.com>;
> Iremonger, Bernard <bernard.iremonger@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH v3] net/i40e: fix qinq flow pattern to allow non full
> mask
>
> Issue reported by customer that only full mask was allowed on inner and outer
> VLAN tag, thus not allowing mask to set VLAN ID filter only.
> Removed check thatenforces inner vlan and outer vlan equal I40E_TCI_MASK
> (full mask 0xffff).
>
> Fixes: d37705068ee8 ("net/i40e: parse QinQ pattern")
>
> Cc: bernard.iremonger@intel.com
> Cc: stable@dpdk.org
>
> Tested-by: Padraig Connolly <padraig.j.connolly@intel.com>
> Signed-off-by: Padraig Connolly <padraig.j.connolly@intel.com>
> Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Applied to dpdk-next-net-intel.
Thanks
Qi
@@ -4649,14 +4649,9 @@ i40e_flow_parse_qinq_pattern(__rte_unused struct rte_eth_dev *dev,
}
/* Get filter specification */
- if ((o_vlan_mask != NULL) && (o_vlan_mask->tci ==
- rte_cpu_to_be_16(I40E_TCI_MASK)) &&
- (i_vlan_mask != NULL) &&
- (i_vlan_mask->tci == rte_cpu_to_be_16(I40E_TCI_MASK))) {
- filter->outer_vlan = rte_be_to_cpu_16(o_vlan_spec->tci)
- & I40E_TCI_MASK;
- filter->inner_vlan = rte_be_to_cpu_16(i_vlan_spec->tci)
- & I40E_TCI_MASK;
+ if (o_vlan_mask != NULL && i_vlan_mask != NULL) {
+ filter->outer_vlan = rte_be_to_cpu_16(o_vlan_spec->tci);
+ filter->inner_vlan = rte_be_to_cpu_16(i_vlan_spec->tci);
} else {
rte_flow_error_set(error, EINVAL,
RTE_FLOW_ERROR_TYPE_ITEM,