| From 5c435c37e2652e5d066dc81fcc108a0dffbdb33d Mon Sep 17 00:00:00 2001 |
| From: Jonathan McDowell <noodles@earth.li> |
| Date: Fri, 17 Apr 2009 21:20:10 +0000 |
| Subject: usb gadget: fix ethernet link reports to ethtool |
| |
| From: Jonathan McDowell <noodles@earth.li> |
| |
| upstream commit: 237e75bf1e558f7330f8deb167fa3116405bef2c |
| |
| 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@earth.li> |
| Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| --- |
| drivers/usb/gadget/u_ether.c | 8 +------- |
| 1 file changed, 1 insertion(+), 7 deletions(-) |
| |
| --- a/drivers/usb/gadget/u_ether.c |
| +++ b/drivers/usb/gadget/u_ether.c |
| @@ -175,12 +175,6 @@ static void eth_get_drvinfo(struct net_d |
| strlcpy(p->bus_info, dev_name(&dev->gadget->dev), sizeof p->bus_info); |
| } |
| |
| -static u32 eth_get_link(struct net_device *net) |
| -{ |
| - struct eth_dev *dev = netdev_priv(net); |
| - return dev->gadget->speed != USB_SPEED_UNKNOWN; |
| -} |
| - |
| /* REVISIT can also support: |
| * - WOL (by tracking suspends and issuing remote wakeup) |
| * - msglevel (implies updated messaging) |
| @@ -189,7 +183,7 @@ static u32 eth_get_link(struct net_devic |
| |
| static struct ethtool_ops ops = { |
| .get_drvinfo = eth_get_drvinfo, |
| - .get_link = eth_get_link |
| + .get_link = ethtool_op_get_link, |
| }; |
| |
| static void defer_kevent(struct eth_dev *dev, int flag) |