diff options
Diffstat (limited to 'drivers/usb/gadget/u_ether.c')
| -rw-r--r-- | drivers/usb/gadget/u_ether.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/usb/gadget/u_ether.c b/drivers/usb/gadget/u_ether.c index 90e82e288eb..0e523092615 100644 --- a/drivers/usb/gadget/u_ether.c +++ b/drivers/usb/gadget/u_ether.c @@ -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);  		}  |