bnxt_en: Disallow forced speed for 10GBaseT devices.
10GBaseT devices must autonegotiate to determine master/slave clocking. Disallow forced speed in ethtool .set_settings() for these devices. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bddf59046d
commit
03efbec031
@ -4611,6 +4611,7 @@ static int bnxt_update_link(struct bnxt *bp, bool chng_link_state)
|
||||
link_info->phy_ver[1] = resp->phy_min;
|
||||
link_info->phy_ver[2] = resp->phy_bld;
|
||||
link_info->media_type = resp->media_type;
|
||||
link_info->phy_type = resp->phy_type;
|
||||
link_info->transceiver = resp->xcvr_pkg_type;
|
||||
link_info->phy_addr = resp->eee_config_phy_addr &
|
||||
PORT_PHY_QCFG_RESP_PHY_ADDR_MASK;
|
||||
|
@ -759,6 +759,7 @@ struct bnxt_ntuple_filter {
|
||||
};
|
||||
|
||||
struct bnxt_link_info {
|
||||
u8 phy_type;
|
||||
u8 media_type;
|
||||
u8 transceiver;
|
||||
u8 phy_addr;
|
||||
|
@ -850,7 +850,15 @@ static int bnxt_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
|
||||
set_pause = true;
|
||||
} else {
|
||||
u16 fw_speed;
|
||||
u8 phy_type = link_info->phy_type;
|
||||
|
||||
if (phy_type == PORT_PHY_QCFG_RESP_PHY_TYPE_BASET ||
|
||||
phy_type == PORT_PHY_QCFG_RESP_PHY_TYPE_BASETE ||
|
||||
link_info->media_type == PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) {
|
||||
netdev_err(dev, "10GBase-T devices must autoneg\n");
|
||||
rc = -EINVAL;
|
||||
goto set_setting_exit;
|
||||
}
|
||||
/* TODO: currently don't support half duplex */
|
||||
if (cmd->duplex == DUPLEX_HALF) {
|
||||
netdev_err(dev, "HALF DUPLEX is not supported!\n");
|
||||
|
Loading…
Reference in New Issue
Block a user