|
@@ -152,7 +152,17 @@ static int ixgbe_get_settings(struct net_device *netdev,
|
|
ecmd->supported |= (SUPPORTED_1000baseT_Full |
|
|
ecmd->supported |= (SUPPORTED_1000baseT_Full |
|
|
SUPPORTED_Autoneg);
|
|
SUPPORTED_Autoneg);
|
|
|
|
|
|
|
|
+ switch (hw->mac.type) {
|
|
|
|
+ case ixgbe_mac_X540:
|
|
|
|
+ ecmd->supported |= SUPPORTED_100baseT_Full;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
ecmd->advertising = ADVERTISED_Autoneg;
|
|
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)
|
|
if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_10GB_FULL)
|
|
ecmd->advertising |= ADVERTISED_10000baseT_Full;
|
|
ecmd->advertising |= ADVERTISED_10000baseT_Full;
|
|
if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL)
|
|
if (hw->phy.autoneg_advertised & IXGBE_LINK_SPEED_1GB_FULL)
|
|
@@ -167,6 +177,15 @@ static int ixgbe_get_settings(struct net_device *netdev,
|
|
ecmd->advertising |= (ADVERTISED_10000baseT_Full |
|
|
ecmd->advertising |= (ADVERTISED_10000baseT_Full |
|
|
ADVERTISED_1000baseT_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->phy.media_type == ixgbe_media_type_copper) {
|
|
if (hw->phy.media_type == ixgbe_media_type_copper) {
|
|
ecmd->supported |= SUPPORTED_TP;
|
|
ecmd->supported |= SUPPORTED_TP;
|
|
ecmd->advertising |= ADVERTISED_TP;
|
|
ecmd->advertising |= ADVERTISED_TP;
|
|
@@ -271,8 +290,19 @@ static int ixgbe_get_settings(struct net_device *netdev,
|
|
|
|
|
|
hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
|
|
hw->mac.ops.check_link(hw, &link_speed, &link_up, false);
|
|
if (link_up) {
|
|
if (link_up) {
|
|
- ecmd->speed = (link_speed == IXGBE_LINK_SPEED_10GB_FULL) ?
|
|
|
|
- SPEED_10000 : SPEED_1000;
|
|
|
|
|
|
+ switch (link_speed) {
|
|
|
|
+ case IXGBE_LINK_SPEED_10GB_FULL:
|
|
|
|
+ ecmd->speed = SPEED_10000;
|
|
|
|
+ break;
|
|
|
|
+ case IXGBE_LINK_SPEED_1GB_FULL:
|
|
|
|
+ ecmd->speed = SPEED_1000;
|
|
|
|
+ break;
|
|
|
|
+ case IXGBE_LINK_SPEED_100_FULL:
|
|
|
|
+ ecmd->speed = SPEED_100;
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
ecmd->duplex = DUPLEX_FULL;
|
|
ecmd->duplex = DUPLEX_FULL;
|
|
} else {
|
|
} else {
|
|
ecmd->speed = -1;
|
|
ecmd->speed = -1;
|