aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2012-03-05 15:05:54 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-03-05 15:05:54 -0500
commit051d3b50430160a86cbe4a2deef219c8038bd03f (patch)
treeb2c276067819f259f86369e5341202332a8172be /drivers/net/wireless/rtlwifi
parentffcb97388b1d41b1db063eb041cb9af408662127 (diff)
parentc288ec614e264b46853c65d3db9ccf91d53c9484 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Diffstat (limited to 'drivers/net/wireless/rtlwifi')
-rw-r--r--drivers/net/wireless/rtlwifi/Kconfig2
-rw-r--r--drivers/net/wireless/rtlwifi/base.c6
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192c/phy_common.c156
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192de/phy.c187
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192se/fw.h3
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192se/phy.c40
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192se/sw.c3
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
50 default m 50 default m
51 51
52config RTLWIFI_DEBUG 52config RTLWIFI_DEBUG
53 tristate "Additional debugging output" 53 bool "Additional debugging output"
54 depends on RTL8192CE || RTL8192CU || RTL8192SE || RTL8192DE 54 depends on RTL8192CE || RTL8192CU || RTL8192SE || RTL8192DE
55 default y 55 default y
56 56
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 @@
39#include <linux/module.h> 39#include <linux/module.h>
40 40
41/* 41/*
42 *NOTICE!!!: This file will be very big, we hsould 42 *NOTICE!!!: This file will be very big, we should
43 *keep it clear under follwing roles: 43 *keep it clear under following roles:
44 * 44 *
45 *This file include follwing part, so, if you add new 45 *This file include following parts, so, if you add new
46 *functions into this file, please check which part it 46 *functions into this file, please check which part it
47 *should includes. or check if you should add new part 47 *should includes. or check if you should add new part
48 *for this file: 48 *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)
177 u32 i; 177 u32 i;
178 178
179 for (i = 0; i <= 31; i++) { 179 for (i = 0; i <= 31; i++) {
180 if (((bitmask >> i) & 0x1) == 1) 180 if ((bitmask >> i) & 0x1)
181 break; 181 break;
182 } 182 }
183 return i; 183 return i;
@@ -253,121 +253,51 @@ void _rtl92c_store_pwrIndex_diffrate_offset(struct ieee80211_hw *hw,
253{ 253{
254 struct rtl_priv *rtlpriv = rtl_priv(hw); 254 struct rtl_priv *rtlpriv = rtl_priv(hw);
255 struct rtl_phy *rtlphy = &(rtlpriv->phy); 255 struct rtl_phy *rtlphy = &(rtlpriv->phy);
256 int index;
257
258 if (regaddr == RTXAGC_A_RATE18_06)
259 index = 0;
260 else if (regaddr == RTXAGC_A_RATE54_24)
261 index = 1;
262 else if (regaddr == RTXAGC_A_CCK1_MCS32)
263 index = 6;
264 else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00)
265 index = 7;
266 else if (regaddr == RTXAGC_A_MCS03_MCS00)
267 index = 2;
268 else if (regaddr == RTXAGC_A_MCS07_MCS04)
269 index = 3;
270 else if (regaddr == RTXAGC_A_MCS11_MCS08)
271 index = 4;
272 else if (regaddr == RTXAGC_A_MCS15_MCS12)
273 index = 5;
274 else if (regaddr == RTXAGC_B_RATE18_06)
275 index = 8;
276 else if (regaddr == RTXAGC_B_RATE54_24)
277 index = 9;
278 else if (regaddr == RTXAGC_B_CCK1_55_MCS32)
279 index = 14;
280 else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff)
281 index = 15;
282 else if (regaddr == RTXAGC_B_MCS03_MCS00)
283 index = 10;
284 else if (regaddr == RTXAGC_B_MCS07_MCS04)
285 index = 11;
286 else if (regaddr == RTXAGC_B_MCS11_MCS08)
287 index = 12;
288 else if (regaddr == RTXAGC_B_MCS15_MCS12)
289 index = 13;
290 else
291 return;
256 292
257 if (regaddr == RTXAGC_A_RATE18_06) { 293 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][index] = data;
258 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][0] = data; 294 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
259 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, 295 "MCSTxPowerLevelOriginalOffset[%d][%d] = 0x%x\n",
260 "MCSTxPowerLevelOriginalOffset[%d][0] = 0x%x\n", 296 rtlphy->pwrgroup_cnt, index,
261 rtlphy->pwrgroup_cnt, 297 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][index]);
262 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][0]);
263 }
264 if (regaddr == RTXAGC_A_RATE54_24) {
265 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][1] = data;
266 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
267 "MCSTxPowerLevelOriginalOffset[%d][1] = 0x%x\n",
268 rtlphy->pwrgroup_cnt,
269 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][1]);
270 }
271 if (regaddr == RTXAGC_A_CCK1_MCS32) {
272 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][6] = data;
273 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
274 "MCSTxPowerLevelOriginalOffset[%d][6] = 0x%x\n",
275 rtlphy->pwrgroup_cnt,
276 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][6]);
277 }
278 if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00) {
279 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][7] = data;
280 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
281 "MCSTxPowerLevelOriginalOffset[%d][7] = 0x%x\n",
282 rtlphy->pwrgroup_cnt,
283 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][7]);
284 }
285 if (regaddr == RTXAGC_A_MCS03_MCS00) {
286 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][2] = data;
287 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
288 "MCSTxPowerLevelOriginalOffset[%d][2] = 0x%x\n",
289 rtlphy->pwrgroup_cnt,
290 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][2]);
291 }
292 if (regaddr == RTXAGC_A_MCS07_MCS04) {
293 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][3] = data;
294 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
295 "MCSTxPowerLevelOriginalOffset[%d][3] = 0x%x\n",
296 rtlphy->pwrgroup_cnt,
297 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][3]);
298 }
299 if (regaddr == RTXAGC_A_MCS11_MCS08) {
300 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][4] = data;
301 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
302 "MCSTxPowerLevelOriginalOffset[%d][4] = 0x%x\n",
303 rtlphy->pwrgroup_cnt,
304 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][4]);
305 }
306 if (regaddr == RTXAGC_A_MCS15_MCS12) {
307 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][5] = data;
308 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
309 "MCSTxPowerLevelOriginalOffset[%d][5] = 0x%x\n",
310 rtlphy->pwrgroup_cnt,
311 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][5]);
312 }
313 if (regaddr == RTXAGC_B_RATE18_06) {
314 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][8] = data;
315 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
316 "MCSTxPowerLevelOriginalOffset[%d][8] = 0x%x\n",
317 rtlphy->pwrgroup_cnt,
318 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][8]);
319 }
320 if (regaddr == RTXAGC_B_RATE54_24) {
321 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][9] = data;
322 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
323 "MCSTxPowerLevelOriginalOffset[%d][9] = 0x%x\n",
324 rtlphy->pwrgroup_cnt,
325 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][9]);
326 }
327 if (regaddr == RTXAGC_B_CCK1_55_MCS32) {
328 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][14] = data;
329 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
330 "MCSTxPowerLevelOriginalOffset[%d][14] = 0x%x\n",
331 rtlphy->pwrgroup_cnt,
332 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][14]);
333 }
334 if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff) {
335 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][15] = data;
336 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
337 "MCSTxPowerLevelOriginalOffset[%d][15] = 0x%x\n",
338 rtlphy->pwrgroup_cnt,
339 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][15]);
340 }
341 if (regaddr == RTXAGC_B_MCS03_MCS00) {
342 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][10] = data;
343 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
344 "MCSTxPowerLevelOriginalOffset[%d][10] = 0x%x\n",
345 rtlphy->pwrgroup_cnt,
346 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][10]);
347 }
348 if (regaddr == RTXAGC_B_MCS07_MCS04) {
349 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][11] = data;
350 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
351 "MCSTxPowerLevelOriginalOffset[%d][11] = 0x%x\n",
352 rtlphy->pwrgroup_cnt,
353 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][11]);
354 }
355 if (regaddr == RTXAGC_B_MCS11_MCS08) {
356 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][12] = data;
357 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
358 "MCSTxPowerLevelOriginalOffset[%d][12] = 0x%x\n",
359 rtlphy->pwrgroup_cnt,
360 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][12]);
361 }
362 if (regaddr == RTXAGC_B_MCS15_MCS12) {
363 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][13] = data;
364 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
365 "MCSTxPowerLevelOriginalOffset[%d][13] = 0x%x\n",
366 rtlphy->pwrgroup_cnt,
367 rtlphy->MCS_TXPWR[rtlphy->pwrgroup_cnt][13]);
368 298
299 if (index == 13)
369 rtlphy->pwrgroup_cnt++; 300 rtlphy->pwrgroup_cnt++;
370 }
371} 301}
372EXPORT_SYMBOL(_rtl92c_store_pwrIndex_diffrate_offset); 302EXPORT_SYMBOL(_rtl92c_store_pwrIndex_diffrate_offset);
373 303
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,
665{ 665{
666 struct rtl_priv *rtlpriv = rtl_priv(hw); 666 struct rtl_priv *rtlpriv = rtl_priv(hw);
667 struct rtl_phy *rtlphy = &(rtlpriv->phy); 667 struct rtl_phy *rtlphy = &(rtlpriv->phy);
668 int index;
669
670 if (regaddr == RTXAGC_A_RATE18_06)
671 index = 0;
672 else if (regaddr == RTXAGC_A_RATE54_24)
673 index = 1;
674 else if (regaddr == RTXAGC_A_CCK1_MCS32)
675 index = 6;
676 else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00)
677 index = 7;
678 else if (regaddr == RTXAGC_A_MCS03_MCS00)
679 index = 2;
680 else if (regaddr == RTXAGC_A_MCS07_MCS04)
681 index = 3;
682 else if (regaddr == RTXAGC_A_MCS11_MCS08)
683 index = 4;
684 else if (regaddr == RTXAGC_A_MCS15_MCS12)
685 index = 5;
686 else if (regaddr == RTXAGC_B_RATE18_06)
687 index = 8;
688 else if (regaddr == RTXAGC_B_RATE54_24)
689 index = 9;
690 else if (regaddr == RTXAGC_B_CCK1_55_MCS32)
691 index = 14;
692 else if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff)
693 index = 15;
694 else if (regaddr == RTXAGC_B_MCS03_MCS00)
695 index = 10;
696 else if (regaddr == RTXAGC_B_MCS07_MCS04)
697 index = 11;
698 else if (regaddr == RTXAGC_B_MCS11_MCS08)
699 index = 12;
700 else if (regaddr == RTXAGC_B_MCS15_MCS12)
701 index = 13;
702 else
703 return;
668 704
669 if (regaddr == RTXAGC_A_RATE18_06) { 705 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][index] = data;
670 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][0] = 706 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
671 data; 707 "MCSTxPowerLevelOriginalOffset[%d][%d] = 0x%ulx\n",
672 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, 708 rtlphy->pwrgroup_cnt, index,
673 "MCSTxPowerLevelOriginalOffset[%d][0] = 0x%ulx\n", 709 rtlphy->mcs_txpwrlevel_origoffset
674 rtlphy->pwrgroup_cnt, 710 [rtlphy->pwrgroup_cnt][index]);
675 rtlphy->mcs_txpwrlevel_origoffset 711 if (index == 13)
676 [rtlphy->pwrgroup_cnt][0]);
677 }
678 if (regaddr == RTXAGC_A_RATE54_24) {
679 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][1] =
680 data;
681 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
682 "MCSTxPowerLevelOriginalOffset[%d][1] = 0x%ulx\n",
683 rtlphy->pwrgroup_cnt,
684 rtlphy->mcs_txpwrlevel_origoffset
685 [rtlphy->pwrgroup_cnt][1]);
686 }
687 if (regaddr == RTXAGC_A_CCK1_MCS32) {
688 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][6] =
689 data;
690 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
691 "MCSTxPowerLevelOriginalOffset[%d][6] = 0x%ulx\n",
692 rtlphy->pwrgroup_cnt,
693 rtlphy->mcs_txpwrlevel_origoffset
694 [rtlphy->pwrgroup_cnt][6]);
695 }
696 if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0xffffff00) {
697 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][7] =
698 data;
699 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
700 "MCSTxPowerLevelOriginalOffset[%d][7] = 0x%ulx\n",
701 rtlphy->pwrgroup_cnt,
702 rtlphy->mcs_txpwrlevel_origoffset
703 [rtlphy->pwrgroup_cnt][7]);
704 }
705 if (regaddr == RTXAGC_A_MCS03_MCS00) {
706 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][2] =
707 data;
708 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
709 "MCSTxPowerLevelOriginalOffset[%d][2] = 0x%ulx\n",
710 rtlphy->pwrgroup_cnt,
711 rtlphy->mcs_txpwrlevel_origoffset
712 [rtlphy->pwrgroup_cnt][2]);
713 }
714 if (regaddr == RTXAGC_A_MCS07_MCS04) {
715 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][3] =
716 data;
717 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
718 "MCSTxPowerLevelOriginalOffset[%d][3] = 0x%ulx\n",
719 rtlphy->pwrgroup_cnt,
720 rtlphy->mcs_txpwrlevel_origoffset
721 [rtlphy->pwrgroup_cnt][3]);
722 }
723 if (regaddr == RTXAGC_A_MCS11_MCS08) {
724 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][4] =
725 data;
726 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
727 "MCSTxPowerLevelOriginalOffset[%d][4] = 0x%ulx\n",
728 rtlphy->pwrgroup_cnt,
729 rtlphy->mcs_txpwrlevel_origoffset
730 [rtlphy->pwrgroup_cnt][4]);
731 }
732 if (regaddr == RTXAGC_A_MCS15_MCS12) {
733 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][5] =
734 data;
735 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
736 "MCSTxPowerLevelOriginalOffset[%d][5] = 0x%ulx\n",
737 rtlphy->pwrgroup_cnt,
738 rtlphy->mcs_txpwrlevel_origoffset
739 [rtlphy->pwrgroup_cnt][5]);
740 }
741 if (regaddr == RTXAGC_B_RATE18_06) {
742 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][8] =
743 data;
744 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
745 "MCSTxPowerLevelOriginalOffset[%d][8] = 0x%ulx\n",
746 rtlphy->pwrgroup_cnt,
747 rtlphy->mcs_txpwrlevel_origoffset
748 [rtlphy->pwrgroup_cnt][8]);
749 }
750 if (regaddr == RTXAGC_B_RATE54_24) {
751 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][9] =
752 data;
753 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
754 "MCSTxPowerLevelOriginalOffset[%d][9] = 0x%ulx\n",
755 rtlphy->pwrgroup_cnt,
756 rtlphy->mcs_txpwrlevel_origoffset
757 [rtlphy->pwrgroup_cnt][9]);
758 }
759 if (regaddr == RTXAGC_B_CCK1_55_MCS32) {
760 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][14] =
761 data;
762 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
763 "MCSTxPowerLevelOriginalOffset[%d][14] = 0x%ulx\n",
764 rtlphy->pwrgroup_cnt,
765 rtlphy->mcs_txpwrlevel_origoffset
766 [rtlphy->pwrgroup_cnt][14]);
767 }
768 if (regaddr == RTXAGC_B_CCK11_A_CCK2_11 && bitmask == 0x000000ff) {
769 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][15] =
770 data;
771 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
772 "MCSTxPowerLevelOriginalOffset[%d][15] = 0x%ulx\n",
773 rtlphy->pwrgroup_cnt,
774 rtlphy->mcs_txpwrlevel_origoffset
775 [rtlphy->pwrgroup_cnt][15]);
776 }
777 if (regaddr == RTXAGC_B_MCS03_MCS00) {
778 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][10] =
779 data;
780 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
781 "MCSTxPowerLevelOriginalOffset[%d][10] = 0x%ulx\n",
782 rtlphy->pwrgroup_cnt,
783 rtlphy->mcs_txpwrlevel_origoffset
784 [rtlphy->pwrgroup_cnt][10]);
785 }
786 if (regaddr == RTXAGC_B_MCS07_MCS04) {
787 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][11] =
788 data;
789 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
790 "MCSTxPowerLevelOriginalOffset[%d][11] = 0x%ulx\n",
791 rtlphy->pwrgroup_cnt,
792 rtlphy->mcs_txpwrlevel_origoffset
793 [rtlphy->pwrgroup_cnt][11]);
794 }
795 if (regaddr == RTXAGC_B_MCS11_MCS08) {
796 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][12] =
797 data;
798 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
799 "MCSTxPowerLevelOriginalOffset[%d][12] = 0x%ulx\n",
800 rtlphy->pwrgroup_cnt,
801 rtlphy->mcs_txpwrlevel_origoffset
802 [rtlphy->pwrgroup_cnt][12]);
803 }
804 if (regaddr == RTXAGC_B_MCS15_MCS12) {
805 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][13] =
806 data;
807 RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
808 "MCSTxPowerLevelOriginalOffset[%d][13] = 0x%ulx\n",
809 rtlphy->pwrgroup_cnt,
810 rtlphy->mcs_txpwrlevel_origoffset
811 [rtlphy->pwrgroup_cnt][13]);
812 rtlphy->pwrgroup_cnt++; 712 rtlphy->pwrgroup_cnt++;
813 }
814} 713}
815 714
816static bool _rtl92d_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, 715static 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 @@
30#define __REALTEK_FIRMWARE92S_H__ 30#define __REALTEK_FIRMWARE92S_H__
31 31
32#define RTL8190_MAX_FIRMWARE_CODE_SIZE 64000 32#define RTL8190_MAX_FIRMWARE_CODE_SIZE 64000
33#define RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE 90000
33#define RTL8190_CPU_START_OFFSET 0x80 34#define RTL8190_CPU_START_OFFSET 0x80
34/* Firmware Local buffer size. 64k */ 35/* Firmware Local buffer size. 64k */
35#define MAX_FIRMWARE_CODE_SIZE 0xFF00 36#define MAX_FIRMWARE_CODE_SIZE 0xFF00
@@ -217,7 +218,7 @@ struct rt_firmware {
217 u8 fw_emem[RTL8190_MAX_FIRMWARE_CODE_SIZE]; 218 u8 fw_emem[RTL8190_MAX_FIRMWARE_CODE_SIZE];
218 u32 fw_imem_len; 219 u32 fw_imem_len;
219 u32 fw_emem_len; 220 u32 fw_emem_len;
220 u8 sz_fw_tmpbuffer[164000]; 221 u8 sz_fw_tmpbuffer[RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE];
221 u32 sz_fw_tmpbufferlen; 222 u32 sz_fw_tmpbufferlen;
222 u16 cmdpacket_fragthresold; 223 u16 cmdpacket_fragthresold;
223}; 224};
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,
677{ 677{
678 struct rtl_priv *rtlpriv = rtl_priv(hw); 678 struct rtl_priv *rtlpriv = rtl_priv(hw);
679 struct rtl_phy *rtlphy = &(rtlpriv->phy); 679 struct rtl_phy *rtlphy = &(rtlpriv->phy);
680 int index;
680 681
681 if (reg_addr == RTXAGC_RATE18_06) 682 if (reg_addr == RTXAGC_RATE18_06)
682 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][0] = 683 index = 0;
683 data; 684 else if (reg_addr == RTXAGC_RATE54_24)
684 if (reg_addr == RTXAGC_RATE54_24) 685 index = 1;
685 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][1] = 686 else if (reg_addr == RTXAGC_CCK_MCS32)
686 data; 687 index = 6;
687 if (reg_addr == RTXAGC_CCK_MCS32) 688 else if (reg_addr == RTXAGC_MCS03_MCS00)
688 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][6] = 689 index = 2;
689 data; 690 else if (reg_addr == RTXAGC_MCS07_MCS04)
690 if (reg_addr == RTXAGC_MCS03_MCS00) 691 index = 3;
691 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][2] = 692 else if (reg_addr == RTXAGC_MCS11_MCS08)
692 data; 693 index = 4;
693 if (reg_addr == RTXAGC_MCS07_MCS04) 694 else if (reg_addr == RTXAGC_MCS15_MCS12)
694 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][3] = 695 index = 5;
695 data; 696 else
696 if (reg_addr == RTXAGC_MCS11_MCS08) 697 return;
697 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][4] = 698
698 data; 699 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][index] = data;
699 if (reg_addr == RTXAGC_MCS15_MCS12) { 700 if (index == 5)
700 rtlphy->mcs_txpwrlevel_origoffset[rtlphy->pwrgroup_cnt][5] =
701 data;
702 rtlphy->pwrgroup_cnt++; 701 rtlphy->pwrgroup_cnt++;
703 }
704} 702}
705 703
706static void _rtl92s_phy_init_register_definition(struct ieee80211_hw *hw) 704static 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)
108 if (firmware->size > rtlpriv->max_fw_size) { 108 if (firmware->size > rtlpriv->max_fw_size) {
109 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, 109 RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
110 "Firmware is too big!\n"); 110 "Firmware is too big!\n");
111 rtlpriv->max_fw_size = 0;
111 release_firmware(firmware); 112 release_firmware(firmware);
112 return; 113 return;
113 } 114 }
@@ -229,7 +230,7 @@ static int rtl92s_init_sw_vars(struct ieee80211_hw *hw)
229 if (!rtlpriv->rtlhal.pfirmware) 230 if (!rtlpriv->rtlhal.pfirmware)
230 return 1; 231 return 1;
231 232
232 rtlpriv->max_fw_size = sizeof(struct rt_firmware); 233 rtlpriv->max_fw_size = RTL8190_MAX_RAW_FIRMWARE_CODE_SIZE;
233 234
234 pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n" 235 pr_info("Driver for Realtek RTL8192SE/RTL8191SE\n"
235 "Loading firmware %s\n", rtlpriv->cfg->fw_name); 236 "Loading firmware %s\n", rtlpriv->cfg->fw_name);