i40e: Fix ethtool offline diagnostic with netqueues
authorGreg Rose <gregory.v.rose@intel.com>
Fri, 10 Jul 2015 23:36:01 +0000 (19:36 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 26 Aug 2015 21:53:48 +0000 (14:53 -0700)
Treat netqueues the same way we do virtual functions when someone wants to
run the ethtool offline diagnostic test.

Change-ID: Id48d2b933f1fd0db7be06305a93c6ebe3dc821f5
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_ethtool.c

index d6c7eb7..230d127 100644 (file)
@@ -1559,6 +1559,21 @@ static inline bool i40e_active_vfs(struct i40e_pf *pf)
        return false;
 }
 
+static inline bool i40e_active_vmdqs(struct i40e_pf *pf)
+{
+       struct i40e_vsi **vsi = pf->vsi;
+       int i;
+
+       for (i = 0; i < pf->num_alloc_vsi; i++) {
+               if (!vsi[i])
+                       continue;
+               if (vsi[i]->type == I40E_VSI_VMDQ2)
+                       return true;
+       }
+
+       return false;
+}
+
 static void i40e_diag_test(struct net_device *netdev,
                           struct ethtool_test *eth_test, u64 *data)
 {
@@ -1572,9 +1587,9 @@ static void i40e_diag_test(struct net_device *netdev,
 
                set_bit(__I40E_TESTING, &pf->state);
 
-               if (i40e_active_vfs(pf)) {
+               if (i40e_active_vfs(pf) || i40e_active_vmdqs(pf)) {
                        dev_warn(&pf->pdev->dev,
-                                "Please take active VFS offline and restart the adapter before running NIC diagnostics\n");
+                                "Please take active VFs and Netqueues offline and restart the adapter before running NIC diagnostics\n");
                        data[I40E_ETH_TEST_REG]         = 1;
                        data[I40E_ETH_TEST_EEPROM]      = 1;
                        data[I40E_ETH_TEST_INTR]        = 1;