diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/base.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c | 156 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 187 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/fw.h | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/phy.c | 40 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 3 | 
7 files changed, 113 insertions, 284 deletions
diff --git a/drivers/net/wireless/rtlwifi/Kconfig b/drivers/net/wireless/rtlwifi/Kconfig index 44b9c0a5770..cefac6a4360 100644 --- a/drivers/net/wireless/rtlwifi/Kconfig +++ b/drivers/net/wireless/rtlwifi/Kconfig @@ -50,7 +50,7 @@ config RTLWIFI  	default m  config RTLWIFI_DEBUG -	tristate "Additional debugging output" +	bool "Additional debugging output"  	depends on RTL8192CE || RTL8192CU || RTL8192SE || RTL8192DE  	default y diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c index df5655cc55c..510023554e5 100644 --- a/drivers/net/wireless/rtlwifi/base.c +++ b/drivers/net/wireless/rtlwifi/base.c @@ -39,10 +39,10 @@  #include <linux/module.h>  /* - *NOTICE!!!: This file will be very big, we hsould - *keep it clear under follwing roles: + *NOTICE!!!: This file will be very big, we should + *keep it clear under following roles:   * - *This file include follwing part, so, if you add new + *This file include following parts, so, if you add new   *functions into this file, please check which part it   *should includes. or check if you should add new part   *for this file: diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c index bfff5fe8623..1eec3a06d1f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c +++ b/drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c @@ -177,7 +177,7 @@ u32 _rtl92c_phy_calculate_bit_shift(u32 bitmask)  	u32 i;  	for (i = 0; i <= 31; i++) { -		if (((bitmask >> i) & 0x1) == 1) +		if ((bitmask >> i) & 0x1)  			break;  	}  	return i; @@ -253,121 +253,51 @@ void _rtl92c_store_pwrIndex_diffrate_offset(struct ieee80211_hw *hw,  {  	struct rtl_priv *rtlpriv = rtl_priv(hw);  	struct rtl_phy *rtlphy = &(rtlpriv->phy); +	int index; -	if (regaddr == RTXAGC_A_RATE18_06) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][0] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][0] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][0]); -	} -	if (regaddr == RTXAGC_A_RATE54_24) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][1] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][1] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][1]); -	} -	if (regaddr == RTXAGC_A_CCK1_MCS32) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][6] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][6] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][6]); -	} -	if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][7] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][7] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][7]); -	} -	if (regaddr == RTXAGC_A_MCS03_MCS00) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][2] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][2] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][2]); -	} -	if (regaddr == RTXAGC_A_MCS07_MCS04) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][3] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][3] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][3]); -	} -	if (regaddr == RTXAGC_A_MCS11_MCS08) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][4] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][4] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][4]); -	} -	if (regaddr == RTXAGC_A_MCS15_MCS12) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][5] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][5] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][5]); -	} -	if (regaddr == RTXAGC_B_RATE18_06) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][8] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][8] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][8]); -	} -	if (regaddr == RTXAGC_B_RATE54_24) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][9] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][9] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][9]); -	} -	if (regaddr == RTXAGC_B_CCK1_55_MCS32) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][14] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][14] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][14]); -	} -	if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][15] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][15] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][15]); -	} -	if (regaddr == RTXAGC_B_MCS03_MCS00) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][10] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][10] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][10]); -	} -	if (regaddr == RTXAGC_B_MCS07_MCS04) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][11] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][11] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][11]); -	} -	if (regaddr == RTXAGC_B_MCS11_MCS08) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][12] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][12] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][12]); -	} -	if (regaddr == RTXAGC_B_MCS15_MCS12) { -		rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][13] = data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][13] = 0x%x\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][13]); +	if (regaddr == RTXAGC_A_RATE18_06) +		index = 0; +	else if (regaddr == RTXAGC_A_RATE54_24) +		index = 1; +	else if (regaddr == RTXAGC_A_CCK1_MCS32) +		index = 6; +	else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00) +		index = 7; +	else if (regaddr == RTXAGC_A_MCS03_MCS00) +		index = 2; +	else if (regaddr == RTXAGC_A_MCS07_MCS04) +		index = 3; +	else if (regaddr == RTXAGC_A_MCS11_MCS08) +		index = 4; +	else if (regaddr == RTXAGC_A_MCS15_MCS12) +		index = 5; +	else if (regaddr == RTXAGC_B_RATE18_06) +		index = 8; +	else if (regaddr == RTXAGC_B_RATE54_24) +		index = 9; +	else if (regaddr == RTXAGC_B_CCK1_55_MCS32) +		index = 14; +	else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff) +		index = 15; +	else if (regaddr == RTXAGC_B_MCS03_MCS00) +		index = 10; +	else if (regaddr == RTXAGC_B_MCS07_MCS04) +		index = 11; +	else if (regaddr == RTXAGC_B_MCS11_MCS08) +		index = 12; +	else if (regaddr == RTXAGC_B_MCS15_MCS12) +		index = 13; +	else +		return; +	rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][index] = data; +	RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, +		 "MCSTxPowerLevelOriginalOffset[%d][%d] = 0x%x\n", +		 rtlphy->pwrgroup_cnt, index, +		 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][index]); + +	if (index == 13)  		rtlphy->pwrgroup_cnt++; -	}  }  EXPORT_SYMBOL(_rtl92c_store_pwrIndex_diffrate_offset); diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c index 93eecbd8940..34591eeb837 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/phy.c @@ -665,152 +665,51 @@ static void _rtl92d_store_pwrindex_diffrate_offset(struct ieee80211_hw *hw,  {  	struct rtl_priv *rtlpriv = rtl_priv(hw);  	struct rtl_phy *rtlphy = &(rtlpriv->phy); +	int index; -	if (regaddr == RTXAGC_A_RATE18_06) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][0] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][0] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][0]); -	} -	if (regaddr == RTXAGC_A_RATE54_24) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][1] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][1] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][1]); -	} -	if (regaddr == RTXAGC_A_CCK1_MCS32) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][6] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][6] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][6]); -	} -	if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][7] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][7] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][7]); -	} -	if (regaddr == RTXAGC_A_MCS03_MCS00) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][2] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][2] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][2]); -	} -	if (regaddr == RTXAGC_A_MCS07_MCS04) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][3] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][3] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][3]); -	} -	if (regaddr == RTXAGC_A_MCS11_MCS08) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][4] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][4] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][4]); -	} -	if (regaddr == RTXAGC_A_MCS15_MCS12) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][5] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][5] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][5]); -	} -	if (regaddr == RTXAGC_B_RATE18_06) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][8] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][8] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][8]); -	} -	if (regaddr == RTXAGC_B_RATE54_24) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][9] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][9] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][9]); -	} -	if (regaddr == RTXAGC_B_CCK1_55_MCS32) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][14] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][14] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][14]); -	} -	if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][15] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][15] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][15]); -	} -	if (regaddr == RTXAGC_B_MCS03_MCS00) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][10] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][10] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][10]); -	} -	if (regaddr == RTXAGC_B_MCS07_MCS04) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][11] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][11] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][11]); -	} -	if (regaddr == RTXAGC_B_MCS11_MCS08) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][12] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][12] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][12]); -	} -	if (regaddr == RTXAGC_B_MCS15_MCS12) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][13] = -									 data; -		RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, -			 "MCSTxPowerLevelOriginalOffset[%d][13] = 0x%ulx\n", -			 rtlphy->pwrgroup_cnt, -			 rtlphy->mcs_txpwrlevel_origoffset -			 [rtlphy->pwrgroup_cnt][13]); +	if (regaddr == RTXAGC_A_RATE18_06) +		index = 0; +	else if (regaddr == RTXAGC_A_RATE54_24) +		index = 1; +	else if (regaddr == RTXAGC_A_CCK1_MCS32) +		index = 6; +	else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00) +		index = 7; +	else if (regaddr == RTXAGC_A_MCS03_MCS00) +		index = 2; +	else if (regaddr == RTXAGC_A_MCS07_MCS04) +		index = 3; +	else if (regaddr == RTXAGC_A_MCS11_MCS08) +		index = 4; +	else if (regaddr == RTXAGC_A_MCS15_MCS12) +		index = 5; +	else if (regaddr == RTXAGC_B_RATE18_06) +		index = 8; +	else if (regaddr == RTXAGC_B_RATE54_24) +		index = 9; +	else if (regaddr == RTXAGC_B_CCK1_55_MCS32) +		index = 14; +	else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff) +		index = 15; +	else if (regaddr == RTXAGC_B_MCS03_MCS00) +		index = 10; +	else if (regaddr == RTXAGC_B_MCS07_MCS04) +		index = 11; +	else if (regaddr == RTXAGC_B_MCS11_MCS08) +		index = 12; +	else if (regaddr == RTXAGC_B_MCS15_MCS12) +		index = 13; +	else +		return; + +	rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][index] = data; +	RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, +		 "MCSTxPowerLevelOriginalOffset[%d][%d] = 0x%ulx\n", +		 rtlphy->pwrgroup_cnt, index, +		 rtlphy->mcs_txpwrlevel_origoffset +		 [rtlphy->pwrgroup_cnt][index]); +	if (index == 13)  		rtlphy->pwrgroup_cnt++; -	}  }  static bool _rtl92d_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/fw.h b/drivers/net/wireless/rtlwifi/rtl8192se/fw.h index babe85d4b69..b4afff62643 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/fw.h +++ b/drivers/net/wireless/rtlwifi/rtl8192se/fw.h @@ -30,6 +30,7 @@  #define __REALTEK_FIRMWARE92S_H__  #define RTL8190_MAX_FIRMWARE_CODE_SIZE		64000 +#define RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE	90000  #define RTL8190_CPU_START_OFFSET		0x80  /* Firmware Local buffer size. 64k */  #define	MAX_FIRMWARE_CODE_SIZE			0xFF00 @@ -217,7 +218,7 @@ struct rt_firmware {  	u8 fw_emem[RTL8190_MAX_FIRMWARE_CODE_SIZE];  	u32 fw_imem_len;  	u32 fw_emem_len; -	u8 sz_fw_tmpbuffer[164000]; +	u8 sz_fw_tmpbuffer[RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE];  	u32 sz_fw_tmpbufferlen;  	u16 cmdpacket_fragthresold;  }; diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/phy.c b/drivers/net/wireless/rtlwifi/rtl8192se/phy.c index 3bfc411f13b..4a499928e4c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/phy.c @@ -677,30 +677,28 @@ static void _rtl92s_store_pwrindex_diffrate_offset(struct ieee80211_hw *hw,  {  	struct rtl_priv *rtlpriv = rtl_priv(hw);  	struct rtl_phy *rtlphy = &(rtlpriv->phy); +	int index;  	if (reg_addr == RTXAGC_RATE18_06) -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][0] = -									 data; -	if (reg_addr == RTXAGC_RATE54_24) -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][1] = -									 data; -	if (reg_addr == RTXAGC_CCK_MCS32) -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][6] = -									 data; -	if (reg_addr == RTXAGC_MCS03_MCS00) -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][2] = -									 data; -	if (reg_addr == RTXAGC_MCS07_MCS04) -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][3] = -									 data; -	if (reg_addr == RTXAGC_MCS11_MCS08) -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][4] = -									 data; -	if (reg_addr == RTXAGC_MCS15_MCS12) { -		rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][5] = -									 data; +		index = 0; +	else if (reg_addr == RTXAGC_RATE54_24) +		index = 1; +	else if (reg_addr == RTXAGC_CCK_MCS32) +		index = 6; +	else if (reg_addr == RTXAGC_MCS03_MCS00) +		index = 2; +	else if (reg_addr == RTXAGC_MCS07_MCS04) +		index = 3; +	else if (reg_addr == RTXAGC_MCS11_MCS08) +		index = 4; +	else if (reg_addr == RTXAGC_MCS15_MCS12) +		index = 5; +	else +		return; + +	rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][index] = data; +	if (index == 5)  		rtlphy->pwrgroup_cnt++; -	}  }  static void _rtl92s_phy_init_register_definition(struct ieee80211_hw *hw) diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c index eda30b9d0f1..f1b36005c6a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c @@ -108,6 +108,7 @@ static void rtl92se_fw_cb(const struct firmware *firmware, void *context)  	if (firmware->size > rtlpriv->max_fw_size) {  		RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,  			 "Firmware is too big!\n"); +		rtlpriv->max_fw_size = 0;  		release_firmware(firmware);  		return;  	} @@ -229,7 +230,7 @@ static int rtl92s_init_sw_vars(struct ieee80211_hw *hw)  	if (!rtlpriv->rtlhal.pfirmware)  		return 1; -	rtlpriv->max_fw_size = sizeof(struct rt_firmware); +	rtlpriv->max_fw_size = RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE;  	pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n"  		"Loading firmware %s\n", rtlpriv->cfg->fw_name);  |