mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-16 05:50:19 +00:00
ixgbe: fix setting and reporting of advertised speeds
Add the ability to set 100/F on x540. Fix reporting of advertised modes by adding check for phy.autoneg_advertised Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com> Tested-by: Stephen Ko <stephen.s.ko@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
da74cd4a2f
commit
2b642ca5e9
@ -161,29 +161,25 @@ static int ixgbe_get_settings(struct net_device *netdev,
|
||||
}
|
||||
|
||||
ecmd->advertising = ADVERTISED_Autoneg;
|
||||
if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_100_FULL)
|
||||
ecmd->advertising |= ADVERTISED_100baseT_Full;
|
||||
if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_10GB_FULL)
|
||||
ecmd->advertising |= ADVERTISED_10000baseT_Full;
|
||||
if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL)
|
||||
ecmd->advertising |= ADVERTISED_1000baseT_Full;
|
||||
/*
|
||||
* It's possible that phy.autoneg_advertised may not be
|
||||
* set yet. If so display what the default would be -
|
||||
* both 1G and 10G supported.
|
||||
*/
|
||||
if (!(ecmd->advertising & (ADVERTISED_1000baseT_Full |
|
||||
ADVERTISED_10000baseT_Full)))
|
||||
if (hw->phy.autoneg_advertised) {
|
||||
if (hw->phy.autoneg_advertised &
|
||||
IXGBE_LINK_SPEED_100_FULL)
|
||||
ecmd->advertising |= ADVERTISED_100baseT_Full;
|
||||
if (hw->phy.autoneg_advertised &
|
||||
IXGBE_LINK_SPEED_10GB_FULL)
|
||||
ecmd->advertising |= ADVERTISED_10000baseT_Full;
|
||||
if (hw->phy.autoneg_advertised &
|
||||
IXGBE_LINK_SPEED_1GB_FULL)
|
||||
ecmd->advertising |= ADVERTISED_1000baseT_Full;
|
||||
} else {
|
||||
/*
|
||||
* Default advertised modes in case
|
||||
* phy.autoneg_advertised isn't set.
|
||||
*/
|
||||
ecmd->advertising |= (ADVERTISED_10000baseT_Full |
|
||||
ADVERTISED_1000baseT_Full);
|
||||
|
||||
switch (hw->mac.type) {
|
||||
case ixgbe_mac_X540:
|
||||
if (!(ecmd->advertising & ADVERTISED_100baseT_Full))
|
||||
ecmd->advertising |= (ADVERTISED_100baseT_Full);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
if (hw->mac.type == ixgbe_mac_X540)
|
||||
ecmd->advertising |= ADVERTISED_100baseT_Full;
|
||||
}
|
||||
|
||||
if (hw->phy.media_type == ixgbe_media_type_copper) {
|
||||
@ -336,6 +332,9 @@ static int ixgbe_set_settings(struct net_device *netdev,
|
||||
if (ecmd->advertising & ADVERTISED_1000baseT_Full)
|
||||
advertised |= IXGBE_LINK_SPEED_1GB_FULL;
|
||||
|
||||
if (ecmd->advertising & ADVERTISED_100baseT_Full)
|
||||
advertised |= IXGBE_LINK_SPEED_100_FULL;
|
||||
|
||||
if (old == advertised)
|
||||
return err;
|
||||
/* this sets the link speed and restarts auto-neg */
|
||||
|
Loading…
Reference in New Issue
Block a user