diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2011-10-06 19:05:02 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-10-13 10:23:49 +0200 |
commit | 847817a7ac38983d030d87d4c1b38e379a26fe8e (patch) | |
tree | af0b449b8359ed45a234a377c0a81bde69a36653 /drivers/staging/cw1200/main.c | |
parent | 5a3348f06558026c5c842112b83674e00903064c (diff) |
cw1200: Accurate reporting of TX status.
* Accurate reporting of TX status is implemented (needed for UAPSD and PSPOLL).
* Leaking of TX rate policies is fixed.
* skb destructor is implemented.
* Time to live for queued frames is implemented.
* cw1200_tx is split by separate TX handlers (like in mac80211).
* cw1200_skb_to_wsm is not existing anymore.
* BT coex: null frames are prioritized as management frames.
* Debug: added printing of rate policies in use.
ST-Ericsson ID: 354950
ST-Ericsson ID: 360749
Change-Id: I920d398418df99c21b37a16ef16591e58a82151d
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/33542
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 | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/drivers/staging/cw1200/main.c b/drivers/staging/cw1200/main.c index d2f6cee19ee..94398fb222f 100644 --- a/drivers/staging/cw1200/main.c +++ b/drivers/staging/cw1200/main.c @@ -199,6 +199,13 @@ static struct ieee80211_supported_band cw1200_band_5ghz = { }; #endif /* CONFIG_CW1200_5GHZ_SUPPORT */ +static const unsigned long cw1200_ttl[] = { + 1 * HZ, /* VO */ + 2 * HZ, /* VI */ + 5 * HZ, /* BE */ + 10 * HZ /* BK */ +}; + static const struct ieee80211_ops cw1200_ops = { .start = cw1200_start, .stop = cw1200_stop, @@ -342,17 +349,19 @@ struct ieee80211_hw *cw1200_init_common(size_t priv_data_len) } if (unlikely(cw1200_queue_stats_init(&priv->tx_queue_stats, - CW1200_LINK_ID_MAX))) { + CW1200_LINK_ID_MAX, + cw1200_skb_dtor, + priv))) { ieee80211_free_hw(hw); return NULL; } for (i = 0; i < 4; ++i) { if (unlikely(cw1200_queue_init(&priv->tx_queue[i], - &priv->tx_queue_stats, i, 16))) { + &priv->tx_queue_stats, i, 16, + cw1200_ttl[i]))) { for (; i > 0; i--) - cw1200_queue_deinit(&priv->tx_queue[i - 1], - priv); + cw1200_queue_deinit(&priv->tx_queue[i - 1]); cw1200_queue_stats_deinit(&priv->tx_queue_stats); ieee80211_free_hw(hw); return NULL; @@ -442,7 +451,7 @@ void cw1200_unregister_common(struct ieee80211_hw *dev) } for (i = 0; i < 4; ++i) - cw1200_queue_deinit(&priv->tx_queue[i], priv); + cw1200_queue_deinit(&priv->tx_queue[i]); cw1200_queue_stats_deinit(&priv->tx_queue_stats); cw1200_pm_deinit(&priv->pm_state); } |