diff options
author | Sujith <Sujith.Manoharan@atheros.com> | 2008-10-24 00:25:27 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-10-31 19:02:14 -0400 |
commit | 8b30b1fe368ab03049435884c11c5c50e4c4ef0b (patch) | |
tree | 02b27b36cf90267d59584b493ad652e3a4cc6a7e /net/mac80211/rx.c | |
parent | 4393dce9402c58744433c7a4f3931e17ddde4fb4 (diff) |
mac80211: Re-enable aggregation
Wireless HW without any dedicated queues for aggregation
do not need the ampdu_queues mechanism present right now
in mac80211. Since mac80211 is still incomplete wrt TX MQ
changes, do not allow aggregation sessions for drivers that
set ampdu_queues.
This is only an interim hack until Intel fixes the requeue issue.
Signed-off-by: Sujith <Sujith.Manoharan@atheros.com>
Signed-off-by: Luis Rodriguez <Luis.Rodriguez@Atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r-- | net/mac80211/rx.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index c4c95f1db60..648a1d0e6c8 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -669,7 +669,6 @@ static int ap_sta_ps_end(struct sta_info *sta) | |||
669 | struct ieee80211_local *local = sdata->local; | 669 | struct ieee80211_local *local = sdata->local; |
670 | struct sk_buff *skb; | 670 | struct sk_buff *skb; |
671 | int sent = 0; | 671 | int sent = 0; |
672 | struct ieee80211_tx_info *info; | ||
673 | 672 | ||
674 | atomic_dec(&sdata->bss->num_sta_ps); | 673 | atomic_dec(&sdata->bss->num_sta_ps); |
675 | 674 | ||
@@ -685,13 +684,11 @@ static int ap_sta_ps_end(struct sta_info *sta) | |||
685 | 684 | ||
686 | /* Send all buffered frames to the station */ | 685 | /* Send all buffered frames to the station */ |
687 | while ((skb = skb_dequeue(&sta->tx_filtered)) != NULL) { | 686 | while ((skb = skb_dequeue(&sta->tx_filtered)) != NULL) { |
688 | info = IEEE80211_SKB_CB(skb); | ||
689 | sent++; | 687 | sent++; |
690 | info->flags |= IEEE80211_TX_CTL_REQUEUE; | 688 | skb->requeue = 1; |
691 | dev_queue_xmit(skb); | 689 | dev_queue_xmit(skb); |
692 | } | 690 | } |
693 | while ((skb = skb_dequeue(&sta->ps_tx_buf)) != NULL) { | 691 | while ((skb = skb_dequeue(&sta->ps_tx_buf)) != NULL) { |
694 | info = IEEE80211_SKB_CB(skb); | ||
695 | local->total_ps_buffered--; | 692 | local->total_ps_buffered--; |
696 | sent++; | 693 | sent++; |
697 | #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG | 694 | #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG |
@@ -699,7 +696,7 @@ static int ap_sta_ps_end(struct sta_info *sta) | |||
699 | "since STA not sleeping anymore\n", sdata->dev->name, | 696 | "since STA not sleeping anymore\n", sdata->dev->name, |
700 | sta->sta.addr, sta->sta.aid); | 697 | sta->sta.addr, sta->sta.aid); |
701 | #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */ | 698 | #endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */ |
702 | info->flags |= IEEE80211_TX_CTL_REQUEUE; | 699 | skb->requeue = 1; |
703 | dev_queue_xmit(skb); | 700 | dev_queue_xmit(skb); |
704 | } | 701 | } |
705 | 702 | ||