Message ID | 20190716201343.29258-2-gpiccoli@canonical.com |
---|---|
State | New |
Headers | show |
Series | ixgbe{vf} - Physical Function gets IRQ when VF checks link state | expand |
On 16.07.19 22:13, Guilherme G. Piccoli wrote: > From: Alexander Duyck <alexander.h.duyck@linux.intel.com> > > BugLink: https://bugs.launchpad.net/bugs/1836760 > > 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> > (cherry picked from commit 1e1b0c658d9bb364b4a2a4b08a760d3e4c239bdc) > Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com> Acked-by: Stefan Bader <stefan.bader@canonical.com> > --- > drivers/net/ethernet/intel/ixgbevf/ethtool.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ixgbevf/ethtool.c b/drivers/net/ethernet/intel/ixgbevf/ethtool.c > index 5399787e07af..54459b69c948 100644 > --- a/drivers/net/ethernet/intel/ixgbevf/ethtool.c > +++ b/drivers/net/ethernet/intel/ixgbevf/ethtool.c > @@ -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; >
On 2019-07-16 17:13:42 , Guilherme G. Piccoli wrote: > From: Alexander Duyck <alexander.h.duyck@linux.intel.com> > > BugLink: https://bugs.launchpad.net/bugs/1836760 > > 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> > (cherry picked from commit 1e1b0c658d9bb364b4a2a4b08a760d3e4c239bdc) > Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com> > --- > drivers/net/ethernet/intel/ixgbevf/ethtool.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ixgbevf/ethtool.c b/drivers/net/ethernet/intel/ixgbevf/ethtool.c > index 5399787e07af..54459b69c948 100644 > --- a/drivers/net/ethernet/intel/ixgbevf/ethtool.c > +++ b/drivers/net/ethernet/intel/ixgbevf/ethtool.c > @@ -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; > -- > 2.22.0 > > > -- > kernel-team mailing list > kernel-team@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff --git a/drivers/net/ethernet/intel/ixgbevf/ethtool.c b/drivers/net/ethernet/intel/ixgbevf/ethtool.c index 5399787e07af..54459b69c948 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ethtool.c +++ b/drivers/net/ethernet/intel/ixgbevf/ethtool.c @@ -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;