Commit 1fe192d8 authored by Avinash Patil's avatar Avinash Patil Committed by Kalle Valo

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: default avatarYogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: default avatarAvinash Patil <patila@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent eaa3d9fa
...@@ -294,7 +294,7 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter) ...@@ -294,7 +294,7 @@ static void mwifiex_init_adapter(struct mwifiex_adapter *adapter)
memset(&adapter->arp_filter, 0, sizeof(adapter->arp_filter)); memset(&adapter->arp_filter, 0, sizeof(adapter->arp_filter));
adapter->arp_filter_size = 0; adapter->arp_filter_size = 0;
adapter->max_mgmt_ie_index = MAX_MGMT_IE_INDEX; adapter->max_mgmt_ie_index = MAX_MGMT_IE_INDEX;
adapter->ext_scan = true; adapter->ext_scan = false;
adapter->key_api_major_ver = 0; adapter->key_api_major_ver = 0;
adapter->key_api_minor_ver = 0; adapter->key_api_minor_ver = 0;
......
...@@ -204,6 +204,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev, ...@@ -204,6 +204,7 @@ static int mwifiex_pcie_probe(struct pci_dev *pdev,
card->pcie.blksz_fw_dl = data->blksz_fw_dl; card->pcie.blksz_fw_dl = data->blksz_fw_dl;
card->pcie.tx_buf_size = data->tx_buf_size; card->pcie.tx_buf_size = data->tx_buf_size;
card->pcie.supports_fw_dump = data->supports_fw_dump; card->pcie.supports_fw_dump = data->supports_fw_dump;
card->pcie.can_ext_scan = data->can_ext_scan;
} }
if (mwifiex_add_card(card, &add_remove_card_sem, &pcie_ops, 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,6 +2564,7 @@ static int mwifiex_register_dev(struct mwifiex_adapter *adapter)
adapter->mem_type_mapping_tbl = mem_type_mapping_tbl; adapter->mem_type_mapping_tbl = mem_type_mapping_tbl;
adapter->num_mem_types = ARRAY_SIZE(mem_type_mapping_tbl); adapter->num_mem_types = ARRAY_SIZE(mem_type_mapping_tbl);
strcpy(adapter->fw_name, card->pcie.firmware); strcpy(adapter->fw_name, card->pcie.firmware);
adapter->ext_scan = card->pcie.can_ext_scan;
return 0; return 0;
} }
......
...@@ -206,6 +206,7 @@ struct mwifiex_pcie_device { ...@@ -206,6 +206,7 @@ struct mwifiex_pcie_device {
u16 blksz_fw_dl; u16 blksz_fw_dl;
u16 tx_buf_size; u16 tx_buf_size;
bool supports_fw_dump; bool supports_fw_dump;
bool can_ext_scan;
}; };
static const struct mwifiex_pcie_device mwifiex_pcie8766 = { static const struct mwifiex_pcie_device mwifiex_pcie8766 = {
...@@ -214,6 +215,7 @@ static const struct mwifiex_pcie_device mwifiex_pcie8766 = { ...@@ -214,6 +215,7 @@ static const struct mwifiex_pcie_device mwifiex_pcie8766 = {
.blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD, .blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD,
.tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K, .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K,
.supports_fw_dump = false, .supports_fw_dump = false,
.can_ext_scan = true,
}; };
static const struct mwifiex_pcie_device mwifiex_pcie8897 = { static const struct mwifiex_pcie_device mwifiex_pcie8897 = {
...@@ -222,6 +224,7 @@ static const struct mwifiex_pcie_device mwifiex_pcie8897 = { ...@@ -222,6 +224,7 @@ static const struct mwifiex_pcie_device mwifiex_pcie8897 = {
.blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD, .blksz_fw_dl = MWIFIEX_PCIE_BLOCK_SIZE_FW_DNLD,
.tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K, .tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K,
.supports_fw_dump = true, .supports_fw_dump = true,
.can_ext_scan = true,
}; };
struct mwifiex_evt_buf_desc { struct mwifiex_evt_buf_desc {
......
...@@ -107,6 +107,7 @@ mwifiex_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) ...@@ -107,6 +107,7 @@ mwifiex_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id)
card->mp_rx_agg_buf_size = data->mp_rx_agg_buf_size; card->mp_rx_agg_buf_size = data->mp_rx_agg_buf_size;
card->supports_fw_dump = data->supports_fw_dump; card->supports_fw_dump = data->supports_fw_dump;
card->auto_tdls = data->auto_tdls; card->auto_tdls = data->auto_tdls;
card->can_ext_scan = data->can_ext_scan;
} }
sdio_claim_host(func); sdio_claim_host(func);
...@@ -1887,6 +1888,7 @@ static int mwifiex_init_sdio(struct mwifiex_adapter *adapter) ...@@ -1887,6 +1888,7 @@ static int mwifiex_init_sdio(struct mwifiex_adapter *adapter)
} }
adapter->auto_tdls = card->auto_tdls; adapter->auto_tdls = card->auto_tdls;
adapter->ext_scan = card->can_ext_scan;
return ret; return ret;
} }
......
...@@ -256,6 +256,7 @@ struct sdio_mmc_card { ...@@ -256,6 +256,7 @@ struct sdio_mmc_card {
u8 *mp_regs; u8 *mp_regs;
u8 auto_tdls; u8 auto_tdls;
bool can_ext_scan;
struct mwifiex_sdio_mpa_tx mpa_tx; struct mwifiex_sdio_mpa_tx mpa_tx;
struct mwifiex_sdio_mpa_rx mpa_rx; struct mwifiex_sdio_mpa_rx mpa_rx;
...@@ -273,6 +274,7 @@ struct mwifiex_sdio_device { ...@@ -273,6 +274,7 @@ struct mwifiex_sdio_device {
u32 mp_tx_agg_buf_size; u32 mp_tx_agg_buf_size;
u32 mp_rx_agg_buf_size; u32 mp_rx_agg_buf_size;
u8 auto_tdls; u8 auto_tdls;
bool can_ext_scan;
}; };
static const struct mwifiex_sdio_card_reg mwifiex_reg_sd87xx = { static const struct mwifiex_sdio_card_reg mwifiex_reg_sd87xx = {
...@@ -417,6 +419,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8786 = { ...@@ -417,6 +419,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8786 = {
.mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
.supports_fw_dump = false, .supports_fw_dump = false,
.auto_tdls = false, .auto_tdls = false,
.can_ext_scan = false,
}; };
static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = { static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = {
...@@ -431,6 +434,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = { ...@@ -431,6 +434,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8787 = {
.mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
.supports_fw_dump = false, .supports_fw_dump = false,
.auto_tdls = false, .auto_tdls = false,
.can_ext_scan = true,
}; };
static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = { static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = {
...@@ -445,6 +449,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = { ...@@ -445,6 +449,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8797 = {
.mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
.supports_fw_dump = false, .supports_fw_dump = false,
.auto_tdls = false, .auto_tdls = false,
.can_ext_scan = true,
}; };
static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = { static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = {
...@@ -459,6 +464,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = { ...@@ -459,6 +464,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8897 = {
.mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K,
.supports_fw_dump = true, .supports_fw_dump = true,
.auto_tdls = false, .auto_tdls = false,
.can_ext_scan = true,
}; };
static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = { static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = {
...@@ -473,6 +479,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = { ...@@ -473,6 +479,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8887 = {
.mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K, .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_32K,
.supports_fw_dump = false, .supports_fw_dump = false,
.auto_tdls = true, .auto_tdls = true,
.can_ext_scan = true,
}; };
static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = { static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = {
...@@ -487,6 +494,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = { ...@@ -487,6 +494,7 @@ static const struct mwifiex_sdio_device mwifiex_sdio_sd8801 = {
.mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K, .mp_rx_agg_buf_size = MWIFIEX_MP_AGGR_BUF_SIZE_16K,
.supports_fw_dump = false, .supports_fw_dump = false,
.auto_tdls = false, .auto_tdls = false,
.can_ext_scan = true,
}; };
/* /*
......
...@@ -799,16 +799,19 @@ static int mwifiex_register_dev(struct mwifiex_adapter *adapter) ...@@ -799,16 +799,19 @@ static int mwifiex_register_dev(struct mwifiex_adapter *adapter)
case USB8897_PID_2: case USB8897_PID_2:
adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K; adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_4K;
strcpy(adapter->fw_name, USB8897_DEFAULT_FW_NAME); strcpy(adapter->fw_name, USB8897_DEFAULT_FW_NAME);
adapter->ext_scan = true;
break; break;
case USB8766_PID_1: case USB8766_PID_1:
case USB8766_PID_2: case USB8766_PID_2:
adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K;
strcpy(adapter->fw_name, USB8766_DEFAULT_FW_NAME); strcpy(adapter->fw_name, USB8766_DEFAULT_FW_NAME);
adapter->ext_scan = true;
break; break;
case USB8801_PID_1: case USB8801_PID_1:
case USB8801_PID_2: case USB8801_PID_2:
adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K; adapter->tx_buf_size = MWIFIEX_TX_DATA_BUF_SIZE_2K;
strcpy(adapter->fw_name, USB8801_DEFAULT_FW_NAME); strcpy(adapter->fw_name, USB8801_DEFAULT_FW_NAME);
adapter->ext_scan = false;
break; break;
case USB8797_PID_1: case USB8797_PID_1:
case USB8797_PID_2: case USB8797_PID_2:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment