net/enic: fix filter type used for flow API
authorHyong Youb Kim <hyonkim@cisco.com>
Tue, 2 Feb 2021 00:24:23 +0000 (16:24 -0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 2 Feb 2021 23:48:11 +0000 (00:48 +0100)
The filter type (struct filter_v2.type) should always be set to
FILTER_DPDK_1, when advanced filtering is enabled in firmware.
Otherwise, for some old firmware versions, the driver sets
it to FILTER_USNIC_IP, and attempts to install filters fail. This
behavior matches that of the now-removed flow director implementation
(enic_clsf.c).

Fixes: 26faa126d87e ("net/enic: flow API for NICs with advanced filters disabled")
Cc: stable@dpdk.org
Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
drivers/net/enic/enic_flow.c

index 97ee750..7eb06f8 100644 (file)
@@ -1598,6 +1598,8 @@ enic_flow_parse(struct rte_eth_dev *dev,
                return -rte_errno;
        }
        enic_filter->type = enic->flow_filter_mode;
+       if (enic->adv_filters)
+               enic_filter->type = FILTER_DPDK_1;
        ret = enic_copy_filter(pattern, enic_filter_cap, enic,
                                       enic_filter, error);
        return ret;