[ofa-general] [PATCH] IPoIB: Remove redundant check in xmit handler

Krishna Kumar krkumar2 at in.ibm.com
Wed Nov 14 21:05:37 PST 2007


qdisc_run() tests for queue_stopped() before calling __qdisc_run(),
and the same check is done in every iteration of __qdisc_run(), so
another check is not required in the driver xmit.

To validate, I put a debug in the TX_BUSY path which never hit with
64 threads running overnight exercising this code a few 100 million
times.

Signed-off-by: Krishna Kumar <krkumar2 at in.ibm.com>

---
 ipoib_main.c |   10 ----------
 1 files changed, 10 deletions(-)

diff -ruNp 1/drivers/infiniband/ulp/ipoib/ipoib_main.c 2/drivers/infiniband/ulp/ipoib/ipoib_main.c
--- 1/drivers/infiniband/ulp/ipoib/ipoib_main.c	2007-11-14 14:07:06.000000000 +0530
+++ 2/drivers/infiniband/ulp/ipoib/ipoib_main.c	2007-11-14 14:07:35.000000000 +0530
@@ -666,16 +666,6 @@ static int ipoib_start_xmit(struct sk_bu
 	if (unlikely(!spin_trylock_irqsave(&priv->tx_lock, flags)))
 		return NETDEV_TX_LOCKED;
 
-	/*
-	 * Check if our queue is stopped.  Since we have the LLTX bit
-	 * set, we can't rely on netif_stop_queue() preventing our
-	 * xmit function from being called with a full queue.
-	 */
-	if (unlikely(netif_queue_stopped(dev))) {
-		spin_unlock_irqrestore(&priv->tx_lock, flags);
-		return NETDEV_TX_BUSY;
-	}
-
 	if (likely(skb->dst && skb->dst->neighbour)) {
 		if (unlikely(!*to_ipoib_neigh(skb->dst->neighbour))) {
 			ipoib_path_lookup(skb, dev);



More information about the general mailing list