|
@@ -669,6 +669,8 @@ static int eth_stop(struct net_device *net)
|
|
|
spin_lock_irqsave(&dev->lock, flags);
|
|
|
if (dev->port_usb) {
|
|
|
struct gether *link = dev->port_usb;
|
|
|
+ const struct usb_endpoint_descriptor *in;
|
|
|
+ const struct usb_endpoint_descriptor *out;
|
|
|
|
|
|
if (link->close)
|
|
|
link->close(link);
|
|
@@ -682,10 +684,14 @@ static int eth_stop(struct net_device *net)
|
|
|
* their own pace; the network stack can handle old packets.
|
|
|
* For the moment we leave this here, since it works.
|
|
|
*/
|
|
|
+ in = link->in_ep->desc;
|
|
|
+ out = link->out_ep->desc;
|
|
|
usb_ep_disable(link->in_ep);
|
|
|
usb_ep_disable(link->out_ep);
|
|
|
if (netif_carrier_ok(net)) {
|
|
|
DBG(dev, "host still using in/out endpoints\n");
|
|
|
+ link->in_ep->desc = in;
|
|
|
+ link->out_ep->desc = out;
|
|
|
usb_ep_enable(link->in_ep);
|
|
|
usb_ep_enable(link->out_ep);
|
|
|
}
|