i40e: Disable hw-tc-offload feature on driver load
authorMateusz Palczewski <mateusz.palczewski@intel.com>
Thu, 16 Dec 2021 12:31:13 +0000 (13:31 +0100)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Thu, 3 Feb 2022 21:08:07 +0000 (13:08 -0800)
After loading driver hw-tc-offload is enabled by default.
Change the behaviour of driver to disable hw-tc-offload by default as
this is the expected state. Additionally since this impacts ntuple
feature state change the way of checking NETIF_F_HW_TC flag.

Signed-off-by: Norbert Zulinski <norbertx.zulinski@intel.com>
Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
Tested-by: Dave Switzer <david.switzer@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index c883476..748806c 100644 (file)
@@ -12707,7 +12707,8 @@ static int i40e_set_features(struct net_device *netdev,
        else
                i40e_vlan_stripping_disable(vsi);
 
-       if (!(features & NETIF_F_HW_TC) && pf->num_cloud_filters) {
+       if (!(features & NETIF_F_HW_TC) &&
+           (netdev->features & NETIF_F_HW_TC) && pf->num_cloud_filters) {
                dev_err(&pf->pdev->dev,
                        "Offloaded tc filters active, can't turn hw_tc_offload off");
                return -EINVAL;
@@ -13459,6 +13460,8 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
        netdev->features |= hw_features | NETIF_F_HW_VLAN_CTAG_FILTER;
        netdev->hw_enc_features |= NETIF_F_TSO_MANGLEID;
 
+       netdev->features &= ~NETIF_F_HW_TC;
+
        if (vsi->type == I40E_VSI_MAIN) {
                SET_NETDEV_DEV(netdev, &pf->pdev->dev);
                ether_addr_copy(mac_addr, hw->mac.perm_addr);