diff options
author | Bartosz Markowski <bartosz.markowski@tieto.com> | 2011-09-27 08:34:33 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-10-13 10:19:11 +0200 |
commit | 5e666fdc2c0bf1fc6157ca6b66a6b5af809b9d2b (patch) | |
tree | f0e73f8a78ae8df11e9901f85b23e8ecf9877e6d /drivers/staging/cw1200/ap.c | |
parent | 4716cbebb6bb0f839605f68bdec0f1558d69a728 (diff) |
cw1200: Adaptation to U-APSD/AP support as on Thu, Sep 22, 2011
New mac80211 API for reporting buffered frames in SoftAP mode is supported.
SoftAP stability is significantly improved by that.
ST-Ericsson ID: 355584
Change-Id: I0f12c71fff05f7f6b79cd508181b7daab6838c7e
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/31927
Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Tested-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33530
Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
Diffstat (limited to 'drivers/staging/cw1200/ap.c')
-rwxr-xr-x | drivers/staging/cw1200/ap.c | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/drivers/staging/cw1200/ap.c b/drivers/staging/cw1200/ap.c index aabca5ca06e..f35eef5fae6 100755 --- a/drivers/staging/cw1200/ap.c +++ b/drivers/staging/cw1200/ap.c @@ -84,30 +84,6 @@ void cw1200_sta_notify(struct ieee80211_hw *dev, struct ieee80211_vif *vif, enum sta_notify_cmd notify_cmd, struct ieee80211_sta *sta) { - struct cw1200_common *priv = dev->priv; - struct cw1200_sta_priv *sta_priv = - (struct cw1200_sta_priv *)&sta->drv_priv; - u32 bit = BIT(sta_priv->link_id); - - spin_lock_bh(&priv->buffered_multicasts_lock); - switch (notify_cmd) { - case STA_NOTIFY_SLEEP: - if (priv->buffered_multicasts && - !priv->sta_asleep_mask) - queue_work(priv->workqueue, - &priv->multicast_start_work); - priv->sta_asleep_mask |= bit; - break; - case STA_NOTIFY_AWAKE: - priv->sta_asleep_mask &= ~bit; - if (priv->tx_multicast && - !priv->sta_asleep_mask) - queue_work(priv->workqueue, - &priv->multicast_stop_work); - cw1200_bh_wakeup(priv); - break; - } - spin_unlock_bh(&priv->buffered_multicasts_lock); } static void __cw1200_ps_notify(struct cw1200_common *priv, @@ -901,6 +877,7 @@ int cw1200_alloc_link_id(struct cw1200_common *priv, const u8 *mac) ret); priv->link_id_db[ret - 1].status = CW1200_LINK_RESERVE; memcpy(&priv->link_id_db[ret - 1].mac, mac, ETH_ALEN); + memset(&priv->link_id_db[ret - 1].buffered, 0, CW1200_MAX_TID); wsm_lock_tx_async(priv); if (queue_work(priv->workqueue, &priv->link_id_work) <= 0) wsm_unlock_tx(priv); |