aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAvinash Patil <patila@marvell.com>2013-03-27 22:10:31 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-04-01 16:06:49 -0400
commit04abc0a330327c69dfe1518fb2f5a8b4749b0f37 (patch)
tree8006a89ec05fb4ddbeb1e4b8a3a5f2c218018e59 /drivers
parent9a574cd67a447059f9c14bbef47873315d7f7b35 (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.c22
-rw-r--r--drivers/net/wireless/mwifiex/decl.h7
-rw-r--r--drivers/net/wireless/mwifiex/main.h1
-rw-r--r--drivers/net/wireless/mwifiex/wmm.c5
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 */
686void 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
924mwifiex_set_wmm_params(struct mwifiex_private *priv, 924mwifiex_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);
927void 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);