]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
i40evf: Clean-up flags for promisc mode to avoid high polling rate
authorAlexander Duyck <alexander.h.duyck@intel.com>
Tue, 14 Nov 2017 12:00:45 +0000 (07:00 -0500)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 10 Jan 2018 20:41:21 +0000 (12:41 -0800)
If you enabled and disabled promiscuous mode on a VF you could easily put
it into a state where it would start firing interrupts on all queues at a
rate of 50+ interrupts per second even though there was no traffic present.
The issue seems to have been a stray admin queue feature flag set that was
leaving us in a high polling rate for the adminq task.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c

index 2719a057b2112975b5c81cea2ba2bd530c9b2121..feb95b62a0772e8dabc7e88f34e04e3f0c589f4e 100644 (file)
@@ -739,8 +739,10 @@ void i40evf_set_promiscuous(struct i40evf_adapter *adapter, int flags)
        }
 
        if (!flags) {
-               adapter->flags &= ~I40EVF_FLAG_PROMISC_ON;
-               adapter->aq_required &= ~I40EVF_FLAG_AQ_RELEASE_PROMISC;
+               adapter->flags &= ~(I40EVF_FLAG_PROMISC_ON |
+                                   I40EVF_FLAG_ALLMULTI_ON);
+               adapter->aq_required &= ~(I40EVF_FLAG_AQ_RELEASE_PROMISC |
+                                         I40EVF_FLAG_AQ_RELEASE_ALLMULTI);
                dev_info(&adapter->pdev->dev, "Leaving promiscuous mode\n");
        }