Skip to content

Commit 29c262f

Browse files
Michael Chandavem330
authored andcommitted
bnxt_en: Improve ethtool .get_settings().
If autoneg is off, we should always report the speed and duplex settings even if it is link down so the user knows the current settings. The unknown speed and duplex should only be used for autoneg when link is down. Signed-off-by: Michael Chan <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 9d9cee0 commit 29c262f

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -698,10 +698,23 @@ static int bnxt_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
698698
if (link_info->phy_link_status == BNXT_LINK_LINK)
699699
cmd->lp_advertising =
700700
bnxt_fw_to_ethtool_lp_adv(link_info);
701+
ethtool_speed = bnxt_fw_to_ethtool_speed(link_info->link_speed);
702+
if (!netif_carrier_ok(dev))
703+
cmd->duplex = DUPLEX_UNKNOWN;
704+
else if (link_info->duplex & BNXT_LINK_DUPLEX_FULL)
705+
cmd->duplex = DUPLEX_FULL;
706+
else
707+
cmd->duplex = DUPLEX_HALF;
701708
} else {
702709
cmd->autoneg = AUTONEG_DISABLE;
703710
cmd->advertising = 0;
711+
ethtool_speed =
712+
bnxt_fw_to_ethtool_speed(link_info->req_link_speed);
713+
cmd->duplex = DUPLEX_HALF;
714+
if (link_info->req_duplex == BNXT_LINK_DUPLEX_FULL)
715+
cmd->duplex = DUPLEX_FULL;
704716
}
717+
ethtool_cmd_speed_set(cmd, ethtool_speed);
705718

706719
cmd->port = PORT_NONE;
707720
if (link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) {
@@ -719,14 +732,6 @@ static int bnxt_get_settings(struct net_device *dev, struct ethtool_cmd *cmd)
719732
cmd->port = PORT_FIBRE;
720733
}
721734

722-
if (link_info->phy_link_status == BNXT_LINK_LINK) {
723-
if (link_info->duplex & BNXT_LINK_DUPLEX_FULL)
724-
cmd->duplex = DUPLEX_FULL;
725-
} else {
726-
cmd->duplex = DUPLEX_UNKNOWN;
727-
}
728-
ethtool_speed = bnxt_fw_to_ethtool_speed(link_info->link_speed);
729-
ethtool_cmd_speed_set(cmd, ethtool_speed);
730735
if (link_info->transceiver ==
731736
PORT_PHY_QCFG_RESP_XCVR_PKG_TYPE_XCVR_INTERNAL)
732737
cmd->transceiver = XCVR_INTERNAL;

0 commit comments

Comments
 (0)