usb: gadget: Fix g_ether interface link status
A "usb0" interface that has never been connected to a host has an unknown operstate, and therefore the IFF_RUNNING flag is (incorrectly) asserted when queried by ifconfig, ifplugd, etc. This is a result of calling netif_carrier_off() too early in the probe function; it should be called after register_netdev(). Similar problems have been fixed in many other drivers, e.g.:e826eafa6
(bonding: Call netif_carrier_off after register_netdevice)0d672e9f8
(drivers/net: Call netif_carrier_off at the end of the probe)6a3c869a6
(cxgb4: fix reported state of interfaces without link) Fix is to move netif_carrier_off() to the end of the function. Cc: stable@vger.kernel.org Signed-off-by: Kevin Cernekee <cernekee@gmail.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
a188b6897e
commit
31bde1ceaa
|
@ -798,12 +798,6 @@ int gether_setup_name(struct usb_gadget *g, u8 ethaddr[ETH_ALEN],
|
||||||
|
|
||||||
SET_ETHTOOL_OPS(net, &ops);
|
SET_ETHTOOL_OPS(net, &ops);
|
||||||
|
|
||||||
/* two kinds of host-initiated state changes:
|
|
||||||
* - iff DATA transfer is active, carrier is "on"
|
|
||||||
* - tx queueing enabled if open *and* carrier is "on"
|
|
||||||
*/
|
|
||||||
netif_carrier_off(net);
|
|
||||||
|
|
||||||
dev->gadget = g;
|
dev->gadget = g;
|
||||||
SET_NETDEV_DEV(net, &g->dev);
|
SET_NETDEV_DEV(net, &g->dev);
|
||||||
SET_NETDEV_DEVTYPE(net, &gadget_type);
|
SET_NETDEV_DEVTYPE(net, &gadget_type);
|
||||||
|
@ -817,6 +811,12 @@ int gether_setup_name(struct usb_gadget *g, u8 ethaddr[ETH_ALEN],
|
||||||
INFO(dev, "HOST MAC %pM\n", dev->host_mac);
|
INFO(dev, "HOST MAC %pM\n", dev->host_mac);
|
||||||
|
|
||||||
the_dev = dev;
|
the_dev = dev;
|
||||||
|
|
||||||
|
/* two kinds of host-initiated state changes:
|
||||||
|
* - iff DATA transfer is active, carrier is "on"
|
||||||
|
* - tx queueing enabled if open *and* carrier is "on"
|
||||||
|
*/
|
||||||
|
netif_carrier_off(net);
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
Loading…
Reference in New Issue