aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorAmitkumar Karwar <akarwar@marvell.com>2014-04-14 18:32:50 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-04-22 15:06:29 -0400
commite1aa93a47ddd13e30f95684f96ff90729b163f64 (patch)
treee3151b68b49833da56830baebf78d01d4ce68b5e /drivers/net/wireless
parent16cf6b804d37e8a0c6e36965d3a2c661b5116141 (diff)
mwifiex: increase SDIO multiport aggregation buffer sizes
Currently Tx and Rx buffer sizes are 8K and 16K respectively for all chipsets. We will change them to 32K for SD8897 and 16K for older chipsets. SD8897 chipset has more SDIO data ports than older chipsets. This patch will help to improve throughput numbers. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/mwifiex/sdio.c6
-rw-r--r--drivers/net/wireless/mwifiex/sdio.h18
2 files changed, 18 insertions, 6 deletions
diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c
index d206f04d4994..accceed72af8 100644
--- a/drivers/net/wireless/mwifiex/sdio.c
+++ b/drivers/net/wireless/mwifiex/sdio.c
@@ -85,6 +85,8 @@ mwifiex_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id)
85 card->supports_sdio_new_mode = data->supports_sdio_new_mode; 85 card->supports_sdio_new_mode = data->supports_sdio_new_mode;
86 card->has_control_mask = data->has_control_mask; 86 card->has_control_mask = data->has_control_mask;
87 card->tx_buf_size = data->tx_buf_size; 87 card->tx_buf_size = data->tx_buf_size;
88 card->mp_tx_agg_buf_size = data->mp_tx_agg_buf_size;
89 card->mp_rx_agg_buf_size = data->mp_rx_agg_buf_size;
88 } 90 }
89 91
90 sdio_claim_host(func); 92 sdio_claim_host(func);
@@ -1842,8 +1844,8 @@ static int mwifiex_init_sdio(struct mwifiex_adapter *adapter)
1842 card->mpa_rx.len_arr = kzalloc(sizeof(*card->mpa_rx.len_arr) * 1844 card->mpa_rx.len_arr = kzalloc(sizeof(*card->mpa_rx.len_arr) *
1843 card->mp_agg_pkt_limit, GFP_KERNEL); 1845 card->mp_agg_pkt_limit, GFP_KERNEL);
1844 ret = mwifiex_alloc_sdio_mpa_buffers(adapter, 1846 ret = mwifiex_alloc_sdio_mpa_buffers(adapter,
1845 SDIO_MP_TX_AGGR_DEF_BUF_SIZE, 1847 card->mp_tx_agg_buf_size,
1846 SDIO_MP_RX_AGGR_DEF_BUF_SIZE); 1848 card->mp_rx_agg_buf_size);
1847 if (ret) { 1849 if (ret) {
1848 dev_err(adapter->dev, "failed to alloc sdio mp-a buffers\n"); 1850 dev_err(adapter->dev, "failed to alloc sdio mp-a buffers\n");
1849 kfree(card->mp_regs); 1851 kfree(card->mp_regs);
diff --git a/drivers/net/wireless/mwifiex/sdio.h b/drivers/net/wireless/mwifiex/sdio.h
index c71201b2e2a3..6eea30b43ed7 100644
--- a/drivers/net/wireless/mwifiex/sdio.h
+++ b/drivers/net/wireless/mwifiex/sdio.h
@@ -64,10 +64,8 @@
64#define UP_LD_CMD_PORT_HOST_INT_STATUS (0x40U) 64#define UP_LD_CMD_PORT_HOST_INT_STATUS (0x40U)
65#define DN_LD_CMD_PORT_HOST_INT_STATUS (0x80U) 65#define DN_LD_CMD_PORT_HOST_INT_STATUS (0x80U)
66 66
67#define SDIO_MP_TX_AGGR_DEF_BUF_SIZE (8192) /* 8K */ 67#define MWIFIEX_MP_AGGR_BUF_SIZE_16K (16384)
68 68#define MWIFIEX_MP_AGGR_BUF_SIZE_32K (32768)
69/* Multi port RX aggregation buffer size */
70#define SDIO_MP_RX_AGGR_DEF_BUF_SIZE (16384) /* 16K */
71 69
72/* Misc. Config Register : Auto Re-enable interrupts */ 70/* Misc. Config Register : Auto Re-enable interrupts */
73#define AUTO_RE_ENABLE_INT BIT(4) 71#define AUTO_RE_ENABLE_INT BIT(4)
@@ -234,6 +232,8 @@ struct sdio_mmc_card {
234 bool supports_sdio_new_mode; 232 bool supports_sdio_new_mode;
235 bool has_control_mask; 233 bool has_control_mask;
236 u16 tx_buf_size; 234 u16 tx_buf_size;
235 u32 mp_tx_agg_buf_size;
236 u32 mp_rx_agg_buf_size;
237 237
238 u32 mp_rd_bitmap; 238 u32 mp_rd_bitmap;
239 u32 mp_wr_bitmap; 239 u32 mp_wr_bitmap;
@@ -258,6 +258,8 @@ struct mwifiex_sdio_device {
258 bool supports_sdio_new_mode; 258 bool supports_sdio_new_mode;
259 bool has_control_mask; 259 bool has_control_mask;
260 u16 tx_buf_size; 260 u16 tx_buf_size;
261 u32 mp_tx_agg_buf_size;
262 u32 mp_rx_agg_buf_size;
261}; 263};
262 264
263static const struct mwifiex_sdio_card_reg mwifiex_reg_sd87xx = { 265static const struct mwifiex_sdio_card_reg mwifiex_reg_sd87xx = {
@@ -315,6 +317,8 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8786 = {
315 .supports_sdio_new_mode = false, 317 .supports_sdio_new_mode = false,
316 .has_control_mask = true, 318 .has_control_mask = true,
317 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, 319 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K,
320 .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
321 .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
318}; 322};
319 323
320static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = { 324static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = {
@@ -325,6 +329,8 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = {
325 .supports_sdio_new_mode = false, 329 .supports_sdio_new_mode = false,
326 .has_control_mask = true, 330 .has_control_mask = true,
327 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, 331 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K,
332 .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
333 .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
328}; 334};
329 335
330static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = { 336static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = {
@@ -335,6 +341,8 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = {
335 .supports_sdio_new_mode = false, 341 .supports_sdio_new_mode = false,
336 .has_control_mask = true, 342 .has_control_mask = true,
337 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, 343 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K,
344 .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
345 .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
338}; 346};
339 347
340static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = { 348static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = {
@@ -345,6 +353,8 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = {
345 .supports_sdio_new_mode = true, 353 .supports_sdio_new_mode = true,
346 .has_control_mask = false, 354 .has_control_mask = false,
347 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K, 355 .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K,
356 .mp_tx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K,
357 .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K,
348}; 358};
349 359
350/* 360/*