Skip to content

Commit

Permalink
bnx2: Allow user-specified multiple advertisement speed values.
Browse files Browse the repository at this point in the history
Remove unnecessary code that works around older versions of ethtool
that can pass down invalid advertisement speed values.  This old
code prevents the user from specifying multiple advertisement values.
The new code uses simple masking to mask out invalid advertisment bits.

Reported-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Michael Chan authored and David S. Miller committed Feb 16, 2010
1 parent 5726026 commit beb499a
Showing 1 changed file with 8 additions and 25 deletions.
33 changes: 8 additions & 25 deletions drivers/net/bnx2.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down

0 comments on commit beb499a

Please sign in to comment.