Commit 41a24a29 authored by Avinash Patil's avatar Avinash Patil Committed by John W. Linville

mwifiex: make tos_to_tid_inv part of mwifiex_private structure

tos_to_tid_inv values are needed even during TDLS restore
operations. Currently tos_to_tid_inv is part of wmm.c and
is declared static.
Make it part of private structure so that it can be used in
other files as well.
Signed-off-by: default avatarAvinash Patil <patila@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent eac43227
...@@ -137,6 +137,7 @@ int mwifiex_init_priv(struct mwifiex_private *priv) ...@@ -137,6 +137,7 @@ int mwifiex_init_priv(struct mwifiex_private *priv)
priv->csa_expire_time = 0; priv->csa_expire_time = 0;
priv->del_list_idx = 0; priv->del_list_idx = 0;
priv->hs2_enabled = false; priv->hs2_enabled = false;
memcpy(priv->tos_to_tid_inv, tos_to_tid_inv, MAX_NUM_TID);
return mwifiex_add_bss_prio_tbl(priv); return mwifiex_add_bss_prio_tbl(priv);
} }
......
...@@ -461,6 +461,7 @@ struct mwifiex_private { ...@@ -461,6 +461,7 @@ struct mwifiex_private {
struct mwifiex_tx_aggr aggr_prio_tbl[MAX_NUM_TID]; struct mwifiex_tx_aggr aggr_prio_tbl[MAX_NUM_TID];
struct mwifiex_add_ba_param add_ba_param; struct mwifiex_add_ba_param add_ba_param;
u16 rx_seq[MAX_NUM_TID]; u16 rx_seq[MAX_NUM_TID];
u8 tos_to_tid_inv[MAX_NUM_TID];
struct list_head rx_reorder_tbl_ptr; struct list_head rx_reorder_tbl_ptr;
/* spin lock for rx_reorder_tbl_ptr queue */ /* spin lock for rx_reorder_tbl_ptr queue */
spinlock_t rx_reorder_tbl_lock; spinlock_t rx_reorder_tbl_lock;
......
...@@ -64,21 +64,6 @@ static u8 tos_to_tid[] = { ...@@ -64,21 +64,6 @@ static u8 tos_to_tid[] = {
0x07 /* 1 1 1 AC_VO */ 0x07 /* 1 1 1 AC_VO */
}; };
/*
* This table inverses the tos_to_tid operation to get a priority
* which is in sequential order, and can be compared.
* Use this to compare the priority of two different TIDs.
*/
static u8 tos_to_tid_inv[] = {
0x02, /* from tos_to_tid[2] = 0 */
0x00, /* from tos_to_tid[0] = 1 */
0x01, /* from tos_to_tid[1] = 2 */
0x03,
0x04,
0x05,
0x06,
0x07};
static u8 ac_to_tid[4][2] = { {1, 2}, {0, 3}, {4, 5}, {6, 7} }; static u8 ac_to_tid[4][2] = { {1, 2}, {0, 3}, {4, 5}, {6, 7} };
/* /*
...@@ -213,8 +198,9 @@ static void mwifiex_wmm_default_queue_priorities(struct mwifiex_private *priv) ...@@ -213,8 +198,9 @@ static void mwifiex_wmm_default_queue_priorities(struct mwifiex_private *priv)
* This function map ACs to TIDs. * This function map ACs to TIDs.
*/ */
static void static void
mwifiex_wmm_queue_priorities_tid(struct mwifiex_wmm_desc *wmm) mwifiex_wmm_queue_priorities_tid(struct mwifiex_private *priv)
{ {
struct mwifiex_wmm_desc *wmm = &priv->wmm;
u8 *queue_priority = wmm->queue_priority; u8 *queue_priority = wmm->queue_priority;
int i; int i;
...@@ -224,7 +210,7 @@ mwifiex_wmm_queue_priorities_tid(struct mwifiex_wmm_desc *wmm) ...@@ -224,7 +210,7 @@ mwifiex_wmm_queue_priorities_tid(struct mwifiex_wmm_desc *wmm)
} }
for (i = 0; i < MAX_NUM_TID; ++i) for (i = 0; i < MAX_NUM_TID; ++i)
tos_to_tid_inv[tos_to_tid[i]] = (u8)i; priv->tos_to_tid_inv[tos_to_tid[i]] = (u8)i;
atomic_set(&wmm->highest_queued_prio, HIGH_PRIO_TID); atomic_set(&wmm->highest_queued_prio, HIGH_PRIO_TID);
} }
...@@ -285,7 +271,7 @@ mwifiex_wmm_setup_queue_priorities(struct mwifiex_private *priv, ...@@ -285,7 +271,7 @@ mwifiex_wmm_setup_queue_priorities(struct mwifiex_private *priv,
} }
} }
mwifiex_wmm_queue_priorities_tid(&priv->wmm); mwifiex_wmm_queue_priorities_tid(priv);
} }
/* /*
...@@ -421,9 +407,11 @@ mwifiex_wmm_init(struct mwifiex_adapter *adapter) ...@@ -421,9 +407,11 @@ mwifiex_wmm_init(struct mwifiex_adapter *adapter)
continue; continue;
for (i = 0; i < MAX_NUM_TID; ++i) { for (i = 0; i < MAX_NUM_TID; ++i) {
priv->aggr_prio_tbl[i].amsdu = tos_to_tid_inv[i]; priv->aggr_prio_tbl[i].amsdu = priv->tos_to_tid_inv[i];
priv->aggr_prio_tbl[i].ampdu_ap = tos_to_tid_inv[i]; priv->aggr_prio_tbl[i].ampdu_ap =
priv->aggr_prio_tbl[i].ampdu_user = tos_to_tid_inv[i]; priv->tos_to_tid_inv[i];
priv->aggr_prio_tbl[i].ampdu_user =
priv->tos_to_tid_inv[i];
} }
priv->aggr_prio_tbl[6].amsdu priv->aggr_prio_tbl[6].amsdu
...@@ -683,9 +671,9 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_private *priv, ...@@ -683,9 +671,9 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_private *priv,
ra_list->total_pkt_count++; ra_list->total_pkt_count++;
if (atomic_read(&priv->wmm.highest_queued_prio) < if (atomic_read(&priv->wmm.highest_queued_prio) <
tos_to_tid_inv[tid_down]) priv->tos_to_tid_inv[tid_down])
atomic_set(&priv->wmm.highest_queued_prio, atomic_set(&priv->wmm.highest_queued_prio,
tos_to_tid_inv[tid_down]); priv->tos_to_tid_inv[tid_down]);
atomic_inc(&priv->wmm.tx_pkts_queued); atomic_inc(&priv->wmm.tx_pkts_queued);
......
...@@ -33,6 +33,21 @@ enum ieee_types_wmm_ecw_bitmasks { ...@@ -33,6 +33,21 @@ enum ieee_types_wmm_ecw_bitmasks {
static const u16 mwifiex_1d_to_wmm_queue[8] = { 1, 0, 0, 1, 2, 2, 3, 3 }; static const u16 mwifiex_1d_to_wmm_queue[8] = { 1, 0, 0, 1, 2, 2, 3, 3 };
/*
* This table inverses the tos_to_tid operation to get a priority
* which is in sequential order, and can be compared.
* Use this to compare the priority of two different TIDs.
*/
static const u8 tos_to_tid_inv[] = {
0x02, /* from tos_to_tid[2] = 0 */
0x00, /* from tos_to_tid[0] = 1 */
0x01, /* from tos_to_tid[1] = 2 */
0x03,
0x04,
0x05,
0x06,
0x07};
/* /*
* This function retrieves the TID of the given RA list. * This function retrieves the TID of the given RA list.
*/ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment