ixgbevf: Use cached link state instead of re-reading the value for ethtool
authorAlexander Duyck <alexander.h.duyck@linux.intel.com>
Wed, 19 Jun 2019 16:58:53 +0000 (09:58 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 28 Jun 2019 23:00:13 +0000 (16:00 -0700)
Change the ethtool link settings call to just read the cached state out of
the adapter structure instead of trying to recheck the value from the PF.
Doing this should prevent excessive reading of the mailbox.

Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Reviewed-by: "Guilherme G. Piccoli" <gpiccoli@canonical.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbevf/ethtool.c

index 5399787e07affa1b56be630d14ca9085755db3b5..54459b69c948481210cfd5795bd0912b100481a7 100644 (file)
@@ -85,22 +85,16 @@ static int ixgbevf_get_link_ksettings(struct net_device *netdev,
                                      struct ethtool_link_ksettings *cmd)
 {
        struct ixgbevf_adapter *adapter = netdev_priv(netdev);
-       struct ixgbe_hw *hw = &adapter->hw;
-       u32 link_speed = 0;
-       bool link_up;
 
        ethtool_link_ksettings_zero_link_mode(cmd, supported);
        ethtool_link_ksettings_add_link_mode(cmd, supported, 10000baseT_Full);
        cmd->base.autoneg = AUTONEG_DISABLE;
        cmd->base.port = -1;
 
-       hw->mac.get_link_status = 1;
-       hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
-
-       if (link_up) {
+       if (adapter->link_up) {
                __u32 speed = SPEED_10000;
 
-               switch (link_speed) {
+               switch (adapter->link_speed) {
                case IXGBE_LINK_SPEED_10GB_FULL:
                        speed = SPEED_10000;
                        break;