|
@@ -6751,32 +6751,15 @@ bnx2_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
|
|
if (cmd->autoneg == AUTONEG_ENABLE) {
|
|
|
autoneg |= AUTONEG_SPEED;
|
|
|
|
|
|
- cmd->advertising &= ETHTOOL_ALL_COPPER_SPEED;
|
|
|
-
|
|
|
- /* allow advertising 1 speed */
|
|
|
- if ((cmd->advertising == ADVERTISED_10baseT_Half) ||
|
|
|
- (cmd->advertising == ADVERTISED_10baseT_Full) ||
|
|
|
- (cmd->advertising == ADVERTISED_100baseT_Half) ||
|
|
|
- (cmd->advertising == ADVERTISED_100baseT_Full)) {
|
|
|
-
|
|
|
- if (cmd->port == PORT_FIBRE)
|
|
|
- goto err_out_unlock;
|
|
|
-
|
|
|
- advertising = cmd->advertising;
|
|
|
-
|
|
|
- } else if (cmd->advertising == ADVERTISED_2500baseX_Full) {
|
|
|
- if (!(bp->phy_flags & BNX2_PHY_FLAG_2_5G_CAPABLE) ||
|
|
|
- (cmd->port == PORT_TP))
|
|
|
- goto err_out_unlock;
|
|
|
- } else if (cmd->advertising == ADVERTISED_1000baseT_Full)
|
|
|
- advertising = cmd->advertising;
|
|
|
- else if (cmd->advertising == ADVERTISED_1000baseT_Half)
|
|
|
- goto err_out_unlock;
|
|
|
- else {
|
|
|
- if (cmd->port == PORT_FIBRE)
|
|
|
- advertising = ETHTOOL_ALL_FIBRE_SPEED;
|
|
|
- else
|
|
|
+ advertising = cmd->advertising;
|
|
|
+ if (cmd->port == PORT_TP) {
|
|
|
+ advertising &= ETHTOOL_ALL_COPPER_SPEED;
|
|
|
+ if (!advertising)
|
|
|
advertising = ETHTOOL_ALL_COPPER_SPEED;
|
|
|
+ } else {
|
|
|
+ advertising &= ETHTOOL_ALL_FIBRE_SPEED;
|
|
|
+ if (!advertising)
|
|
|
+ advertising = ETHTOOL_ALL_FIBRE_SPEED;
|
|
|
}
|
|
|
advertising |= ADVERTISED_Autoneg;
|
|
|
}
|