igc: Fix NFC rule overwrite cases
authorAndre Guedes <andre.guedes@intel.com>
Fri, 24 Apr 2020 20:16:15 +0000 (13:16 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 23 May 2020 01:21:51 +0000 (18:21 -0700)
When the 'loc' argument is passed in ethtool, the input rule overwrites
any rule present in that location. In this situation we must disable the
old rule otherwise it is left enabled in hardware. This patch fixes
the issue by always calling igc_disable_nfc_rule() when deleting the
old rule, no matter the value of 'input' argument.

Signed-off-by: Andre Guedes <andre.guedes@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igc/igc_ethtool.c

index decd29fbfbe2017e46e2727d58a41a5198020727..f01a7ec0c1c27236cd5c6f552a0fe1f98b21761c 100644 (file)
@@ -1270,8 +1270,7 @@ static int igc_ethtool_update_nfc_rule(struct igc_adapter *adapter,
 
        /* if there is an old rule occupying our place remove it */
        if (rule && rule->location == location) {
-               if (!input)
-                       err = igc_disable_nfc_rule(adapter, rule);
+               err = igc_disable_nfc_rule(adapter, rule);
 
                hlist_del(&rule->nfc_node);
                kfree(rule);