Message ID | 1519896664-16403-1-git-send-email-ganeshgr@chelsio.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next,v2] cxgb4vf: Forcefully link up virtual interfaces | expand |
From: Ganesh Goudar <ganeshgr@chelsio.com> Date: Thu, 1 Mar 2018 15:01:04 +0530 > From: Arjun Vynipadath <arjun@chelsio.com> > > The Virtual Interfaces are connected to an internal switch on the chip > which allows VIs attached to the same port to talk to each other even > when the port link is down. As a result, we generally want to always > report a VI's link as being "up". > > Based on the original work by: Casey Leedom <leedom@chelsio.com> > Signed-off-by: Arjun Vynipadath <arjun@chelsio.com> > Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com> > --- > V2: Doing force_link_up unconditionally Applied.
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c index b7e79e6..361de86 100644 --- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c +++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c @@ -155,8 +155,6 @@ void t4vf_os_link_changed(struct adapter *adapter, int pidx, int link_ok) const char *fc; const struct port_info *pi = netdev_priv(dev); - netif_carrier_on(dev); - switch (pi->link_cfg.speed) { case 100: s = "100Mbps"; @@ -202,7 +200,6 @@ void t4vf_os_link_changed(struct adapter *adapter, int pidx, int link_ok) netdev_info(dev, "link up, %s, full-duplex, %s PAUSE\n", s, fc); } else { - netif_carrier_off(dev); netdev_info(dev, "link down\n"); } } @@ -278,6 +275,17 @@ static int link_start(struct net_device *dev) */ if (ret == 0) ret = t4vf_enable_vi(pi->adapter, pi->viid, true, true); + + /* The Virtual Interfaces are connected to an internal switch on the + * chip which allows VIs attached to the same port to talk to each + * other even when the port link is down. As a result, we generally + * want to always report a VI's link as being "up", provided there are + * no errors in enabling vi. + */ + + if (ret == 0) + netif_carrier_on(dev); + return ret; }