Message ID | 1531484815-27685-1-git-send-email-ganeshgr@chelsio.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] cxgb4: do not return DUPLEX_UNKNOWN when link is down | expand |
From: Ganesh Goudar <ganeshgr@chelsio.com> Date: Fri, 13 Jul 2018 17:56:55 +0530 > We were returning DUPLEX_UNKNOWN in get_link_ksettings() when > the link was down. Unfortunately, this causes a problem when > "ethtool -s autoneg on" is issued for a link which is down because > the ethtool code first reads the settings and then reapplies them > with only the changes provided on the command line. Which results > in us diving into set_link_ksettings() with DUPLEX_UNKNOWN which is > not DUPLEX_FULL, so set_link_ksettings() throws an -EINVAL error. > do not return DUPLEX_UNKNOWN to fix the issue. > > Signed-off-by: Casey Leedom <leedom@chelsio.com> > Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com> Applied.
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c index a14a290..d07230c 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c @@ -628,13 +628,10 @@ static int get_link_ksettings(struct net_device *dev, fw_caps_to_lmm(pi->port_type, pi->link_cfg.lpacaps, link_ksettings->link_modes.lp_advertising); - if (netif_carrier_ok(dev)) { - base->speed = pi->link_cfg.speed; - base->duplex = DUPLEX_FULL; - } else { - base->speed = SPEED_UNKNOWN; - base->duplex = DUPLEX_UNKNOWN; - } + base->speed = (netif_carrier_ok(dev) + ? pi->link_cfg.speed + : SPEED_UNKNOWN); + base->duplex = DUPLEX_FULL; if (pi->link_cfg.fc & PAUSE_RX) { if (pi->link_cfg.fc & PAUSE_TX) {