diff options
author | Avinash Patil <patila@marvell.com> | 2015-01-23 06:39:19 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-01-27 13:18:20 -0500 |
commit | 1fe192d8d63f32daf83c49a29c3acd9c062164ec (patch) | |
tree | 7ff29e3dc4a313d32770885790313f613b1bc079 | |
parent | eaa3d9fa08c55555aedd967d4bfe7fe03c41cfaf (diff) |
mwifiex: selectively choose ext_scan support
Some devices do not support extended scan.
This patch adds support to enble ext_scan selectively.
For SD/PCIe interfaces, deefine ext_scan_support as part of
card structure and use it to initialize ext_scan in adapter
during registering device. For USB interfaces, we initialize
ext_scan during register_dev handler.
Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r-- | drivers/net/wireless/mwifiex/init.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/pcie.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/pcie.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/sdio.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/sdio.h | 8 | ||||
-rw-r--r-- | drivers/net/wireless/mwifiex/usb.c | 3 |
6 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c index b115e0f94dd7..8004d140ee01 100644 --- a/drivers/net/wireless/mwifiex/init.c +++ b/drivers/net/wireless/mwifiex/init.c | |||
@@ -294,7 +294,7 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter) | |||
294 | memset(&adapter->arp_filter, 0, sizeof(adapter->arp_filter)); | 294 | memset(&adapter->arp_filter, 0, sizeof(adapter->arp_filter)); |
295 | adapter->arp_filter_size = 0; | 295 | adapter->arp_filter_size = 0; |
296 | adapter->max_mgmt_ie_index = MAX_MGMT_IE_INDEX; | 296 | adapter->max_mgmt_ie_index = MAX_MGMT_IE_INDEX; |
297 | adapter->ext_scan = true; | 297 | adapter->ext_scan = false; |
298 | adapter->key_api_major_ver = 0; | 298 | adapter->key_api_major_ver = 0; |
299 | adapter->key_api_minor_ver = 0; | 299 | adapter->key_api_minor_ver = 0; |
300 | 300 | ||
diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c index a460b0e6a151..a5828da59365 100644 --- a/drivers/net/wireless/mwifiex/pcie.c +++ b/drivers/net/wireless/mwifiex/pcie.c | |||
@@ -204,6 +204,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, | |||
204 | card->pcie.blksz_fw_dl = data->blksz_fw_dl; | 204 | card->pcie.blksz_fw_dl = data->blksz_fw_dl; |
205 | card->pcie.tx_buf_size = data->tx_buf_size; | 205 | card->pcie.tx_buf_size = data->tx_buf_size; |
206 | card->pcie.supports_fw_dump = data->supports_fw_dump; | 206 | card->pcie.supports_fw_dump = data->supports_fw_dump; |
207 | card->pcie.can_ext_scan = data->can_ext_scan; | ||
207 | } | 208 | } |
208 | 209 | ||
209 | if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, | 210 | if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, |
@@ -2563,6 +2564,7 @@ static int mwifiex_register_dev(struct mwifiex_adapter *adapter) | |||
2563 | adapter->mem_type_mapping_tbl = mem_type_mapping_tbl; | 2564 | adapter->mem_type_mapping_tbl = mem_type_mapping_tbl; |
2564 | adapter->num_mem_types = ARRAY_SIZE(mem_type_mapping_tbl); | 2565 | adapter->num_mem_types = ARRAY_SIZE(mem_type_mapping_tbl); |
2565 | strcpy(adapter->fw_name, card->pcie.firmware); | 2566 | strcpy(adapter->fw_name, card->pcie.firmware); |
2567 | adapter->ext_scan = card->pcie.can_ext_scan; | ||
2566 | 2568 | ||
2567 | return 0; | 2569 | return 0; |
2568 | } | 2570 | } |
diff --git a/drivers/net/wireless/mwifiex/pcie.h b/drivers/net/wireless/mwifiex/pcie.h index 200e8b0cb582..666d40e9dbc3 100644 --- a/drivers/net/wireless/mwifiex/pcie.h +++ b/drivers/net/wireless/mwifiex/pcie.h | |||
@@ -206,6 +206,7 @@ struct mwifiex_pcie_device { | |||
206 | u16 blksz_fw_dl; | 206 | u16 blksz_fw_dl; |
207 | u16 tx_buf_size; | 207 | u16 tx_buf_size; |
208 | bool supports_fw_dump; | 208 | bool supports_fw_dump; |
209 | bool can_ext_scan; | ||
209 | }; | 210 | }; |
210 | 211 | ||
211 | static const struct mwifiex_pcie_device mwifiex_pcie8766 = { | 212 | static const struct mwifiex_pcie_device mwifiex_pcie8766 = { |
@@ -214,6 +215,7 @@ static const struct mwifiex_pcie_device mwifiex_pcie8766 = { | |||
214 | .blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD, | 215 | .blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD, |
215 | .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, | 216 | .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, |
216 | .supports_fw_dump = false, | 217 | .supports_fw_dump = false, |
218 | .can_ext_scan = true, | ||
217 | }; | 219 | }; |
218 | 220 | ||
219 | static const struct mwifiex_pcie_device mwifiex_pcie8897 = { | 221 | static const struct mwifiex_pcie_device mwifiex_pcie8897 = { |
@@ -222,6 +224,7 @@ static const struct mwifiex_pcie_device mwifiex_pcie8897 = { | |||
222 | .blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD, | 224 | .blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD, |
223 | .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K, | 225 | .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K, |
224 | .supports_fw_dump = true, | 226 | .supports_fw_dump = true, |
227 | .can_ext_scan = true, | ||
225 | }; | 228 | }; |
226 | 229 | ||
227 | struct mwifiex_evt_buf_desc { | 230 | struct mwifiex_evt_buf_desc { |
diff --git a/drivers/net/wireless/mwifiex/sdio.c b/drivers/net/wireless/mwifiex/sdio.c index cee107f36bc9..91e36cda9543 100644 --- a/drivers/net/wireless/mwifiex/sdio.c +++ b/drivers/net/wireless/mwifiex/sdio.c | |||
@@ -107,6 +107,7 @@ mwifiex_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) | |||
107 | card->mp_rx_agg_buf_size = data->mp_rx_agg_buf_size; | 107 | card->mp_rx_agg_buf_size = data->mp_rx_agg_buf_size; |
108 | card->supports_fw_dump = data->supports_fw_dump; | 108 | card->supports_fw_dump = data->supports_fw_dump; |
109 | card->auto_tdls = data->auto_tdls; | 109 | card->auto_tdls = data->auto_tdls; |
110 | card->can_ext_scan = data->can_ext_scan; | ||
110 | } | 111 | } |
111 | 112 | ||
112 | sdio_claim_host(func); | 113 | sdio_claim_host(func); |
@@ -1887,6 +1888,7 @@ static int mwifiex_init_sdio(struct mwifiex_adapter *adapter) | |||
1887 | } | 1888 | } |
1888 | 1889 | ||
1889 | adapter->auto_tdls = card->auto_tdls; | 1890 | adapter->auto_tdls = card->auto_tdls; |
1891 | adapter->ext_scan = card->can_ext_scan; | ||
1890 | return ret; | 1892 | return ret; |
1891 | } | 1893 | } |
1892 | 1894 | ||
diff --git a/drivers/net/wireless/mwifiex/sdio.h b/drivers/net/wireless/mwifiex/sdio.h index a4bb0dbbe7b3..957cca246618 100644 --- a/drivers/net/wireless/mwifiex/sdio.h +++ b/drivers/net/wireless/mwifiex/sdio.h | |||
@@ -256,6 +256,7 @@ struct sdio_mmc_card { | |||
256 | 256 | ||
257 | u8 *mp_regs; | 257 | u8 *mp_regs; |
258 | u8 auto_tdls; | 258 | u8 auto_tdls; |
259 | bool can_ext_scan; | ||
259 | 260 | ||
260 | struct mwifiex_sdio_mpa_tx mpa_tx; | 261 | struct mwifiex_sdio_mpa_tx mpa_tx; |
261 | struct mwifiex_sdio_mpa_rx mpa_rx; | 262 | struct mwifiex_sdio_mpa_rx mpa_rx; |
@@ -273,6 +274,7 @@ struct mwifiex_sdio_device { | |||
273 | u32 mp_tx_agg_buf_size; | 274 | u32 mp_tx_agg_buf_size; |
274 | u32 mp_rx_agg_buf_size; | 275 | u32 mp_rx_agg_buf_size; |
275 | u8 auto_tdls; | 276 | u8 auto_tdls; |
277 | bool can_ext_scan; | ||
276 | }; | 278 | }; |
277 | 279 | ||
278 | static const struct mwifiex_sdio_card_reg mwifiex_reg_sd87xx = { | 280 | static const struct mwifiex_sdio_card_reg mwifiex_reg_sd87xx = { |
@@ -417,6 +419,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8786 = { | |||
417 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, | 419 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
418 | .supports_fw_dump = false, | 420 | .supports_fw_dump = false, |
419 | .auto_tdls = false, | 421 | .auto_tdls = false, |
422 | .can_ext_scan = false, | ||
420 | }; | 423 | }; |
421 | 424 | ||
422 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = { | 425 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = { |
@@ -431,6 +434,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = { | |||
431 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, | 434 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
432 | .supports_fw_dump = false, | 435 | .supports_fw_dump = false, |
433 | .auto_tdls = false, | 436 | .auto_tdls = false, |
437 | .can_ext_scan = true, | ||
434 | }; | 438 | }; |
435 | 439 | ||
436 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = { | 440 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = { |
@@ -445,6 +449,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = { | |||
445 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, | 449 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
446 | .supports_fw_dump = false, | 450 | .supports_fw_dump = false, |
447 | .auto_tdls = false, | 451 | .auto_tdls = false, |
452 | .can_ext_scan = true, | ||
448 | }; | 453 | }; |
449 | 454 | ||
450 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = { | 455 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = { |
@@ -459,6 +464,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = { | |||
459 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, | 464 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, |
460 | .supports_fw_dump = true, | 465 | .supports_fw_dump = true, |
461 | .auto_tdls = false, | 466 | .auto_tdls = false, |
467 | .can_ext_scan = true, | ||
462 | }; | 468 | }; |
463 | 469 | ||
464 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = { | 470 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = { |
@@ -473,6 +479,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = { | |||
473 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, | 479 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, |
474 | .supports_fw_dump = false, | 480 | .supports_fw_dump = false, |
475 | .auto_tdls = true, | 481 | .auto_tdls = true, |
482 | .can_ext_scan = true, | ||
476 | }; | 483 | }; |
477 | 484 | ||
478 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = { | 485 | static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = { |
@@ -487,6 +494,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = { | |||
487 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, | 494 | .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, |
488 | .supports_fw_dump = false, | 495 | .supports_fw_dump = false, |
489 | .auto_tdls = false, | 496 | .auto_tdls = false, |
497 | .can_ext_scan = true, | ||
490 | }; | 498 | }; |
491 | 499 | ||
492 | /* | 500 | /* |
diff --git a/drivers/net/wireless/mwifiex/usb.c b/drivers/net/wireless/mwifiex/usb.c index 50517b78d965..223873022ffe 100644 --- a/drivers/net/wireless/mwifiex/usb.c +++ b/drivers/net/wireless/mwifiex/usb.c | |||
@@ -799,16 +799,19 @@ static int mwifiex_register_dev(struct mwifiex_adapter *adapter) | |||
799 | case USB8897_PID_2: | 799 | case USB8897_PID_2: |
800 | adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K; | 800 | adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K; |
801 | strcpy(adapter->fw_name, USB8897_DEFAULT_FW_NAME); | 801 | strcpy(adapter->fw_name, USB8897_DEFAULT_FW_NAME); |
802 | adapter->ext_scan = true; | ||
802 | break; | 803 | break; |
803 | case USB8766_PID_1: | 804 | case USB8766_PID_1: |
804 | case USB8766_PID_2: | 805 | case USB8766_PID_2: |
805 | adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; | 806 | adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; |
806 | strcpy(adapter->fw_name, USB8766_DEFAULT_FW_NAME); | 807 | strcpy(adapter->fw_name, USB8766_DEFAULT_FW_NAME); |
808 | adapter->ext_scan = true; | ||
807 | break; | 809 | break; |
808 | case USB8801_PID_1: | 810 | case USB8801_PID_1: |
809 | case USB8801_PID_2: | 811 | case USB8801_PID_2: |
810 | adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; | 812 | adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; |
811 | strcpy(adapter->fw_name, USB8801_DEFAULT_FW_NAME); | 813 | strcpy(adapter->fw_name, USB8801_DEFAULT_FW_NAME); |
814 | adapter->ext_scan = false; | ||
812 | break; | 815 | break; |
813 | case USB8797_PID_1: | 816 | case USB8797_PID_1: |
814 | case USB8797_PID_2: | 817 | case USB8797_PID_2: |