diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2011-10-05 09:29:01 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-10-13 10:23:25 +0200 |
commit | 5a3348f06558026c5c842112b83674e00903064c (patch) | |
tree | 1bf2ffa5c77ad60ee487364a62978cbd08b818b0 /drivers/staging/cw1200/main.c | |
parent | 868040fa7b15aa1adf7af925f89dfa6c3b0b7a3c (diff) |
cw1200: AP PS refactoring.
* buffered_multicasts_lock was renamed to ps_state_lock.
Previous name was quite confusive.
* Per-STA rx_queue was created for early RX-ed frames.
Not that we really need these frames, but PM status they are
holding is important.
* priv->tx_suspend_mask was removed, driver is not using it.
It was intended for UAPSD and is not needed in current
implementation on mac80211.
* Fix: cw1200_queue_unlock() was not called from cw1200_queue_clear()
when queue was internally locked.
ST-Ericsson ID: 360749
Change-Id: I61346db485d34f761d80af786b716d8c73e8b600
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33541
Reviewed-by: Bartosz MARKOWSKI <bartosz.markowski@tieto.com>
Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
Diffstat (limited to 'drivers/staging/cw1200/main.c')
-rw-r--r-- | drivers/staging/cw1200/main.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/staging/cw1200/main.c b/drivers/staging/cw1200/main.c index c09b44fb367..d2f6cee19ee 100644 --- a/drivers/staging/cw1200/main.c +++ b/drivers/staging/cw1200/main.c @@ -207,6 +207,7 @@ static const struct ieee80211_ops cw1200_ops = { .tx = cw1200_tx, .hw_scan = cw1200_hw_scan, .set_tim = cw1200_set_tim, + .sta_notify = cw1200_sta_notify, .sta_add = cw1200_sta_add, .sta_remove = cw1200_sta_remove, .set_key = cw1200_set_key, @@ -325,7 +326,7 @@ struct ieee80211_hw *cw1200_init_common(size_t priv_data_len) INIT_DELAYED_WORK(&priv->connection_loss_work, cw1200_connection_loss_work); INIT_WORK(&priv->tx_failure_work, cw1200_tx_failure_work); - spin_lock_init(&priv->buffered_multicasts_lock); + spin_lock_init(&priv->ps_state_lock); INIT_WORK(&priv->set_tim_work, cw1200_set_tim_work); INIT_WORK(&priv->multicast_start_work, cw1200_multicast_start_work); INIT_WORK(&priv->multicast_stop_work, cw1200_multicast_stop_work); @@ -350,7 +351,8 @@ struct ieee80211_hw *cw1200_init_common(size_t priv_data_len) if (unlikely(cw1200_queue_init(&priv->tx_queue[i], &priv->tx_queue_stats, i, 16))) { for (; i > 0; i--) - cw1200_queue_deinit(&priv->tx_queue[i - 1]); + cw1200_queue_deinit(&priv->tx_queue[i - 1], + priv); cw1200_queue_stats_deinit(&priv->tx_queue_stats); ieee80211_free_hw(hw); return NULL; @@ -440,7 +442,7 @@ void cw1200_unregister_common(struct ieee80211_hw *dev) } for (i = 0; i < 4; ++i) - cw1200_queue_deinit(&priv->tx_queue[i]); + cw1200_queue_deinit(&priv->tx_queue[i], priv); cw1200_queue_stats_deinit(&priv->tx_queue_stats); cw1200_pm_deinit(&priv->pm_state); } |