diff options
author | Avinash Patil <patila@marvell.com> | 2013-03-27 22:10:31 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-04-01 16:06:49 -0400 |
commit | 04abc0a330327c69dfe1518fb2f5a8b4749b0f37 (patch) | |
tree | 8006a89ec05fb4ddbeb1e4b8a3a5f2c218018e59 /drivers | |
parent | 9a574cd67a447059f9c14bbef47873315d7f7b35 (diff) |
mwifiex: change default tx/rx win_size for BA setup
This patch fixes an issue where RX throughput values observed
were substantially lower than TX counterparts for PCIe8897 STA.
PCIe8897 supports larger rx_win_size. After changing these values
we see big improvement for TX and RX throughput values.
Different tx_win_size and rx_win_size are used for AP mode.
All BA setup related initialization has been moved to separate
function.
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Sagar Bijwe <bsagar@marvell.com>
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/mwifiex/11n.c | 22 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/decl.h | 7 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/main.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/wmm.c | 5 |
4 files changed, 29 insertions, 6 deletions
diff --git a/drivers/net/wireless/mwifiex/11n.c b/drivers/net/wireless/mwifiex/11n.c index 45f19716687e..41e9d25a2d8e 100644 --- a/drivers/net/wireless/mwifiex/11n.c +++ b/drivers/net/wireless/mwifiex/11n.c | |||
@@ -679,3 +679,25 @@ void mwifiex_del_tx_ba_stream_tbl_by_ra(struct mwifiex_private *priv, u8 *ra) | |||
679 | 679 | ||
680 | return; | 680 | return; |
681 | } | 681 | } |
682 | |||
683 | /* This function initializes the BlockACK setup information for given | ||
684 | * mwifiex_private structure. | ||
685 | */ | ||
686 | void mwifiex_set_ba_params(struct mwifiex_private *priv) | ||
687 | { | ||
688 | priv->add_ba_param.timeout = MWIFIEX_DEFAULT_BLOCK_ACK_TIMEOUT; | ||
689 | |||
690 | if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) { | ||
691 | priv->add_ba_param.tx_win_size = | ||
692 | MWIFIEX_UAP_AMPDU_DEF_TXWINSIZE; | ||
693 | priv->add_ba_param.rx_win_size = | ||
694 | MWIFIEX_UAP_AMPDU_DEF_RXWINSIZE; | ||
695 | } else { | ||
696 | priv->add_ba_param.tx_win_size = | ||
697 | MWIFIEX_STA_AMPDU_DEF_TXWINSIZE; | ||
698 | priv->add_ba_param.rx_win_size = | ||
699 | MWIFIEX_STA_AMPDU_DEF_RXWINSIZE; | ||
700 | } | ||
701 | |||
702 | return; | ||
703 | } | ||
diff --git a/drivers/net/wireless/mwifiex/decl.h b/drivers/net/wireless/mwifiex/decl.h index e8a569aaa2e8..2af2c7ce3ad7 100644 --- a/drivers/net/wireless/mwifiex/decl.h +++ b/drivers/net/wireless/mwifiex/decl.h | |||
@@ -41,8 +41,11 @@ | |||
41 | #define MWIFIEX_MAX_TX_BASTREAM_SUPPORTED 2 | 41 | #define MWIFIEX_MAX_TX_BASTREAM_SUPPORTED 2 |
42 | #define MWIFIEX_MAX_RX_BASTREAM_SUPPORTED 16 | 42 | #define MWIFIEX_MAX_RX_BASTREAM_SUPPORTED 16 |
43 | 43 | ||
44 | #define MWIFIEX_AMPDU_DEF_TXWINSIZE 32 | 44 | #define MWIFIEX_STA_AMPDU_DEF_TXWINSIZE 16 |
45 | #define MWIFIEX_AMPDU_DEF_RXWINSIZE 16 | 45 | #define MWIFIEX_STA_AMPDU_DEF_RXWINSIZE 32 |
46 | #define MWIFIEX_UAP_AMPDU_DEF_TXWINSIZE 32 | ||
47 | #define MWIFIEX_UAP_AMPDU_DEF_RXWINSIZE 16 | ||
48 | |||
46 | #define MWIFIEX_DEFAULT_BLOCK_ACK_TIMEOUT 0xffff | 49 | #define MWIFIEX_DEFAULT_BLOCK_ACK_TIMEOUT 0xffff |
47 | 50 | ||
48 | #define MWIFIEX_RATE_BITMAP_MCS0 32 | 51 | #define MWIFIEX_RATE_BITMAP_MCS0 32 |
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h index 535595eeb5c5..d03299808ffc 100644 --- a/drivers/net/wireless/mwifiex/main.h +++ b/drivers/net/wireless/mwifiex/main.h | |||
@@ -924,6 +924,7 @@ void | |||
924 | mwifiex_set_wmm_params(struct mwifiex_private *priv, | 924 | mwifiex_set_wmm_params(struct mwifiex_private *priv, |
925 | struct mwifiex_uap_bss_param *bss_cfg, | 925 | struct mwifiex_uap_bss_param *bss_cfg, |
926 | struct cfg80211_ap_settings *params); | 926 | struct cfg80211_ap_settings *params); |
927 | void mwifiex_set_ba_params(struct mwifiex_private *priv); | ||
927 | 928 | ||
928 | /* | 929 | /* |
929 | * This function checks if the queuing is RA based or not. | 930 | * This function checks if the queuing is RA based or not. |
diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c index 32adc878041d..3ddae52ef88d 100644 --- a/drivers/net/wireless/mwifiex/wmm.c +++ b/drivers/net/wireless/mwifiex/wmm.c | |||
@@ -436,10 +436,7 @@ mwifiex_wmm_init(struct mwifiex_adapter *adapter) | |||
436 | = priv->aggr_prio_tbl[7].ampdu_user | 436 | = priv->aggr_prio_tbl[7].ampdu_user |
437 | = BA_STREAM_NOT_ALLOWED; | 437 | = BA_STREAM_NOT_ALLOWED; |
438 | 438 | ||
439 | priv->add_ba_param.timeout = MWIFIEX_DEFAULT_BLOCK_ACK_TIMEOUT; | 439 | mwifiex_set_ba_params(priv); |
440 | priv->add_ba_param.tx_win_size = MWIFIEX_AMPDU_DEF_TXWINSIZE; | ||
441 | priv->add_ba_param.rx_win_size = MWIFIEX_AMPDU_DEF_RXWINSIZE; | ||
442 | |||
443 | mwifiex_reset_11n_rx_seq_num(priv); | 440 | mwifiex_reset_11n_rx_seq_num(priv); |
444 | 441 | ||
445 | atomic_set(&priv->wmm.tx_pkts_queued, 0); | 442 | atomic_set(&priv->wmm.tx_pkts_queued, 0); |