Pending TX buffers are completed from the same NAPI code as normal
TX buffers. Pass the NAPI budget to qeth_tx_complete_buf() so that
the freeing of the completed skbs can be deferred.

Signed-off-by: Julian Wiedmann <[email protected]>
---
 drivers/s390/net/qeth_core_main.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/s390/net/qeth_core_main.c 
b/drivers/s390/net/qeth_core_main.c
index abd1e49cf97a..6954d4e831a3 100644
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -1453,7 +1453,7 @@ static void qeth_clear_output_buffer(struct 
qeth_qdio_out_q *queue,
 
 static void qeth_tx_complete_pending_bufs(struct qeth_card *card,
                                          struct qeth_qdio_out_q *queue,
-                                         bool drain)
+                                         bool drain, int budget)
 {
        struct qeth_qdio_out_buffer *buf, *tmp;
 
@@ -1465,7 +1465,7 @@ static void qeth_tx_complete_pending_bufs(struct 
qeth_card *card,
                        if (drain)
                                qeth_notify_skbs(queue, buf,
                                                 TX_NOTIFY_GENERALERROR);
-                       qeth_tx_complete_buf(buf, drain, 0);
+                       qeth_tx_complete_buf(buf, drain, budget);
 
                        list_del(&buf->list_entry);
                        kmem_cache_free(qeth_qdio_outbuf_cache, buf);
@@ -1477,7 +1477,7 @@ static void qeth_drain_output_queue(struct 
qeth_qdio_out_q *q, bool free)
 {
        int j;
 
-       qeth_tx_complete_pending_bufs(q->card, q, true);
+       qeth_tx_complete_pending_bufs(q->card, q, true, 0);
 
        for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; ++j) {
                if (!q->bufs[j])
@@ -6152,7 +6152,7 @@ static int qeth_tx_poll(struct napi_struct *napi, int 
budget)
                unsigned int bytes = 0;
                int completed;
 
-               qeth_tx_complete_pending_bufs(card, queue, false);
+               qeth_tx_complete_pending_bufs(card, queue, false, budget);
 
                if (qeth_out_queue_is_empty(queue)) {
                        napi_complete(napi);
-- 
2.25.1

Reply via email to