aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8192e
diff options
context:
space:
mode:
authorMike McCormack <mikem@ring3k.org>2011-02-06 08:55:16 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2011-02-09 14:50:19 -0500
commit1348dc08a912c0bdfc8680df8919dd79de8c3b9a (patch)
tree8a9773b7b072ae51ee6c62ea1f16c952c26354ef /drivers/staging/rtl8192e
parent79b03af67a7db3622aefe2da8c250775c81fd623 (diff)
staging: rtl8192e: Don't call ieee80211_ps_tx_ack in interrupt context
Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rtl8192e')
-rw-r--r--drivers/staging/rtl8192e/r8192E_core.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/drivers/staging/rtl8192e/r8192E_core.c b/drivers/staging/rtl8192e/r8192E_core.c
index a63c6e59b2e..d9e47d0d101 100644
--- a/drivers/staging/rtl8192e/r8192E_core.c
+++ b/drivers/staging/rtl8192e/r8192E_core.c
@@ -988,14 +988,6 @@ static void rtl8192_tx_isr(struct net_device *dev, int prio)
988 988
989 kfree_skb(skb); 989 kfree_skb(skb);
990 } 990 }
991 if (prio == MGNT_QUEUE) {
992 if (priv->ieee80211->ack_tx_to_ieee) {
993 if (rtl8192_is_tx_queue_empty(dev)) {
994 priv->ieee80211->ack_tx_to_ieee = 0;
995 ieee80211_ps_tx_ack(priv->ieee80211, 1);
996 }
997 }
998 }
999 991
1000 if (prio != BEACON_QUEUE) { 992 if (prio != BEACON_QUEUE) {
1001 /* try to deal with the pending packets */ 993 /* try to deal with the pending packets */
@@ -4957,7 +4949,23 @@ static void rtl8192_tx_resume(struct net_device *dev)
4957 4949
4958static void rtl8192_irq_tx_tasklet(struct r8192_priv *priv) 4950static void rtl8192_irq_tx_tasklet(struct r8192_priv *priv)
4959{ 4951{
4960 rtl8192_tx_resume(priv->ieee80211->dev); 4952 struct rtl8192_tx_ring *mgnt_ring = &priv->tx_ring[MGNT_QUEUE];
4953 struct net_device *dev = priv->ieee80211->dev;
4954 unsigned long flags;
4955
4956 /* check if we need to report that the management queue is drained */
4957 spin_lock_irqsave(&priv->irq_th_lock, flags);
4958
4959 if (!skb_queue_len(&mgnt_ring->queue) &&
4960 priv->ieee80211->ack_tx_to_ieee &&
4961 rtl8192_is_tx_queue_empty(dev)) {
4962 priv->ieee80211->ack_tx_to_ieee = 0;
4963 ieee80211_ps_tx_ack(priv->ieee80211, 1);
4964 }
4965
4966 spin_unlock_irqrestore(&priv->irq_th_lock, flags);
4967
4968 rtl8192_tx_resume(dev);
4961} 4969}
4962 4970
4963/* Record the received data rate */ 4971/* Record the received data rate */