diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2011-09-27 15:17:59 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-10-13 10:20:25 +0200 |
commit | 166254636dcdbc6e103ca3c18236b982e5195447 (patch) | |
tree | 994663432b905dbafc7dee7f56435d6c97bc804c /drivers/staging/cw1200/ap.c | |
parent | 02e3a3c6eed7b493d997017ef93622faac49fd52 (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-x | drivers/staging/cw1200/ap.c | 7 |
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: |