diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2008-09-07 00:33:49 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-10-17 17:41:01 -0400 |
commit | 29bac7b7661bbbdbbd32bc1e6cedca22f260da7f (patch) | |
tree | 95600092fe262980ea0fec4d4581f398cb0ea5b4 /drivers | |
parent | f1c9e151b18ade3be5b1865d288a490bff4339e6 (diff) |
usb gadget: cdc ethernet notification bugfix
Bugfix for the new CDC Ethernet code: as part of activating the
network interface's USB link, make sure its link management code
knows whether the interface is open or not.
Without this fix, the link won't work right when it's brought up
before the link is active ... because the initial notification it
sends will have the wrong link state (down, not up). Makes it
hard to bridge these links (on the host side), among other things.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: stable <stable@kernel.org> [2.6.27]
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/gadget/u_ether.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c index dbd575a194f3..66948b72bb9b 100644 --- a/drivers/usb/gadget/u_ether.c +++ b/drivers/usb/gadget/u_ether.c | |||
@@ -873,6 +873,13 @@ struct net_device *gether_connect(struct gether *link) | |||
873 | spin_lock(&dev->lock); | 873 | spin_lock(&dev->lock); |
874 | dev->port_usb = link; | 874 | dev->port_usb = link; |
875 | link->ioport = dev; | 875 | link->ioport = dev; |
876 | if (netif_running(dev->net)) { | ||
877 | if (link->open) | ||
878 | link->open(link); | ||
879 | } else { | ||
880 | if (link->close) | ||
881 | link->close(link); | ||
882 | } | ||
876 | spin_unlock(&dev->lock); | 883 | spin_unlock(&dev->lock); |
877 | 884 | ||
878 | netif_carrier_on(dev->net); | 885 | netif_carrier_on(dev->net); |