linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/4] mwl8k: Do not stop tx queues
@ 2011-04-19  5:42 Nishant Sarmukadam
  2011-04-19  5:42 ` [PATCH 2/4] mwl8k: Add timestamp information for tx packets Nishant Sarmukadam
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Nishant Sarmukadam @ 2011-04-19  5:42 UTC (permalink / raw)
  To: linux-wireless; +Cc: buytenh, Pradeep Nemavat, Nishant Sarmukadam

From: Pradeep Nemavat <pnemavat@marvell.com>

This is in preparation to support life time expiry of packets in the
hardware to avoid head-of-line blocking where a slow client can
hog a tx queue and affect the traffic to a faster client from the same
queue. Time stamp the packets in driver to allow dropping them in the
hardware if they are queued for more than 500ms.

Since queues are not being stopped now, we need to be prepared for
a situation where packets hit the driver after the queues are full.
Drop all such packets in the driver itself.

Signed-off-by: Pradeep Nemavat <pnemavat@marvell.com>
Signed-off-by: Nishant Sarmukadam <nishants@marvell.com>
---
 drivers/net/wireless/mwl8k.c |   20 +++++++-------------
 1 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c
index ebaae35..7968301 100644
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -1666,10 +1666,6 @@ mwl8k_txq_reclaim(struct ieee80211_hw *hw, int index, int limit, int force)
 		processed++;
 	}
 
-	if (index < MWL8K_TX_WMM_QUEUES && processed && priv->radio_on &&
-	    !mutex_is_locked(&priv->fw_mutex))
-		ieee80211_wake_queue(hw, index);
-
 	return processed;
 }
 
@@ -1951,13 +1947,14 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb)
 
 	txq = priv->txq + index;
 
-	if (index >= MWL8K_TX_WMM_QUEUES && txq->len >= MWL8K_TX_DESCS) {
-		/* This is the case in which the tx packet is destined for an
-		 * AMPDU queue and that AMPDU queue is full.  Because we don't
-		 * start and stop the AMPDU queues, we must drop these packets.
-		 */
-		dev_kfree_skb(skb);
+	if (txq->len >= MWL8K_TX_DESCS) {
+		if (start_ba_session) {
+			spin_lock(&priv->stream_lock);
+			mwl8k_remove_stream(hw, stream);
+			spin_unlock(&priv->stream_lock);
+		}
 		spin_unlock_bh(&priv->tx_lock);
+		dev_kfree_skb(skb);
 		return;
 	}
 
@@ -1985,9 +1982,6 @@ mwl8k_txq_xmit(struct ieee80211_hw *hw, int index, struct sk_buff *skb)
 	if (txq->tail == MWL8K_TX_DESCS)
 		txq->tail = 0;
 
-	if (txq->head == txq->tail && index < MWL8K_TX_WMM_QUEUES)
-		ieee80211_stop_queue(hw, index);
-
 	mwl8k_tx_start(priv);
 
 	spin_unlock_bh(&priv->tx_lock);
-- 
1.6.0.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2011-04-21  8:18 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-19  5:42 [PATCH 1/4] mwl8k: Do not stop tx queues Nishant Sarmukadam
2011-04-19  5:42 ` [PATCH 2/4] mwl8k: Add timestamp information for tx packets Nishant Sarmukadam
2011-04-19  7:54   ` Lennert Buytenhek
2011-04-19 10:08     ` Nishant Sarmukadam
2011-04-19 10:31       ` Lennert Buytenhek
2011-04-19 13:06         ` Nishant Sarmukadam
2011-04-21  7:34           ` Lennert Buytenhek
2011-04-21  8:15             ` Nishant Sarmukadam
2011-04-19  5:42 ` [PATCH 3/4] mwl8k: Reserve buffers for tx management frames Nishant Sarmukadam
2011-04-19  5:42 ` [PATCH 4/4] mwl8k: Enable life time expiry for tx packets in the hardware Nishant Sarmukadam
2011-04-19  7:48 ` [PATCH 1/4] mwl8k: Do not stop tx queues Lennert Buytenhek
2011-04-19 10:08   ` Nishant Sarmukadam
2011-04-19 10:26     ` Lennert Buytenhek
2011-04-19 13:05       ` Nishant Sarmukadam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).