diff options
author | Oren Givon <oren.givon@intel.com> | 2014-06-16 03:54:52 -0400 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-07-21 03:17:27 -0400 |
commit | 745160ee10b76ed739f78f0116ab3d17b3f77309 (patch) | |
tree | ccb04580b4c1f51534258d31b49386289c6c3f86 | |
parent | 5fc7d86c7afd61ac8c9d468cba014c472e9c4dcb (diff) |
iwlwifi: add max RX aggregation size
Allow to configure the maximal Rx AMPDU size per device.
Signed-off-by: Oren Givon <oren.givon@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-8000.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-config.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/ops.c | 3 |
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-8000.c b/drivers/net/wireless/iwlwifi/iwl-8000.c index 51486cc9d943..44b19e015102 100644 --- a/drivers/net/wireless/iwlwifi/iwl-8000.c +++ b/drivers/net/wireless/iwlwifi/iwl-8000.c | |||
@@ -85,6 +85,9 @@ | |||
85 | #define NVM_HW_SECTION_NUM_FAMILY_8000 10 | 85 | #define NVM_HW_SECTION_NUM_FAMILY_8000 10 |
86 | #define DEFAULT_NVM_FILE_FAMILY_8000 "iwl_nvm_8000.bin" | 86 | #define DEFAULT_NVM_FILE_FAMILY_8000 "iwl_nvm_8000.bin" |
87 | 87 | ||
88 | /* Max SDIO RX aggregation size of the ADDBA request/response */ | ||
89 | #define MAX_RX_AGG_SIZE_8260_SDIO 28 | ||
90 | |||
88 | static const struct iwl_base_params iwl8000_base_params = { | 91 | static const struct iwl_base_params iwl8000_base_params = { |
89 | .eeprom_size = OTP_LOW_IMAGE_SIZE_FAMILY_8000, | 92 | .eeprom_size = OTP_LOW_IMAGE_SIZE_FAMILY_8000, |
90 | .num_of_queues = IWLAGN_NUM_QUEUES, | 93 | .num_of_queues = IWLAGN_NUM_QUEUES, |
@@ -129,6 +132,7 @@ const struct iwl_cfg iwl8260_2ac_sdio_cfg = { | |||
129 | .nvm_ver = IWL8000_NVM_VERSION, | 132 | .nvm_ver = IWL8000_NVM_VERSION, |
130 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, | 133 | .nvm_calib_ver = IWL8000_TX_POWER_VERSION, |
131 | .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000, | 134 | .default_nvm_file = DEFAULT_NVM_FILE_FAMILY_8000, |
135 | .max_rx_agg_size = MAX_RX_AGG_SIZE_8260_SDIO, | ||
132 | }; | 136 | }; |
133 | 137 | ||
134 | MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); | 138 | MODULE_FIRMWARE(IWL8000_MODULE_FIRMWARE(IWL8000_UCODE_API_OK)); |
diff --git a/drivers/net/wireless/iwlwifi/iwl-config.h b/drivers/net/wireless/iwlwifi/iwl-config.h index 034c2fc4b69f..8da596db9abe 100644 --- a/drivers/net/wireless/iwlwifi/iwl-config.h +++ b/drivers/net/wireless/iwlwifi/iwl-config.h | |||
@@ -240,6 +240,7 @@ struct iwl_pwr_tx_backoff { | |||
240 | * @d0i3: device uses d0i3 instead of d3 | 240 | * @d0i3: device uses d0i3 instead of d3 |
241 | * @nvm_hw_section_num: the ID of the HW NVM section | 241 | * @nvm_hw_section_num: the ID of the HW NVM section |
242 | * @pwr_tx_backoffs: translation table between power limits and backoffs | 242 | * @pwr_tx_backoffs: translation table between power limits and backoffs |
243 | * @max_rx_agg_size: max RX aggregation size of the ADDBA request/response | ||
243 | * | 244 | * |
244 | * We enable the driver to be backward compatible wrt. hardware features. | 245 | * We enable the driver to be backward compatible wrt. hardware features. |
245 | * API differences in uCode shouldn't be handled here but through TLVs | 246 | * API differences in uCode shouldn't be handled here but through TLVs |
@@ -276,6 +277,7 @@ struct iwl_cfg { | |||
276 | const struct iwl_pwr_tx_backoff *pwr_tx_backoffs; | 277 | const struct iwl_pwr_tx_backoff *pwr_tx_backoffs; |
277 | bool no_power_up_nic_in_init; | 278 | bool no_power_up_nic_in_init; |
278 | const char *default_nvm_file; | 279 | const char *default_nvm_file; |
280 | unsigned int max_rx_agg_size; | ||
279 | }; | 281 | }; |
280 | 282 | ||
281 | /* | 283 | /* |
diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c index 7d7b2fbe7cd1..7f0e9afe8f25 100644 --- a/drivers/net/wireless/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/iwlwifi/mvm/ops.c | |||
@@ -391,6 +391,9 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, | |||
391 | if (!hw) | 391 | if (!hw) |
392 | return NULL; | 392 | return NULL; |
393 | 393 | ||
394 | if (cfg->max_rx_agg_size) | ||
395 | hw->max_rx_aggregation_subframes = cfg->max_rx_agg_size; | ||
396 | |||
394 | op_mode = hw->priv; | 397 | op_mode = hw->priv; |
395 | op_mode->ops = &iwl_mvm_ops; | 398 | op_mode->ops = &iwl_mvm_ops; |
396 | 399 | ||