Loading drivers/usb/gadget/function/f_rndis.c +4 −2 Original line number Diff line number Diff line Loading @@ -474,12 +474,13 @@ static void rndis_response_available(void *_rndis) static void rndis_response_complete(struct usb_ep *ep, struct usb_request *req) { struct f_rndis *rndis = __rndis; struct f_rndis *rndis; struct usb_composite_dev *cdev; int status = req->status; struct usb_ep *notify_ep; spin_lock(&_rndis_lock); rndis = __rndis; if (!rndis || !rndis->notify || !rndis->notify->driver_data) { spin_unlock(&_rndis_lock); return; Loading Loading @@ -537,12 +538,13 @@ out: static void rndis_command_complete(struct usb_ep *ep, struct usb_request *req) { struct f_rndis *rndis = __rndis; struct f_rndis *rndis; struct usb_composite_dev *cdev; int status; rndis_init_msg_type *buf; spin_lock(&_rndis_lock); rndis = __rndis; if (!rndis || !rndis->notify || !rndis->notify->driver_data) { spin_unlock(&_rndis_lock); return; Loading drivers/usb/gadget/function/u_ether.c +14 −0 Original line number Diff line number Diff line Loading @@ -573,8 +573,16 @@ static void rx_fill(struct eth_dev *dev, gfp_t gfp_flags) unsigned long flags; int req_cnt = 0; if (!dev) return; /* fill unused rxq slots with some skb */ spin_lock_irqsave(&dev->req_lock, flags); if (!dev->port_usb) { spin_unlock_irqrestore(&dev->req_lock, flags); return; } while (!list_empty(&dev->rx_reqs)) { /* break the nexus of continuous completion and re-submission*/ if (++req_cnt > qlen(dev->gadget, dev->qmult)) Loading @@ -588,6 +596,10 @@ static void rx_fill(struct eth_dev *dev, gfp_t gfp_flags) if (rx_submit(dev, req, gfp_flags) < 0) { spin_lock_irqsave(&dev->req_lock, flags); list_add(&req->list, &dev->rx_reqs); if (!dev->port_usb) { spin_unlock_irqrestore(&dev->req_lock, flags); return; } spin_unlock_irqrestore(&dev->req_lock, flags); defer_kevent(dev, WORK_RX_MEMORY); return; Loading Loading @@ -1957,6 +1969,8 @@ void gether_cleanup(struct eth_dev *dev) uether_debugfs_exit(dev); unregister_netdev(dev->net); flush_work(&dev->work); cancel_work_sync(&dev->rx_work); cancel_work_sync(&dev->tx_work); free_netdev(dev->net); } EXPORT_SYMBOL_GPL(gether_cleanup); Loading Loading
drivers/usb/gadget/function/f_rndis.c +4 −2 Original line number Diff line number Diff line Loading @@ -474,12 +474,13 @@ static void rndis_response_available(void *_rndis) static void rndis_response_complete(struct usb_ep *ep, struct usb_request *req) { struct f_rndis *rndis = __rndis; struct f_rndis *rndis; struct usb_composite_dev *cdev; int status = req->status; struct usb_ep *notify_ep; spin_lock(&_rndis_lock); rndis = __rndis; if (!rndis || !rndis->notify || !rndis->notify->driver_data) { spin_unlock(&_rndis_lock); return; Loading Loading @@ -537,12 +538,13 @@ out: static void rndis_command_complete(struct usb_ep *ep, struct usb_request *req) { struct f_rndis *rndis = __rndis; struct f_rndis *rndis; struct usb_composite_dev *cdev; int status; rndis_init_msg_type *buf; spin_lock(&_rndis_lock); rndis = __rndis; if (!rndis || !rndis->notify || !rndis->notify->driver_data) { spin_unlock(&_rndis_lock); return; Loading
drivers/usb/gadget/function/u_ether.c +14 −0 Original line number Diff line number Diff line Loading @@ -573,8 +573,16 @@ static void rx_fill(struct eth_dev *dev, gfp_t gfp_flags) unsigned long flags; int req_cnt = 0; if (!dev) return; /* fill unused rxq slots with some skb */ spin_lock_irqsave(&dev->req_lock, flags); if (!dev->port_usb) { spin_unlock_irqrestore(&dev->req_lock, flags); return; } while (!list_empty(&dev->rx_reqs)) { /* break the nexus of continuous completion and re-submission*/ if (++req_cnt > qlen(dev->gadget, dev->qmult)) Loading @@ -588,6 +596,10 @@ static void rx_fill(struct eth_dev *dev, gfp_t gfp_flags) if (rx_submit(dev, req, gfp_flags) < 0) { spin_lock_irqsave(&dev->req_lock, flags); list_add(&req->list, &dev->rx_reqs); if (!dev->port_usb) { spin_unlock_irqrestore(&dev->req_lock, flags); return; } spin_unlock_irqrestore(&dev->req_lock, flags); defer_kevent(dev, WORK_RX_MEMORY); return; Loading Loading @@ -1957,6 +1969,8 @@ void gether_cleanup(struct eth_dev *dev) uether_debugfs_exit(dev); unregister_netdev(dev->net); flush_work(&dev->work); cancel_work_sync(&dev->rx_work); cancel_work_sync(&dev->tx_work); free_netdev(dev->net); } EXPORT_SYMBOL_GPL(gether_cleanup); Loading