carl9170: remove lost-frame workaround
authorChristian Lamparter <chunkeey@googlemail.com>
Sun, 26 Sep 2010 19:48:31 +0000 (21:48 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 28 Sep 2010 19:47:56 +0000 (15:47 -0400)
This patch removes some cruft, which survived
the RFC review phase.

Originally, carl9170_tx_ampdu_queue erroneously
dropped a lot of frames. As a result the ampdu
scheduler bogged down quite frequently and the
affected BA session timed out.

However this bug has been fixed and the WA and
its debugfs counter is no longer useful.

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/carl9170/carl9170.h
drivers/net/wireless/ath/carl9170/debug.c
drivers/net/wireless/ath/carl9170/tx.c

index d7c5482d74ce85a42c0d9008a124e15ba5ef0da4..20f2a77e54d261419bcfb1bfe6ff43fde2bd4c37 100644 (file)
@@ -364,7 +364,6 @@ struct ar9170 {
        unsigned int tx_dropped;
        unsigned int tx_ack_failures;
        unsigned int tx_fcs_errors;
-       unsigned int tx_ampdu_timeout;
        unsigned int rx_dropped;
 
        /* EEPROM */
index 19b48369ffed494b7beab6310cba2eb6131904f7..0ac1124c2a0b74b3bcaa09eb7174b4e2b599f4e7 100644 (file)
@@ -798,8 +798,6 @@ DEBUGFS_READONLY_FILE(tx_total_queued, 20, "%d",
                      atomic_read(&ar->tx_total_queued));
 DEBUGFS_READONLY_FILE(tx_ampdu_scheduler, 20, "%d",
                      atomic_read(&ar->tx_ampdu_scheduler));
-DEBUGFS_READONLY_FILE(tx_ampdu_timeout, 20, "%d",
-                     ar->tx_ampdu_timeout);
 
 DEBUGFS_READONLY_FILE(tx_total_pending, 20, "%d",
                      atomic_read(&ar->tx_total_pending));
@@ -872,8 +870,6 @@ void carl9170_debugfs_register(struct ar9170 *ar)
        DEBUGFS_ADD(ampdu_density);
        DEBUGFS_ADD(ampdu_factor);
 
-       DEBUGFS_ADD(tx_ampdu_timeout);
-
        DEBUGFS_ADD(tx_janitor_last_run);
 
        DEBUGFS_ADD(tx_status_0);
index e0d2374e0c779f02d9344530258ebe79f9735247..e6be5e6c1723d0274b61169ef61ad5478421331c 100644 (file)
@@ -1042,41 +1042,8 @@ retry:
                queue = TID_TO_WME_AC(tid_info->tid);
 
                spin_lock_bh(&tid_info->lock);
-               if (tid_info->state != CARL9170_TID_STATE_XMIT) {
-                       first = skb_peek(&tid_info->queue);
-                       if (first) {
-                               struct ieee80211_tx_info *txinfo;
-                               struct carl9170_tx_info *arinfo;
-
-                               txinfo = IEEE80211_SKB_CB(first);
-                               arinfo = (void *) txinfo->rate_driver_data;
-
-                               if (time_is_after_jiffies(arinfo->timeout +
-                                   msecs_to_jiffies(CARL9170_QUEUE_TIMEOUT))
-                                   == true)
-                                       goto processed;
-
-                               /*
-                                * We've been waiting for the frame which
-                                * matches "snx" (start sequence of the
-                                * next aggregate) for some time now.
-                                *
-                                * But it never arrived. Therefore
-                                * jump to the next available frame
-                                * and kick-start the transmission.
-                                *
-                                * Note: This might induce odd latency
-                                * spikes because the receiver will be
-                                * waiting for the lost frame too.
-                                */
-                               ar->tx_ampdu_timeout++;
-
-                               tid_info->snx = carl9170_get_seq(first);
-                               tid_info->state = CARL9170_TID_STATE_XMIT;
-                       } else {
-                               goto processed;
-                       }
-               }
+               if (tid_info->state != CARL9170_TID_STATE_XMIT)
+                       goto processed;
 
                tid_info->counter++;
                first = skb_peek(&tid_info->queue);