aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorNicolas Cavallari <Nicolas.Cavallari@lri.fr>2012-02-23 10:53:34 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-02-29 13:08:51 -0500
commit992d52529d7840236d3059b51c15d5eb9e81a869 (patch)
treefeaecc367249ce155d4e851eddcb699f42a431bc /drivers/net/wireless
parent2b0a53d51b5f263bb581bbdb40ebb9f7e09609b1 (diff)
carl9170: Fix memory accounting when sta is in power-save mode.
On Access Point mode, when transmitting a packet, if the destination station is in powersave mode, we abort transmitting the packet to the device queue, but we do not reclaim the allocated memory. Given enough packets, we can go in a state where there is no packet on the device queue, but we think the device has no memory left, so no packet gets transmitted, connections breaks and the AP stops working. This undo the allocation done in the TX path when the station is in power-save mode. Signed-off-by: Nicolas Cavallari <cavallar@lri.fr> Acked-by: Christian Lamparter <chunkeey@googlemail.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/ath/carl9170/tx.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c
index d19a9ee9d057..22a793121bd3 100644
--- a/drivers/net/wireless/ath/carl9170/tx.c
+++ b/drivers/net/wireless/ath/carl9170/tx.c
@@ -1251,6 +1251,7 @@ static bool carl9170_tx_ps_drop(struct ar9170 *ar, struct sk_buff *skb)
1251 atomic_dec(&ar->tx_ampdu_upload); 1251 atomic_dec(&ar->tx_ampdu_upload);
1252 1252
1253 tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED; 1253 tx_info->flags |= IEEE80211_TX_STAT_TX_FILTERED;
1254 carl9170_release_dev_space(ar, skb);
1254 carl9170_tx_status(ar, skb, false); 1255 carl9170_tx_status(ar, skb, false);
1255 return true; 1256 return true;
1256 } 1257 }