summaryrefslogtreecommitdiff
path: root/drivers/staging/cw1200/ap.c
diff options
context:
space:
mode:
authorDmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>2011-09-27 15:17:59 +0200
committerPhilippe LANGLAIS <philippe.langlais@stericsson.com>2011-10-13 10:20:25 +0200
commit166254636dcdbc6e103ca3c18236b982e5195447 (patch)
tree994663432b905dbafc7dee7f56435d6c97bc804c /drivers/staging/cw1200/ap.c
parent02e3a3c6eed7b493d997017ef93622faac49fd52 (diff)
cw1200: cw1200_flush() blocked execution on SoftAP stop
cw1200_flush() was called when beacon had not been available. In presence of PS-enabled STAs in the air that leaded to a timeout in delivering of frames to these STAs. Fix forces clearing of the frame queue if beacon is not available. ST-Ericsson ID: 360712 ST-Ericsson ID: 359675 Change-Id: I678fbd6b31d853108ece82e4da62a02c21fa211e Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/32220 Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com> Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33534 Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
Diffstat (limited to 'drivers/staging/cw1200/ap.c')
-rwxr-xr-xdrivers/staging/cw1200/ap.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/staging/cw1200/ap.c b/drivers/staging/cw1200/ap.c
index c4b68a42ccd..0e0947a4482 100755
--- a/drivers/staging/cw1200/ap.c
+++ b/drivers/staging/cw1200/ap.c
@@ -134,8 +134,11 @@ static int cw1200_set_tim_impl(struct cw1200_common *priv, bool aid0_bit_set)
skb = ieee80211_beacon_get_tim(priv->hw, priv->vif,
&tim_offset, &tim_length);
- if (WARN_ON(!skb))
- return -ENOMEM;
+ if (!skb) {
+ if (!__cw1200_flush(priv, true));
+ wsm_unlock_tx(priv);
+ return -ENOENT;
+ }
if (tim_offset && tim_length >= 6) {
/* Ignore DTIM count from mac80211: