r8152: re-schedule napi for tx
authorhayeswang <hayeswang@realtek.com>
Thu, 26 Jan 2017 01:38:33 +0000 (09:38 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 26 Jan 2017 03:47:30 +0000 (22:47 -0500)
Re-schedule napi after napi_complete() for tx, if it is necessay.

In r8152_poll(), if the tx is completed after tx_bottom() and before
napi_complete(), the scheduling of napi would be lost. Then, no
one handles the next tx until the next napi_schedule() is called.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/r8152.c

index ec882be4cfaf69f63e14af5acd520ea885c8f586..4785d2b9d80f09ae02f895e4dd1d54954edddd8e 100644 (file)
@@ -1936,6 +1936,9 @@ static int r8152_poll(struct napi_struct *napi, int budget)
                napi_complete(napi);
                if (!list_empty(&tp->rx_done))
                        napi_schedule(napi);
+               else if (!skb_queue_empty(&tp->tx_queue) &&
+                        !list_empty(&tp->tx_free))
+                       napi_schedule(napi);
        }
 
        return work_done;