On Sat, 2015-05-02 at 18:17 +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote: > The patch below does not apply to the 4.0-stable tree. > If someone wants it applied there, or to any other stable or longterm > tree, then please email the backport, including the original git commit > id to <stable@xxxxxxxxxxxxxxx>. > > thanks, > > greg k-h > > ------------------ original commit in Linus's tree ------------------ > > From 3c2d24a9147e4c041ce94be2d166afe89225ff93 Mon Sep 17 00:00:00 2001 > From: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> > Date: Mon, 23 Feb 2015 02:40:07 +0200 > Subject: [PATCH] iwlwifi: fix max_ht_ampdu_exponent for older devices > Just like for 3.19 - please drop. Thanks. > The commit below didn't update the max_ht_ampdu_exponent > for the devices listed in iwl-[1-6]000.c which, in result, > became 0 instead of 8K. This reduced the size of the Rx > AMPDU from 64K to 8K which had an impact in the Rx > throughput. One user reported that because of this, his > downstream throughput droppped by a half. > > CC: <stable@xxxxxxxxxxxxxxx> [3.19] > Fixes: c064ddf318aa ("iwlwifi: change max HT and VHT A-MPDU exponent") > Reported-and-tested-by: Valentin Manea <linux-wireless@xxxxxx> > Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> > > diff --git a/drivers/net/wireless/iwlwifi/iwl-1000.c b/drivers/net/wireless/iwlwifi/iwl-1000.c > index c3817fae16c0..06f6cc08f451 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-1000.c > +++ b/drivers/net/wireless/iwlwifi/iwl-1000.c > @@ -95,7 +95,8 @@ static const struct iwl_eeprom_params iwl1000_eeprom_params = { > .nvm_calib_ver = EEPROM_1000_TX_POWER_VERSION, \ > .base_params = &iwl1000_base_params, \ > .eeprom_params = &iwl1000_eeprom_params, \ > - .led_mode = IWL_LED_BLINK > + .led_mode = IWL_LED_BLINK, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl1000_bgn_cfg = { > .name = "Intel(R) Centrino(R) Wireless-N 1000 BGN", > @@ -121,7 +122,8 @@ const struct iwl_cfg iwl1000_bg_cfg = { > .base_params = &iwl1000_base_params, \ > .eeprom_params = &iwl1000_eeprom_params, \ > .led_mode = IWL_LED_RF_STATE, \ > - .rx_with_siso_diversity = true > + .rx_with_siso_diversity = true, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl100_bgn_cfg = { > .name = "Intel(R) Centrino(R) Wireless-N 100 BGN", > diff --git a/drivers/net/wireless/iwlwifi/iwl-2000.c b/drivers/net/wireless/iwlwifi/iwl-2000.c > index 21e5d0843a62..890b95f497d6 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-2000.c > +++ b/drivers/net/wireless/iwlwifi/iwl-2000.c > @@ -123,7 +123,9 @@ static const struct iwl_eeprom_params iwl20x0_eeprom_params = { > .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ > .base_params = &iwl2000_base_params, \ > .eeprom_params = &iwl20x0_eeprom_params, \ > - .led_mode = IWL_LED_RF_STATE > + .led_mode = IWL_LED_RF_STATE, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > + > > const struct iwl_cfg iwl2000_2bgn_cfg = { > .name = "Intel(R) Centrino(R) Wireless-N 2200 BGN", > @@ -149,7 +151,8 @@ const struct iwl_cfg iwl2000_2bgn_d_cfg = { > .nvm_calib_ver = EEPROM_2000_TX_POWER_VERSION, \ > .base_params = &iwl2030_base_params, \ > .eeprom_params = &iwl20x0_eeprom_params, \ > - .led_mode = IWL_LED_RF_STATE > + .led_mode = IWL_LED_RF_STATE, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl2030_2bgn_cfg = { > .name = "Intel(R) Centrino(R) Wireless-N 2230 BGN", > @@ -170,7 +173,8 @@ const struct iwl_cfg iwl2030_2bgn_cfg = { > .base_params = &iwl2000_base_params, \ > .eeprom_params = &iwl20x0_eeprom_params, \ > .led_mode = IWL_LED_RF_STATE, \ > - .rx_with_siso_diversity = true > + .rx_with_siso_diversity = true, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl105_bgn_cfg = { > .name = "Intel(R) Centrino(R) Wireless-N 105 BGN", > @@ -197,7 +201,8 @@ const struct iwl_cfg iwl105_bgn_d_cfg = { > .base_params = &iwl2030_base_params, \ > .eeprom_params = &iwl20x0_eeprom_params, \ > .led_mode = IWL_LED_RF_STATE, \ > - .rx_with_siso_diversity = true > + .rx_with_siso_diversity = true, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl135_bgn_cfg = { > .name = "Intel(R) Centrino(R) Wireless-N 135 BGN", > diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c > index 332bbede39e5..724194e23414 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-5000.c > +++ b/drivers/net/wireless/iwlwifi/iwl-5000.c > @@ -93,7 +93,8 @@ static const struct iwl_eeprom_params iwl5000_eeprom_params = { > .nvm_calib_ver = EEPROM_5000_TX_POWER_VERSION, \ > .base_params = &iwl5000_base_params, \ > .eeprom_params = &iwl5000_eeprom_params, \ > - .led_mode = IWL_LED_BLINK > + .led_mode = IWL_LED_BLINK, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl5300_agn_cfg = { > .name = "Intel(R) Ultimate N WiFi Link 5300 AGN", > @@ -158,7 +159,8 @@ const struct iwl_cfg iwl5350_agn_cfg = { > .base_params = &iwl5000_base_params, \ > .eeprom_params = &iwl5000_eeprom_params, \ > .led_mode = IWL_LED_BLINK, \ > - .internal_wimax_coex = true > + .internal_wimax_coex = true, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl5150_agn_cfg = { > .name = "Intel(R) WiMAX/WiFi Link 5150 AGN", > diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c > index 8f2c3c8c6b84..21b2630763dc 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-6000.c > +++ b/drivers/net/wireless/iwlwifi/iwl-6000.c > @@ -145,7 +145,8 @@ static const struct iwl_eeprom_params iwl6000_eeprom_params = { > .nvm_calib_ver = EEPROM_6005_TX_POWER_VERSION, \ > .base_params = &iwl6000_g2_base_params, \ > .eeprom_params = &iwl6000_eeprom_params, \ > - .led_mode = IWL_LED_RF_STATE > + .led_mode = IWL_LED_RF_STATE, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl6005_2agn_cfg = { > .name = "Intel(R) Centrino(R) Advanced-N 6205 AGN", > @@ -199,7 +200,8 @@ const struct iwl_cfg iwl6005_2agn_mow2_cfg = { > .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ > .base_params = &iwl6000_g2_base_params, \ > .eeprom_params = &iwl6000_eeprom_params, \ > - .led_mode = IWL_LED_RF_STATE > + .led_mode = IWL_LED_RF_STATE, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl6030_2agn_cfg = { > .name = "Intel(R) Centrino(R) Advanced-N 6230 AGN", > @@ -235,7 +237,8 @@ const struct iwl_cfg iwl6030_2bg_cfg = { > .nvm_calib_ver = EEPROM_6030_TX_POWER_VERSION, \ > .base_params = &iwl6000_g2_base_params, \ > .eeprom_params = &iwl6000_eeprom_params, \ > - .led_mode = IWL_LED_RF_STATE > + .led_mode = IWL_LED_RF_STATE, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl6035_2agn_cfg = { > .name = "Intel(R) Centrino(R) Advanced-N 6235 AGN", > @@ -290,7 +293,8 @@ const struct iwl_cfg iwl130_bg_cfg = { > .nvm_calib_ver = EEPROM_6000_TX_POWER_VERSION, \ > .base_params = &iwl6000_base_params, \ > .eeprom_params = &iwl6000_eeprom_params, \ > - .led_mode = IWL_LED_BLINK > + .led_mode = IWL_LED_BLINK, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl6000i_2agn_cfg = { > .name = "Intel(R) Centrino(R) Advanced-N 6200 AGN", > @@ -322,7 +326,8 @@ const struct iwl_cfg iwl6000i_2bg_cfg = { > .base_params = &iwl6050_base_params, \ > .eeprom_params = &iwl6000_eeprom_params, \ > .led_mode = IWL_LED_BLINK, \ > - .internal_wimax_coex = true > + .internal_wimax_coex = true, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl6050_2agn_cfg = { > .name = "Intel(R) Centrino(R) Advanced-N + WiMAX 6250 AGN", > @@ -347,7 +352,8 @@ const struct iwl_cfg iwl6050_2abg_cfg = { > .base_params = &iwl6050_base_params, \ > .eeprom_params = &iwl6000_eeprom_params, \ > .led_mode = IWL_LED_BLINK, \ > - .internal_wimax_coex = true > + .internal_wimax_coex = true, \ > + .max_ht_ampdu_exponent = IEEE80211_HT_MAX_AMPDU_64K > > const struct iwl_cfg iwl6150_bgn_cfg = { > .name = "Intel(R) Centrino(R) Wireless-N + WiMAX 6150 BGN", > ��.n��������+%������w��{.n�����������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f