summaryrefslogtreecommitdiff
path: root/drivers/staging/cw1200/main.c
diff options
context:
space:
mode:
authorDmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>2011-10-06 19:05:02 +0200
committerPhilippe LANGLAIS <philippe.langlais@stericsson.com>2011-10-13 10:23:49 +0200
commit847817a7ac38983d030d87d4c1b38e379a26fe8e (patch)
treeaf0b449b8359ed45a234a377c0a81bde69a36653 /drivers/staging/cw1200/main.c
parent5a3348f06558026c5c842112b83674e00903064c (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.c19
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);
}