usb: gadget: u_ether: use better list accessors
authorFelipe Balbi <felipe.balbi@linux.intel.com>
Wed, 22 Mar 2017 11:24:34 +0000 (13:24 +0200)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 11 Apr 2017 07:58:20 +0000 (10:58 +0300)
We have helpers for some of these, let's rely on them instead of open
coding what they do in u_ether.c

Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/gadget/function/u_ether.c

index c3cab77181d4c2677ea5214d6c9abc0b120d83e8..cba6ff683f2ce8e566871a9fdd41d1c7ecbee1ca 100644 (file)
@@ -401,13 +401,12 @@ done:
 static void rx_fill(struct eth_dev *dev, gfp_t gfp_flags)
 {
        struct usb_request      *req;
+       struct usb_request      *tmp;
        unsigned long           flags;
 
        /* fill unused rxq slots with some skb */
        spin_lock_irqsave(&dev->req_lock, flags);
-       while (!list_empty(&dev->rx_reqs)) {
-               req = container_of(dev->rx_reqs.next,
-                               struct usb_request, list);
+       list_for_each_entry_safe(req, tmp, &dev->rx_reqs, list) {
                list_del_init(&req->list);
                spin_unlock_irqrestore(&dev->req_lock, flags);
 
@@ -527,7 +526,7 @@ static netdev_tx_t eth_start_xmit(struct sk_buff *skb,
                return NETDEV_TX_BUSY;
        }
 
-       req = container_of(dev->tx_reqs.next, struct usb_request, list);
+       req = list_first_entry(&dev->tx_reqs, struct usb_request, list);
        list_del(&req->list);
 
        /* temporarily stop TX queue when the freelist empties */
@@ -1122,6 +1121,7 @@ void gether_disconnect(struct gether *link)
 {
        struct eth_dev          *dev = link->ioport;
        struct usb_request      *req;
+       struct usb_request      *tmp;
 
        WARN_ON(!dev);
        if (!dev)
@@ -1138,9 +1138,7 @@ void gether_disconnect(struct gether *link)
         */
        usb_ep_disable(link->in_ep);
        spin_lock(&dev->req_lock);
-       while (!list_empty(&dev->tx_reqs)) {
-               req = container_of(dev->tx_reqs.next,
-                                       struct usb_request, list);
+       list_for_each_entry_safe(req, tmp, &dev->tx_reqs, list) {
                list_del(&req->list);
 
                spin_unlock(&dev->req_lock);
@@ -1152,9 +1150,7 @@ void gether_disconnect(struct gether *link)
 
        usb_ep_disable(link->out_ep);
        spin_lock(&dev->req_lock);
-       while (!list_empty(&dev->rx_reqs)) {
-               req = container_of(dev->rx_reqs.next,
-                                       struct usb_request, list);
+       list_for_each_entry_safe(req, tmp, &dev->rx_reqs, list) {
                list_del(&req->list);
 
                spin_unlock(&dev->req_lock);