forked from Minki/linux
mwifiex: handle AMPDU supported check for AP interface
This patch fixes a bug where we were checking for AP's AMPDU param setting even when transmitting traffic to associated station. Patch adds provision to pass additional parameter ra_list pointer to function which checks if AMPDU is allowed. If current BSS type is AP, we check station's AMPDU params else we check AP's AMPDU params. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
79d9a54cf0
commit
eac4322729
@ -64,14 +64,28 @@ int mwifiex_cmd_amsdu_aggr_ctrl(struct host_cmd_ds_command *cmd,
|
||||
struct mwifiex_ds_11n_amsdu_aggr_ctrl *aa_ctrl);
|
||||
void mwifiex_del_tx_ba_stream_tbl_by_ra(struct mwifiex_private *priv, u8 *ra);
|
||||
|
||||
/*
|
||||
* This function checks whether AMPDU is allowed or not for a particular TID.
|
||||
*/
|
||||
static inline u8
|
||||
mwifiex_is_ampdu_allowed(struct mwifiex_private *priv, int tid)
|
||||
mwifiex_is_station_ampdu_allowed(struct mwifiex_private *priv,
|
||||
struct mwifiex_ra_list_tbl *ptr, int tid)
|
||||
{
|
||||
return ((priv->aggr_prio_tbl[tid].ampdu_ap != BA_STREAM_NOT_ALLOWED)
|
||||
? true : false);
|
||||
struct mwifiex_sta_node *node = mwifiex_get_sta_entry(priv, ptr->ra);
|
||||
|
||||
if (unlikely(!node))
|
||||
return false;
|
||||
|
||||
return (node->ampdu_sta[tid] != BA_STREAM_NOT_ALLOWED) ? true : false;
|
||||
}
|
||||
|
||||
/* This function checks whether AMPDU is allowed or not for a particular TID. */
|
||||
static inline u8
|
||||
mwifiex_is_ampdu_allowed(struct mwifiex_private *priv,
|
||||
struct mwifiex_ra_list_tbl *ptr, int tid)
|
||||
{
|
||||
if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP)
|
||||
return mwifiex_is_station_ampdu_allowed(priv, ptr, tid);
|
||||
else
|
||||
return (priv->aggr_prio_tbl[tid].ampdu_ap !=
|
||||
BA_STREAM_NOT_ALLOWED) ? true : false;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1226,7 +1226,7 @@ mwifiex_dequeue_tx_packet(struct mwifiex_adapter *adapter)
|
||||
/* ra_list_spinlock has been freed in
|
||||
mwifiex_send_single_packet() */
|
||||
} else {
|
||||
if (mwifiex_is_ampdu_allowed(priv, tid) &&
|
||||
if (mwifiex_is_ampdu_allowed(priv, ptr, tid) &&
|
||||
ptr->ba_pkt_count > ptr->ba_packet_thr) {
|
||||
if (mwifiex_space_avail_for_new_ba_stream(adapter)) {
|
||||
mwifiex_create_ba_tbl(priv, ptr->ra, tid,
|
||||
|
Loading…
Reference in New Issue
Block a user