- cxgb3-fix-transmit-queue-stop-mechanism.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     cxgb3: fix transmit queue stop mechanism
has been removed from the -mm tree.  Its filename was
     cxgb3-fix-transmit-queue-stop-mechanism.patch

This patch was dropped because it was merged into mainline or a subsystem tree

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: cxgb3: fix transmit queue stop mechanism
From: Divy Le Ray <divy@xxxxxxxxxxx>

The last change in the Tx queue stop mechanism opens a window where the Tx
queue might be stopped after pending credits returned.

Tx credits are returned via a control message generated by the HW.  It returns
tx credits on demand, triggered by a completion bit set in selective transmit
packet headers.

The current code can lead to the Tx queue stopped with all pending credits
returned, and the current frame not triggering a credit return.  The Tx queue
will then never be awaken.

The driver could alternatively request a completion for packets that stop the
queue.  It's however safer at this point to go back to the pre-existing
behaviour.

Signed-off-by: Divy Le Ray <divy@xxxxxxxxxxx>
Cc: Jeff Garzik <jeff@xxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 drivers/net/cxgb3/sge.c |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff -puN drivers/net/cxgb3/sge.c~cxgb3-fix-transmit-queue-stop-mechanism drivers/net/cxgb3/sge.c
--- a/drivers/net/cxgb3/sge.c~cxgb3-fix-transmit-queue-stop-mechanism
+++ a/drivers/net/cxgb3/sge.c
@@ -1107,9 +1107,15 @@ int t3_eth_xmit(struct sk_buff *skb, str
 	}
 
 	q->in_use += ndesc;
-	if (unlikely(credits - ndesc < q->stop_thres))
-		if (USE_GTS || !should_restart_tx(q))
-			t3_stop_queue(dev, qs, q);
+	if (unlikely(credits - ndesc < q->stop_thres)) {
+		t3_stop_queue(dev, qs, q);
+
+		if (should_restart_tx(q) &&
+		    test_and_clear_bit(TXQ_ETH, &qs->txq_stopped)) {
+			q->restarts++;
+			netif_wake_queue(dev);
+		}
+	}
 
 	gen = q->gen;
 	q->unacked += ndesc;
_

Patches currently in -mm which might be from divy@xxxxxxxxxxx are

git-net.patch

--
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux