On Wednesday 04 March 2009, Jonathan McDowell wrote: > The g_ether USB gadget driver currently decides whether or not there's a > link to report back for eth_get_link based on if the USB link speed is > set. The USB gadget speed is however often set even before the device is > enumerated. It seems more sensible to only report a "link" if we're > actually connected to a host that wants to talk to us. The patch below > does this for me - tested with the PXA27x UDC driver. > > Signed-Off-By: Jonathan McDowell <noodles@xxxxxxxx> Wouldn't it make more sense to use ethtool_op_get_link() instead of this private function? That utility looks new, else it surely would have been used a long time ago. > ----- > diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c > index 96d65ca..2f723dd 100644 > --- a/drivers/usb/gadget/u_ether.c > +++ b/drivers/usb/gadget/u_ether.c > @@ -178,7 +178,14 @@ static void eth_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *p) > static u32 eth_get_link(struct net_device *net) > { > struct eth_dev *dev = netdev_priv(net); > - return dev->gadget->speed != USB_SPEED_UNKNOWN; > + unsigned long flags; > + int status = 0; > + > + spin_lock_irqsave(&dev->lock, flags); > + status = (dev->port_usb != NULL); > + spin_unlock_irqrestore(&dev->lock, flags); > + > + return status; > } > > /* REVISIT can also support: -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html