aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8192e
diff options
context:
space:
mode:
authorMike McCormack <mikem@ring3k.org>2011-03-03 08:46:04 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2011-03-07 16:31:44 -0500
commit7088dfb69877a07712d56bd9f3d2f48b4e7db30e (patch)
treebdfb888d2fedfa7b64dca2b461e805d8cb4def7f /drivers/staging/rtl8192e
parent4fc2102522838b9933743fe38d22494efb1100da (diff)
staging: rtl8192e: Pass r8192_priv around instead of net_device
Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rtl8192e')
-rw-r--r--drivers/staging/rtl8192e/r8192E.h1
-rw-r--r--drivers/staging/rtl8192e/r8192E_core.c2
-rw-r--r--drivers/staging/rtl8192e/r8192E_dm.c330
-rw-r--r--drivers/staging/rtl8192e/r8192E_dm.h7
-rw-r--r--drivers/staging/rtl8192e/r819xE_phy.c18
5 files changed, 143 insertions, 215 deletions
diff --git a/drivers/staging/rtl8192e/r8192E.h b/drivers/staging/rtl8192e/r8192E.h
index 7cbf69be6fe..1b838eea9aa 100644
--- a/drivers/staging/rtl8192e/r8192E.h
+++ b/drivers/staging/rtl8192e/r8192E.h
@@ -1062,7 +1062,6 @@ void write_phy(struct net_device *dev, u8 adr, u8 data);
1062void CamResetAllEntry(struct r8192_priv *priv); 1062void CamResetAllEntry(struct r8192_priv *priv);
1063void EnableHWSecurityConfig8192(struct net_device *dev); 1063void EnableHWSecurityConfig8192(struct net_device *dev);
1064void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent ); 1064void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent );
1065void dm_cck_txpower_adjust(struct net_device *dev, bool binch14);
1066void firmware_init_param(struct net_device *dev); 1065void firmware_init_param(struct net_device *dev);
1067RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len); 1066RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len);
1068 1067
diff --git a/drivers/staging/rtl8192e/r8192E_core.c b/drivers/staging/rtl8192e/r8192E_core.c
index fb67e5f55f1..6ba1497b34c 100644
--- a/drivers/staging/rtl8192e/r8192E_core.c
+++ b/drivers/staging/rtl8192e/r8192E_core.c
@@ -2832,7 +2832,7 @@ static RT_STATUS rtl8192_adapter_start(struct r8192_priv *priv)
2832 2832
2833 if(priv->ResetProgress == RESET_TYPE_NORESET) 2833 if(priv->ResetProgress == RESET_TYPE_NORESET)
2834 { 2834 {
2835 dm_initialize_txpower_tracking(dev); 2835 dm_initialize_txpower_tracking(priv);
2836 2836
2837 if(priv->IC_Cut >= IC_VersionCut_D) 2837 if(priv->IC_Cut >= IC_VersionCut_D)
2838 { 2838 {
diff --git a/drivers/staging/rtl8192e/r8192E_dm.c b/drivers/staging/rtl8192e/r8192E_dm.c
index bd352bad46d..208be7f858d 100644
--- a/drivers/staging/rtl8192e/r8192E_dm.c
+++ b/drivers/staging/rtl8192e/r8192E_dm.c
@@ -41,54 +41,55 @@ DRxPathSel DM_RxPathSelTable;
41void dm_gpio_change_rf_callback(struct work_struct *work); 41void dm_gpio_change_rf_callback(struct work_struct *work);
42 42
43// DM --> Rate Adaptive 43// DM --> Rate Adaptive
44static void dm_check_rate_adaptive(struct net_device *dev); 44static void dm_check_rate_adaptive(struct r8192_priv *priv);
45 45
46// DM --> Bandwidth switch 46// DM --> Bandwidth switch
47static void dm_init_bandwidth_autoswitch(struct net_device *dev); 47static void dm_init_bandwidth_autoswitch(struct r8192_priv *priv);
48static void dm_bandwidth_autoswitch( struct net_device *dev); 48static void dm_bandwidth_autoswitch(struct r8192_priv *priv);
49 49
50// DM --> TX power control 50// DM --> TX power control
51static void dm_check_txpower_tracking(struct net_device *dev); 51static void dm_check_txpower_tracking(struct r8192_priv *priv);
52 52
53// DM --> Dynamic Init Gain by RSSI 53// DM --> Dynamic Init Gain by RSSI
54static void dm_dig_init(struct net_device *dev); 54static void dm_dig_init(struct r8192_priv *priv);
55static void dm_ctrl_initgain_byrssi(struct net_device *dev); 55static void dm_ctrl_initgain_byrssi(struct r8192_priv *priv);
56static void dm_ctrl_initgain_byrssi_highpwr(struct net_device *dev); 56static void dm_ctrl_initgain_byrssi_highpwr(struct r8192_priv *priv);
57static void dm_ctrl_initgain_byrssi_by_driverrssi( struct net_device *dev); 57static void dm_ctrl_initgain_byrssi_by_driverrssi(struct r8192_priv *priv);
58static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(struct net_device *dev); 58static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(struct r8192_priv *priv);
59static void dm_initial_gain(struct net_device *dev); 59static void dm_initial_gain(struct r8192_priv *priv);
60static void dm_pd_th(struct net_device *dev); 60static void dm_pd_th(struct r8192_priv *priv);
61static void dm_cs_ratio(struct net_device *dev); 61static void dm_cs_ratio(struct r8192_priv *priv);
62 62
63static void dm_init_ctstoself(struct net_device *dev); 63static void dm_init_ctstoself(struct r8192_priv *priv);
64// DM --> EDCA turboe mode control 64// DM --> EDCA turboe mode control
65static void dm_check_edca_turbo(struct net_device *dev); 65static void dm_check_edca_turbo(struct r8192_priv *priv);
66static void dm_init_edca_turbo(struct r8192_priv *priv);
66 67
67// DM --> HW RF control 68// DM --> HW RF control
68static void dm_check_rfctrl_gpio(struct net_device *dev); 69static void dm_check_rfctrl_gpio(struct r8192_priv *priv);
69
70// DM --> Check PBC
71static void dm_check_pbc_gpio(struct net_device *dev);
72 70
73// DM --> Check current RX RF path state 71// DM --> Check current RX RF path state
74static void dm_check_rx_path_selection(struct net_device *dev); 72static void dm_check_rx_path_selection(struct r8192_priv *priv);
75static void dm_init_rxpath_selection(struct net_device *dev); 73static void dm_init_rxpath_selection(struct r8192_priv *priv);
76static void dm_rxpath_sel_byrssi(struct net_device *dev); 74static void dm_rxpath_sel_byrssi(struct r8192_priv *priv);
77 75
78// DM --> Fsync for broadcom ap 76// DM --> Fsync for broadcom ap
79static void dm_init_fsync(struct net_device *dev); 77static void dm_init_fsync(struct r8192_priv *priv);
80static void dm_deInit_fsync(struct net_device *dev); 78static void dm_deInit_fsync(struct r8192_priv *priv);
81 79
82static void dm_check_txrateandretrycount(struct net_device *dev); 80static void dm_check_txrateandretrycount(struct r8192_priv *priv);
81static void dm_check_fsync(struct r8192_priv *priv);
83 82
84 83
85/*---------------------Define of Tx Power Control For Near/Far Range --------*/ //Add by Jacken 2008/02/18 84/*---------------------Define of Tx Power Control For Near/Far Range --------*/ //Add by Jacken 2008/02/18
86static void dm_init_dynamic_txpower(struct net_device *dev); 85static void dm_init_dynamic_txpower(struct r8192_priv *priv);
87static void dm_dynamic_txpower(struct net_device *dev); 86static void dm_dynamic_txpower(struct r8192_priv *priv);
88 87
89// DM --> For rate adaptive and DIG, we must send RSSI to firmware 88// DM --> For rate adaptive and DIG, we must send RSSI to firmware
90static void dm_send_rssi_tofw(struct net_device *dev); 89static void dm_send_rssi_tofw(struct r8192_priv *priv);
91static void dm_ctstoself(struct net_device *dev); 90static void dm_ctstoself(struct r8192_priv *priv);
91
92static void dm_fsync_timer_callback(unsigned long data);
92 93
93/* 94/*
94 * Prepare SW resource for HW dynamic mechanism. 95 * Prepare SW resource for HW dynamic mechanism.
@@ -102,47 +103,48 @@ void init_hal_dm(struct net_device *dev)
102 priv->undecorated_smoothed_pwdb = -1; 103 priv->undecorated_smoothed_pwdb = -1;
103 104
104 //Initial TX Power Control for near/far range , add by amy 2008/05/15, porting from windows code. 105 //Initial TX Power Control for near/far range , add by amy 2008/05/15, porting from windows code.
105 dm_init_dynamic_txpower(dev); 106 dm_init_dynamic_txpower(priv);
106 init_rate_adaptive(dev); 107 init_rate_adaptive(dev);
107 //dm_initialize_txpower_tracking(dev); 108 //dm_initialize_txpower_tracking(dev);
108 dm_dig_init(dev); 109 dm_dig_init(priv);
109 dm_init_edca_turbo(dev); 110 dm_init_edca_turbo(priv);
110 dm_init_bandwidth_autoswitch(dev); 111 dm_init_bandwidth_autoswitch(priv);
111 dm_init_fsync(dev); 112 dm_init_fsync(priv);
112 dm_init_rxpath_selection(dev); 113 dm_init_rxpath_selection(priv);
113 dm_init_ctstoself(dev); 114 dm_init_ctstoself(priv);
114 INIT_DELAYED_WORK(&priv->gpio_change_rf_wq, dm_gpio_change_rf_callback); 115 INIT_DELAYED_WORK(&priv->gpio_change_rf_wq, dm_gpio_change_rf_callback);
115 116
116} 117}
117 118
118void deinit_hal_dm(struct net_device *dev) 119void deinit_hal_dm(struct net_device *dev)
119{ 120{
121 struct r8192_priv *priv = ieee80211_priv(dev);
120 122
121 dm_deInit_fsync(dev); 123 dm_deInit_fsync(priv);
122
123} 124}
124 125
125void hal_dm_watchdog(struct net_device *dev) 126void hal_dm_watchdog(struct net_device *dev)
126{ 127{
128 struct r8192_priv *priv = ieee80211_priv(dev);
129
127 /*Add by amy 2008/05/15 ,porting from windows code.*/ 130 /*Add by amy 2008/05/15 ,porting from windows code.*/
128 dm_check_rate_adaptive(dev); 131 dm_check_rate_adaptive(priv);
129 dm_dynamic_txpower(dev); 132 dm_dynamic_txpower(priv);
130 dm_check_txrateandretrycount(dev); 133 dm_check_txrateandretrycount(priv);
131 134
132 dm_check_txpower_tracking(dev); 135 dm_check_txpower_tracking(priv);
133 136
134 dm_ctrl_initgain_byrssi(dev); 137 dm_ctrl_initgain_byrssi(priv);
135 dm_check_edca_turbo(dev); 138 dm_check_edca_turbo(priv);
136 dm_bandwidth_autoswitch(dev); 139 dm_bandwidth_autoswitch(priv);
137 140
138 dm_check_rfctrl_gpio(dev); 141 dm_check_rfctrl_gpio(priv);
139 dm_check_rx_path_selection(dev); 142 dm_check_rx_path_selection(priv);
140 dm_check_fsync(dev); 143 dm_check_fsync(priv);
141 144
142 // Add by amy 2008-05-15 porting from windows code. 145 // Add by amy 2008-05-15 porting from windows code.
143 dm_check_pbc_gpio(dev); 146 dm_send_rssi_tofw(priv);
144 dm_send_rssi_tofw(dev); 147 dm_ctstoself(priv);
145 dm_ctstoself(dev);
146} 148}
147 149
148 150
@@ -198,9 +200,8 @@ void init_rate_adaptive(struct net_device * dev)
198} 200}
199 201
200 202
201static void dm_check_rate_adaptive(struct net_device * dev) 203static void dm_check_rate_adaptive(struct r8192_priv *priv)
202{ 204{
203 struct r8192_priv *priv = ieee80211_priv(dev);
204 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo; 205 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
205 prate_adaptive pra = (prate_adaptive)&priv->rate_adaptive; 206 prate_adaptive pra = (prate_adaptive)&priv->rate_adaptive;
206 u32 currentRATR, targetRATR = 0; 207 u32 currentRATR, targetRATR = 0;
@@ -312,7 +313,7 @@ static void dm_check_rate_adaptive(struct net_device * dev)
312 } 313 }
313 314
314 // For RTL819X, if pairwisekey = wep/tkip, we support only MCS0~7. 315 // For RTL819X, if pairwisekey = wep/tkip, we support only MCS0~7.
315 if(priv->ieee80211->GetHalfNmodeSupportByAPsHandler(dev)) 316 if(priv->ieee80211->GetHalfNmodeSupportByAPsHandler(priv->ieee80211->dev))
316 targetRATR &= 0xf00fffff; 317 targetRATR &= 0xf00fffff;
317 318
318 // 319 //
@@ -343,10 +344,8 @@ static void dm_check_rate_adaptive(struct net_device * dev)
343} 344}
344 345
345 346
346static void dm_init_bandwidth_autoswitch(struct net_device * dev) 347static void dm_init_bandwidth_autoswitch(struct r8192_priv *priv)
347{ 348{
348 struct r8192_priv *priv = ieee80211_priv(dev);
349
350 priv->ieee80211->bandwidth_auto_switch.threshold_20Mhzto40Mhz = BW_AUTO_SWITCH_LOW_HIGH; 349 priv->ieee80211->bandwidth_auto_switch.threshold_20Mhzto40Mhz = BW_AUTO_SWITCH_LOW_HIGH;
351 priv->ieee80211->bandwidth_auto_switch.threshold_40Mhzto20Mhz = BW_AUTO_SWITCH_HIGH_LOW; 350 priv->ieee80211->bandwidth_auto_switch.threshold_40Mhzto20Mhz = BW_AUTO_SWITCH_HIGH_LOW;
352 priv->ieee80211->bandwidth_auto_switch.bforced_tx20Mhz = false; 351 priv->ieee80211->bandwidth_auto_switch.bforced_tx20Mhz = false;
@@ -355,10 +354,8 @@ static void dm_init_bandwidth_autoswitch(struct net_device * dev)
355} 354}
356 355
357 356
358static void dm_bandwidth_autoswitch(struct net_device * dev) 357static void dm_bandwidth_autoswitch(struct r8192_priv *priv)
359{ 358{
360 struct r8192_priv *priv = ieee80211_priv(dev);
361
362 if(priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20 ||!priv->ieee80211->bandwidth_auto_switch.bautoswitch_enable){ 359 if(priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20 ||!priv->ieee80211->bandwidth_auto_switch.bautoswitch_enable){
363 return; 360 return;
364 }else{ 361 }else{
@@ -430,9 +427,9 @@ static const u8 CCKSwingTable_Ch14[CCK_Table_length][8] = {
430#define Tssi_Report_Value1 0x134 427#define Tssi_Report_Value1 0x134
431#define Tssi_Report_Value2 0x13e 428#define Tssi_Report_Value2 0x13e
432#define FW_Busy_Flag 0x13f 429#define FW_Busy_Flag 0x13f
433static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev) 430static void dm_TXPowerTrackingCallback_TSSI(struct r8192_priv *priv)
434 { 431{
435 struct r8192_priv *priv = ieee80211_priv(dev); 432 struct net_device *dev = priv->ieee80211->dev;
436 bool bHighpowerstate, viviflag = FALSE; 433 bool bHighpowerstate, viviflag = FALSE;
437 DCMD_TXCMD_T tx_cmd; 434 DCMD_TXCMD_T tx_cmd;
438 u8 powerlevelOFDM24G; 435 u8 powerlevelOFDM24G;
@@ -641,15 +638,15 @@ static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev)
641 if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14) 638 if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14)
642 { 639 {
643 priv->bcck_in_ch14 = TRUE; 640 priv->bcck_in_ch14 = TRUE;
644 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 641 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
645 } 642 }
646 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14) 643 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14)
647 { 644 {
648 priv->bcck_in_ch14 = FALSE; 645 priv->bcck_in_ch14 = FALSE;
649 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 646 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
650 } 647 }
651 else 648 else
652 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 649 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
653 } 650 }
654 RT_TRACE(COMP_POWER_TRACKING, "priv->rfa_txpowertrackingindex = %d\n", priv->rfa_txpowertrackingindex); 651 RT_TRACE(COMP_POWER_TRACKING, "priv->rfa_txpowertrackingindex = %d\n", priv->rfa_txpowertrackingindex);
655 RT_TRACE(COMP_POWER_TRACKING, "priv->rfa_txpowertrackingindex_real = %d\n", priv->rfa_txpowertrackingindex_real); 652 RT_TRACE(COMP_POWER_TRACKING, "priv->rfa_txpowertrackingindex_real = %d\n", priv->rfa_txpowertrackingindex_real);
@@ -679,10 +676,9 @@ static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev)
679 write_nic_byte(priv, Pw_Track_Flag, 0); 676 write_nic_byte(priv, Pw_Track_Flag, 0);
680} 677}
681 678
682static void dm_TXPowerTrackingCallback_ThermalMeter(struct net_device * dev) 679static void dm_TXPowerTrackingCallback_ThermalMeter(struct r8192_priv *priv)
683{ 680{
684#define ThermalMeterVal 9 681#define ThermalMeterVal 9
685 struct r8192_priv *priv = ieee80211_priv(dev);
686 u32 tmpRegA, TempCCk; 682 u32 tmpRegA, TempCCk;
687 u8 tmpOFDMindex, tmpCCKindex, tmpCCK20Mindex, tmpCCK40Mindex, tmpval; 683 u8 tmpOFDMindex, tmpCCKindex, tmpCCK20Mindex, tmpCCK40Mindex, tmpval;
688 int i =0, CCKSwingNeedUpdate=0; 684 int i =0, CCKSwingNeedUpdate=0;
@@ -781,7 +777,7 @@ static void dm_TXPowerTrackingCallback_ThermalMeter(struct net_device * dev)
781 777
782 if(CCKSwingNeedUpdate) 778 if(CCKSwingNeedUpdate)
783 { 779 {
784 dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); 780 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
785 } 781 }
786 if(priv->OFDM_index != tmpOFDMindex) 782 if(priv->OFDM_index != tmpOFDMindex)
787 { 783 {
@@ -796,13 +792,12 @@ static void dm_TXPowerTrackingCallback_ThermalMeter(struct net_device * dev)
796void dm_txpower_trackingcallback(struct work_struct *work) 792void dm_txpower_trackingcallback(struct work_struct *work)
797{ 793{
798 struct delayed_work *dwork = container_of(work,struct delayed_work,work); 794 struct delayed_work *dwork = container_of(work,struct delayed_work,work);
799 struct r8192_priv *priv = container_of(dwork,struct r8192_priv,txpower_tracking_wq); 795 struct r8192_priv *priv = container_of(dwork,struct r8192_priv,txpower_tracking_wq);
800 struct net_device *dev = priv->ieee80211->dev;
801 796
802 if(priv->IC_Cut >= IC_VersionCut_D) 797 if(priv->IC_Cut >= IC_VersionCut_D)
803 dm_TXPowerTrackingCallback_TSSI(dev); 798 dm_TXPowerTrackingCallback_TSSI(priv);
804 else 799 else
805 dm_TXPowerTrackingCallback_ThermalMeter(dev); 800 dm_TXPowerTrackingCallback_ThermalMeter(priv);
806} 801}
807 802
808 803
@@ -906,10 +901,8 @@ static const ccktxbbgain_struct rtl8192_cck_txbbgain_ch14_table[] = {
906 {{ 0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00 }}, 901 {{ 0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00 }},
907}; 902};
908 903
909static void dm_InitializeTXPowerTracking_TSSI(struct net_device *dev) 904static void dm_InitializeTXPowerTracking_TSSI(struct r8192_priv *priv)
910{ 905{
911 struct r8192_priv *priv = ieee80211_priv(dev);
912
913 priv->txbbgain_table = rtl8192_txbbgain_table; 906 priv->txbbgain_table = rtl8192_txbbgain_table;
914 priv->cck_txbbgain_table = rtl8192_cck_txbbgain_table; 907 priv->cck_txbbgain_table = rtl8192_cck_txbbgain_table;
915 priv->cck_txbbgain_ch14_table = rtl8192_cck_txbbgain_ch14_table; 908 priv->cck_txbbgain_ch14_table = rtl8192_cck_txbbgain_ch14_table;
@@ -920,10 +913,8 @@ static void dm_InitializeTXPowerTracking_TSSI(struct net_device *dev)
920 913
921} 914}
922 915
923static void dm_InitializeTXPowerTracking_ThermalMeter(struct net_device *dev) 916static void dm_InitializeTXPowerTracking_ThermalMeter(struct r8192_priv *priv)
924{ 917{
925 struct r8192_priv *priv = ieee80211_priv(dev);
926
927 // Tx Power tracking by Theremal Meter require Firmware R/W 3-wire. This mechanism 918 // Tx Power tracking by Theremal Meter require Firmware R/W 3-wire. This mechanism
928 // can be enabled only when Firmware R/W 3-wire is enabled. Otherwise, frequent r/w 919 // can be enabled only when Firmware R/W 3-wire is enabled. Otherwise, frequent r/w
929 // 3-wire by driver cause RF goes into wrong state. 920 // 3-wire by driver cause RF goes into wrong state.
@@ -935,20 +926,17 @@ static void dm_InitializeTXPowerTracking_ThermalMeter(struct net_device *dev)
935 priv->btxpower_trackingInit = FALSE; 926 priv->btxpower_trackingInit = FALSE;
936} 927}
937 928
938void dm_initialize_txpower_tracking(struct net_device *dev) 929void dm_initialize_txpower_tracking(struct r8192_priv *priv)
939{ 930{
940 struct r8192_priv *priv = ieee80211_priv(dev);
941
942 if(priv->IC_Cut >= IC_VersionCut_D) 931 if(priv->IC_Cut >= IC_VersionCut_D)
943 dm_InitializeTXPowerTracking_TSSI(dev); 932 dm_InitializeTXPowerTracking_TSSI(priv);
944 else 933 else
945 dm_InitializeTXPowerTracking_ThermalMeter(dev); 934 dm_InitializeTXPowerTracking_ThermalMeter(priv);
946} 935}
947 936
948 937
949static void dm_CheckTXPowerTracking_TSSI(struct net_device *dev) 938static void dm_CheckTXPowerTracking_TSSI(struct r8192_priv *priv)
950{ 939{
951 struct r8192_priv *priv = ieee80211_priv(dev);
952 static u32 tx_power_track_counter = 0; 940 static u32 tx_power_track_counter = 0;
953 RT_TRACE(COMP_POWER_TRACKING,"%s()\n",__FUNCTION__); 941 RT_TRACE(COMP_POWER_TRACKING,"%s()\n",__FUNCTION__);
954 if(read_nic_byte(priv, 0x11e) ==1) 942 if(read_nic_byte(priv, 0x11e) ==1)
@@ -963,9 +951,8 @@ static void dm_CheckTXPowerTracking_TSSI(struct net_device *dev)
963 } 951 }
964} 952}
965 953
966static void dm_CheckTXPowerTracking_ThermalMeter(struct net_device *dev) 954static void dm_CheckTXPowerTracking_ThermalMeter(struct r8192_priv *priv)
967{ 955{
968 struct r8192_priv *priv = ieee80211_priv(dev);
969 static u8 TM_Trigger=0; 956 static u8 TM_Trigger=0;
970 957
971 if(!priv->btxpower_tracking) 958 if(!priv->btxpower_tracking)
@@ -996,21 +983,18 @@ static void dm_CheckTXPowerTracking_ThermalMeter(struct net_device *dev)
996 } 983 }
997} 984}
998 985
999static void dm_check_txpower_tracking(struct net_device *dev) 986static void dm_check_txpower_tracking(struct r8192_priv *priv)
1000{ 987{
1001 struct r8192_priv *priv = ieee80211_priv(dev);
1002
1003 if(priv->IC_Cut >= IC_VersionCut_D) 988 if(priv->IC_Cut >= IC_VersionCut_D)
1004 dm_CheckTXPowerTracking_TSSI(dev); 989 dm_CheckTXPowerTracking_TSSI(priv);
1005 else 990 else
1006 dm_CheckTXPowerTracking_ThermalMeter(dev); 991 dm_CheckTXPowerTracking_ThermalMeter(priv);
1007} 992}
1008 993
1009 994
1010static void dm_CCKTxPowerAdjust_TSSI(struct net_device *dev, bool bInCH14) 995static void dm_CCKTxPowerAdjust_TSSI(struct r8192_priv *priv, bool bInCH14)
1011{ 996{
1012 u32 TempVal; 997 u32 TempVal;
1013 struct r8192_priv *priv = ieee80211_priv(dev);
1014 //Write 0xa22 0xa23 998 //Write 0xa22 0xa23
1015 TempVal = 0; 999 TempVal = 0;
1016 if(!bInCH14){ 1000 if(!bInCH14){
@@ -1057,10 +1041,10 @@ static void dm_CCKTxPowerAdjust_TSSI(struct net_device *dev, bool bInCH14)
1057 1041
1058} 1042}
1059 1043
1060static void dm_CCKTxPowerAdjust_ThermalMeter(struct net_device *dev, bool bInCH14) 1044static void dm_CCKTxPowerAdjust_ThermalMeter(struct r8192_priv *priv,
1045 bool bInCH14)
1061{ 1046{
1062 u32 TempVal; 1047 u32 TempVal;
1063 struct r8192_priv *priv = ieee80211_priv(dev);
1064 1048
1065 TempVal = 0; 1049 TempVal = 0;
1066 if(!bInCH14) 1050 if(!bInCH14)
@@ -1119,14 +1103,12 @@ static void dm_CCKTxPowerAdjust_ThermalMeter(struct net_device *dev, bool bInCH
1119 } 1103 }
1120} 1104}
1121 1105
1122void dm_cck_txpower_adjust(struct net_device *dev, bool binch14) 1106void dm_cck_txpower_adjust(struct r8192_priv *priv, bool binch14)
1123{ 1107{
1124 struct r8192_priv *priv = ieee80211_priv(dev);
1125
1126 if(priv->IC_Cut >= IC_VersionCut_D) 1108 if(priv->IC_Cut >= IC_VersionCut_D)
1127 dm_CCKTxPowerAdjust_TSSI(dev, binch14); 1109 dm_CCKTxPowerAdjust_TSSI(priv, binch14);
1128 else 1110 else
1129 dm_CCKTxPowerAdjust_ThermalMeter(dev, binch14); 1111 dm_CCKTxPowerAdjust_ThermalMeter(priv, binch14);
1130} 1112}
1131 1113
1132 1114
@@ -1200,9 +1182,8 @@ void dm_change_dynamic_initgain_thresh(struct net_device *dev, u32 dm_type, u32
1200 1182
1201 1183
1202/* Set DIG scheme init value. */ 1184/* Set DIG scheme init value. */
1203static void dm_dig_init(struct net_device *dev) 1185static void dm_dig_init(struct r8192_priv *priv)
1204{ 1186{
1205 struct r8192_priv *priv = ieee80211_priv(dev);
1206 /* 2007/10/05 MH Disable DIG scheme now. Not tested. */ 1187 /* 2007/10/05 MH Disable DIG scheme now. Not tested. */
1207 dm_digtable.dig_enable_flag = true; 1188 dm_digtable.dig_enable_flag = true;
1208 dm_digtable.dig_algorithm = DIG_ALGO_BY_RSSI; 1189 dm_digtable.dig_algorithm = DIG_ALGO_BY_RSSI;
@@ -1236,23 +1217,20 @@ static void dm_dig_init(struct net_device *dev)
1236 * gain according to different threshold. BB team provide the 1217 * gain according to different threshold. BB team provide the
1237 * suggested solution. 1218 * suggested solution.
1238 */ 1219 */
1239static void dm_ctrl_initgain_byrssi(struct net_device *dev) 1220static void dm_ctrl_initgain_byrssi(struct r8192_priv *priv)
1240{ 1221{
1241
1242 if (dm_digtable.dig_enable_flag == false) 1222 if (dm_digtable.dig_enable_flag == false)
1243 return; 1223 return;
1244 1224
1245 if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM) 1225 if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM)
1246 dm_ctrl_initgain_byrssi_by_fwfalse_alarm(dev); 1226 dm_ctrl_initgain_byrssi_by_fwfalse_alarm(priv);
1247 else if(dm_digtable.dig_algorithm == DIG_ALGO_BY_RSSI) 1227 else if(dm_digtable.dig_algorithm == DIG_ALGO_BY_RSSI)
1248 dm_ctrl_initgain_byrssi_by_driverrssi(dev); 1228 dm_ctrl_initgain_byrssi_by_driverrssi(priv);
1249} 1229}
1250 1230
1251 1231
1252static void dm_ctrl_initgain_byrssi_by_driverrssi( 1232static void dm_ctrl_initgain_byrssi_by_driverrssi(struct r8192_priv *priv)
1253 struct net_device *dev)
1254{ 1233{
1255 struct r8192_priv *priv = ieee80211_priv(dev);
1256 u8 i; 1234 u8 i;
1257 static u8 fw_dig=0; 1235 static u8 fw_dig=0;
1258 1236
@@ -1277,19 +1255,17 @@ static void dm_ctrl_initgain_byrssi_by_driverrssi(
1277 if(dm_digtable.dbg_mode == DM_DBG_OFF) 1255 if(dm_digtable.dbg_mode == DM_DBG_OFF)
1278 dm_digtable.rssi_val = priv->undecorated_smoothed_pwdb; 1256 dm_digtable.rssi_val = priv->undecorated_smoothed_pwdb;
1279 1257
1280 dm_initial_gain(dev); 1258 dm_initial_gain(priv);
1281 dm_pd_th(dev); 1259 dm_pd_th(priv);
1282 dm_cs_ratio(dev); 1260 dm_cs_ratio(priv);
1283 if(dm_digtable.dig_algorithm_switch) 1261 if(dm_digtable.dig_algorithm_switch)
1284 dm_digtable.dig_algorithm_switch = 0; 1262 dm_digtable.dig_algorithm_switch = 0;
1285 dm_digtable.pre_connect_state = dm_digtable.cur_connect_state; 1263 dm_digtable.pre_connect_state = dm_digtable.cur_connect_state;
1286 1264
1287} 1265}
1288 1266
1289static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm( 1267static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(struct r8192_priv *priv)
1290 struct net_device *dev)
1291{ 1268{
1292 struct r8192_priv *priv = ieee80211_priv(dev);
1293 static u32 reset_cnt = 0; 1269 static u32 reset_cnt = 0;
1294 u8 i; 1270 u8 i;
1295 1271
@@ -1372,7 +1348,7 @@ static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(
1372 if (dm_digtable.dig_state == DM_STA_DIG_ON && 1348 if (dm_digtable.dig_state == DM_STA_DIG_ON &&
1373 (priv->reset_count == reset_cnt)) 1349 (priv->reset_count == reset_cnt))
1374 { 1350 {
1375 dm_ctrl_initgain_byrssi_highpwr(dev); 1351 dm_ctrl_initgain_byrssi_highpwr(priv);
1376 return; 1352 return;
1377 } 1353 }
1378 else 1354 else
@@ -1424,14 +1400,12 @@ static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(
1424 1400
1425 } 1401 }
1426 1402
1427 dm_ctrl_initgain_byrssi_highpwr(dev); 1403 dm_ctrl_initgain_byrssi_highpwr(priv);
1428 1404
1429} 1405}
1430 1406
1431static void dm_ctrl_initgain_byrssi_highpwr( 1407static void dm_ctrl_initgain_byrssi_highpwr(struct r8192_priv *priv)
1432 struct net_device * dev)
1433{ 1408{
1434 struct r8192_priv *priv = ieee80211_priv(dev);
1435 static u32 reset_cnt_highpwr = 0; 1409 static u32 reset_cnt_highpwr = 0;
1436 1410
1437 // For smooth, we can not change high power DIG state in the range. 1411 // For smooth, we can not change high power DIG state in the range.
@@ -1486,10 +1460,8 @@ static void dm_ctrl_initgain_byrssi_highpwr(
1486} 1460}
1487 1461
1488 1462
1489static void dm_initial_gain( 1463static void dm_initial_gain(struct r8192_priv *priv)
1490 struct net_device * dev)
1491{ 1464{
1492 struct r8192_priv *priv = ieee80211_priv(dev);
1493 u8 initial_gain=0; 1465 u8 initial_gain=0;
1494 static u8 initialized=0, force_write=0; 1466 static u8 initialized=0, force_write=0;
1495 static u32 reset_cnt=0; 1467 static u32 reset_cnt=0;
@@ -1552,10 +1524,8 @@ static void dm_initial_gain(
1552 } 1524 }
1553} 1525}
1554 1526
1555static void dm_pd_th( 1527static void dm_pd_th(struct r8192_priv *priv)
1556 struct net_device * dev)
1557{ 1528{
1558 struct r8192_priv *priv = ieee80211_priv(dev);
1559 static u8 initialized=0, force_write=0; 1529 static u8 initialized=0, force_write=0;
1560 static u32 reset_cnt = 0; 1530 static u32 reset_cnt = 0;
1561 1531
@@ -1642,10 +1612,8 @@ static void dm_pd_th(
1642 } 1612 }
1643} 1613}
1644 1614
1645static void dm_cs_ratio( 1615static void dm_cs_ratio(struct r8192_priv *priv)
1646 struct net_device * dev)
1647{ 1616{
1648 struct r8192_priv *priv = ieee80211_priv(dev);
1649 static u8 initialized=0,force_write=0; 1617 static u8 initialized=0,force_write=0;
1650 static u32 reset_cnt = 0; 1618 static u32 reset_cnt = 0;
1651 1619
@@ -1703,19 +1671,16 @@ static void dm_cs_ratio(
1703 } 1671 }
1704} 1672}
1705 1673
1706void dm_init_edca_turbo(struct net_device *dev) 1674void dm_init_edca_turbo(struct r8192_priv *priv)
1707{ 1675{
1708 struct r8192_priv *priv = ieee80211_priv(dev);
1709 1676
1710 priv->bcurrent_turbo_EDCA = false; 1677 priv->bcurrent_turbo_EDCA = false;
1711 priv->ieee80211->bis_any_nonbepkts = false; 1678 priv->ieee80211->bis_any_nonbepkts = false;
1712 priv->bis_cur_rdlstate = false; 1679 priv->bis_cur_rdlstate = false;
1713} 1680}
1714 1681
1715static void dm_check_edca_turbo( 1682static void dm_check_edca_turbo(struct r8192_priv *priv)
1716 struct net_device * dev)
1717{ 1683{
1718 struct r8192_priv *priv = ieee80211_priv(dev);
1719 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo; 1684 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
1720 //PSTA_QOS pStaQos = pMgntInfo->pStaQos; 1685 //PSTA_QOS pStaQos = pMgntInfo->pStaQos;
1721 1686
@@ -1777,7 +1742,7 @@ static void dm_check_edca_turbo(
1777 u8 mode = priv->ieee80211->mode; 1742 u8 mode = priv->ieee80211->mode;
1778 1743
1779 // For Each time updating EDCA parameter, reset EDCA turbo mode status. 1744 // For Each time updating EDCA parameter, reset EDCA turbo mode status.
1780 dm_init_edca_turbo(dev); 1745 dm_init_edca_turbo(priv);
1781 u1bAIFS = qos_parameters->aifs[0] * ((mode&(IEEE_G|IEEE_N_24G)) ?9:20) + aSifsTime; 1746 u1bAIFS = qos_parameters->aifs[0] * ((mode&(IEEE_G|IEEE_N_24G)) ?9:20) + aSifsTime;
1782 u4bAcParam = ((((u32)(qos_parameters->tx_op_limit[0]))<< AC_PARAM_TXOP_LIMIT_OFFSET)| 1747 u4bAcParam = ((((u32)(qos_parameters->tx_op_limit[0]))<< AC_PARAM_TXOP_LIMIT_OFFSET)|
1783 (((u32)(qos_parameters->cw_max[0]))<< AC_PARAM_ECW_MAX_OFFSET)| 1748 (((u32)(qos_parameters->cw_max[0]))<< AC_PARAM_ECW_MAX_OFFSET)|
@@ -1819,17 +1784,14 @@ dm_CheckEdcaTurbo_EXIT:
1819 lastRxOkCnt = priv->stats.rxbytesunicast; 1784 lastRxOkCnt = priv->stats.rxbytesunicast;
1820} 1785}
1821 1786
1822static void dm_init_ctstoself(struct net_device * dev) 1787static void dm_init_ctstoself(struct r8192_priv *priv)
1823{ 1788{
1824 struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev);
1825
1826 priv->ieee80211->bCTSToSelfEnable = TRUE; 1789 priv->ieee80211->bCTSToSelfEnable = TRUE;
1827 priv->ieee80211->CTSToSelfTH = CTSToSelfTHVal; 1790 priv->ieee80211->CTSToSelfTH = CTSToSelfTHVal;
1828} 1791}
1829 1792
1830static void dm_ctstoself(struct net_device *dev) 1793static void dm_ctstoself(struct r8192_priv *priv)
1831{ 1794{
1832 struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev);
1833 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo; 1795 PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo;
1834 static unsigned long lastTxOkCnt = 0; 1796 static unsigned long lastTxOkCnt = 0;
1835 static unsigned long lastRxOkCnt = 0; 1797 static unsigned long lastRxOkCnt = 0;
@@ -1868,9 +1830,8 @@ static void dm_ctstoself(struct net_device *dev)
1868 1830
1869 1831
1870/* Copy 8187B template for 9xseries */ 1832/* Copy 8187B template for 9xseries */
1871static void dm_check_rfctrl_gpio(struct net_device * dev) 1833static void dm_check_rfctrl_gpio(struct r8192_priv *priv)
1872{ 1834{
1873 struct r8192_priv *priv = ieee80211_priv(dev);
1874 1835
1875 // Walk around for DTM test, we will not enable HW - radio on/off because r/w 1836 // Walk around for DTM test, we will not enable HW - radio on/off because r/w
1876 // page 1 register before Lextra bus is enabled cause system fails when resuming 1837 // page 1 register before Lextra bus is enabled cause system fails when resuming
@@ -1880,11 +1841,6 @@ static void dm_check_rfctrl_gpio(struct net_device * dev)
1880 queue_delayed_work(priv->priv_wq,&priv->gpio_change_rf_wq,0); 1841 queue_delayed_work(priv->priv_wq,&priv->gpio_change_rf_wq,0);
1881} 1842}
1882 1843
1883/* Check if PBC button is pressed. */
1884static void dm_check_pbc_gpio(struct net_device *dev)
1885{
1886}
1887
1888/* PCI will not support workitem call back HW radio on-off control. */ 1844/* PCI will not support workitem call back HW radio on-off control. */
1889void dm_gpio_change_rf_callback(struct work_struct *work) 1845void dm_gpio_change_rf_callback(struct work_struct *work)
1890{ 1846{
@@ -1930,8 +1886,6 @@ void dm_rf_pathcheck_workitemcallback(struct work_struct *work)
1930{ 1886{
1931 struct delayed_work *dwork = container_of(work,struct delayed_work,work); 1887 struct delayed_work *dwork = container_of(work,struct delayed_work,work);
1932 struct r8192_priv *priv = container_of(dwork,struct r8192_priv,rfpath_check_wq); 1888 struct r8192_priv *priv = container_of(dwork,struct r8192_priv,rfpath_check_wq);
1933 struct net_device *dev =priv->ieee80211->dev;
1934 //bool bactually_set = false;
1935 u8 rfpath = 0, i; 1889 u8 rfpath = 0, i;
1936 1890
1937 1891
@@ -1950,13 +1904,13 @@ void dm_rf_pathcheck_workitemcallback(struct work_struct *work)
1950 if(!DM_RxPathSelTable.Enable) 1904 if(!DM_RxPathSelTable.Enable)
1951 return; 1905 return;
1952 1906
1953 dm_rxpath_sel_byrssi(dev); 1907 dm_rxpath_sel_byrssi(priv);
1954} 1908}
1955 1909
1956static void dm_init_rxpath_selection(struct net_device * dev) 1910static void dm_init_rxpath_selection(struct r8192_priv *priv)
1957{ 1911{
1958 u8 i; 1912 u8 i;
1959 struct r8192_priv *priv = ieee80211_priv(dev); 1913
1960 DM_RxPathSelTable.Enable = 1; //default enabled 1914 DM_RxPathSelTable.Enable = 1; //default enabled
1961 DM_RxPathSelTable.SS_TH_low = RxPathSelection_SS_TH_low; 1915 DM_RxPathSelTable.SS_TH_low = RxPathSelection_SS_TH_low;
1962 DM_RxPathSelTable.diff_TH = RxPathSelection_diff_TH; 1916 DM_RxPathSelTable.diff_TH = RxPathSelection_diff_TH;
@@ -1974,9 +1928,8 @@ static void dm_init_rxpath_selection(struct net_device * dev)
1974 } 1928 }
1975} 1929}
1976 1930
1977static void dm_rxpath_sel_byrssi(struct net_device * dev) 1931static void dm_rxpath_sel_byrssi(struct r8192_priv *priv)
1978{ 1932{
1979 struct r8192_priv *priv = ieee80211_priv(dev);
1980 u8 i, max_rssi_index=0, min_rssi_index=0, sec_rssi_index=0, rf_num=0; 1933 u8 i, max_rssi_index=0, min_rssi_index=0, sec_rssi_index=0, rf_num=0;
1981 u8 tmp_max_rssi=0, tmp_min_rssi=0, tmp_sec_rssi=0; 1934 u8 tmp_max_rssi=0, tmp_min_rssi=0, tmp_sec_rssi=0;
1982 u8 cck_default_Rx=0x2; //RF-C 1935 u8 cck_default_Rx=0x2; //RF-C
@@ -2237,16 +2190,13 @@ static void dm_rxpath_sel_byrssi(struct net_device * dev)
2237/* 2190/*
2238 * Call a workitem to check current RXRF path and Rx Path selection by RSSI. 2191 * Call a workitem to check current RXRF path and Rx Path selection by RSSI.
2239 */ 2192 */
2240static void dm_check_rx_path_selection(struct net_device *dev) 2193static void dm_check_rx_path_selection(struct r8192_priv *priv)
2241{ 2194{
2242 struct r8192_priv *priv = ieee80211_priv(dev);
2243 queue_delayed_work(priv->priv_wq,&priv->rfpath_check_wq,0); 2195 queue_delayed_work(priv->priv_wq,&priv->rfpath_check_wq,0);
2244} 2196}
2245 2197
2246static void dm_init_fsync (struct net_device *dev) 2198static void dm_init_fsync(struct r8192_priv *priv)
2247{ 2199{
2248 struct r8192_priv *priv = ieee80211_priv(dev);
2249
2250 priv->ieee80211->fsync_time_interval = 500; 2200 priv->ieee80211->fsync_time_interval = 500;
2251 priv->ieee80211->fsync_rate_bitmap = 0x0f000800; 2201 priv->ieee80211->fsync_rate_bitmap = 0x0f000800;
2252 priv->ieee80211->fsync_rssi_threshold = 30; 2202 priv->ieee80211->fsync_rssi_threshold = 30;
@@ -2258,20 +2208,19 @@ static void dm_init_fsync (struct net_device *dev)
2258 priv->framesyncMonitor = 1; // current default 0xc38 monitor on 2208 priv->framesyncMonitor = 1; // current default 0xc38 monitor on
2259 2209
2260 init_timer(&priv->fsync_timer); 2210 init_timer(&priv->fsync_timer);
2261 priv->fsync_timer.data = (unsigned long)dev; 2211 priv->fsync_timer.data = (unsigned long)priv;
2262 priv->fsync_timer.function = dm_fsync_timer_callback; 2212 priv->fsync_timer.function = dm_fsync_timer_callback;
2263} 2213}
2264 2214
2265 2215
2266static void dm_deInit_fsync(struct net_device *dev) 2216static void dm_deInit_fsync(struct r8192_priv *priv)
2267{ 2217{
2268 struct r8192_priv *priv = ieee80211_priv(dev);
2269 del_timer_sync(&priv->fsync_timer); 2218 del_timer_sync(&priv->fsync_timer);
2270} 2219}
2271 2220
2272void dm_fsync_timer_callback(unsigned long data) 2221static void dm_fsync_timer_callback(unsigned long data)
2273{ 2222{
2274 struct r8192_priv *priv = ieee80211_priv((struct net_device *)data); 2223 struct r8192_priv *priv = (struct r8192_priv *)data;
2275 u32 rate_index, rate_count = 0, rate_count_diff=0; 2224 u32 rate_index, rate_count = 0, rate_count_diff=0;
2276 bool bSwitchFromCountDiff = false; 2225 bool bSwitchFromCountDiff = false;
2277 bool bDoubleTimeInterval = false; 2226 bool bDoubleTimeInterval = false;
@@ -2379,19 +2328,15 @@ void dm_fsync_timer_callback(unsigned long data)
2379 RT_TRACE(COMP_HALDM, "rateRecord %d rateCount %d, rateCountdiff %d bSwitchFsync %d\n", priv->rate_record, rate_count, rate_count_diff , priv->bswitch_fsync); 2328 RT_TRACE(COMP_HALDM, "rateRecord %d rateCount %d, rateCountdiff %d bSwitchFsync %d\n", priv->rate_record, rate_count, rate_count_diff , priv->bswitch_fsync);
2380} 2329}
2381 2330
2382static void dm_StartHWFsync(struct net_device *dev) 2331static void dm_StartHWFsync(struct r8192_priv *priv)
2383{ 2332{
2384 struct r8192_priv *priv = ieee80211_priv(dev);
2385
2386 RT_TRACE(COMP_HALDM, "%s\n", __FUNCTION__); 2333 RT_TRACE(COMP_HALDM, "%s\n", __FUNCTION__);
2387 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c12cf); 2334 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c12cf);
2388 write_nic_byte(priv, 0xc3b, 0x41); 2335 write_nic_byte(priv, 0xc3b, 0x41);
2389} 2336}
2390 2337
2391static void dm_EndSWFsync(struct net_device *dev) 2338static void dm_EndSWFsync(struct r8192_priv *priv)
2392{ 2339{
2393 struct r8192_priv *priv = ieee80211_priv(dev);
2394
2395 RT_TRACE(COMP_HALDM, "%s\n", __FUNCTION__); 2340 RT_TRACE(COMP_HALDM, "%s\n", __FUNCTION__);
2396 del_timer_sync(&(priv->fsync_timer)); 2341 del_timer_sync(&(priv->fsync_timer));
2397 2342
@@ -2410,9 +2355,8 @@ static void dm_EndSWFsync(struct net_device *dev)
2410 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c52cd); 2355 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c52cd);
2411} 2356}
2412 2357
2413static void dm_StartSWFsync(struct net_device *dev) 2358static void dm_StartSWFsync(struct r8192_priv *priv)
2414{ 2359{
2415 struct r8192_priv *priv = ieee80211_priv(dev);
2416 u32 rateIndex; 2360 u32 rateIndex;
2417 u32 rateBitmap; 2361 u32 rateBitmap;
2418 2362
@@ -2448,21 +2392,18 @@ static void dm_StartSWFsync(struct net_device *dev)
2448 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c12cd); 2392 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c12cd);
2449} 2393}
2450 2394
2451static void dm_EndHWFsync(struct net_device *dev) 2395static void dm_EndHWFsync(struct r8192_priv *priv)
2452{ 2396{
2453 struct r8192_priv *priv = ieee80211_priv(dev);
2454
2455 RT_TRACE(COMP_HALDM,"%s\n", __FUNCTION__); 2397 RT_TRACE(COMP_HALDM,"%s\n", __FUNCTION__);
2456 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c52cd); 2398 write_nic_dword(priv, rOFDM0_RxDetector2, 0x465c52cd);
2457 write_nic_byte(priv, 0xc3b, 0x49); 2399 write_nic_byte(priv, 0xc3b, 0x49);
2458} 2400}
2459 2401
2460void dm_check_fsync(struct net_device *dev) 2402static void dm_check_fsync(struct r8192_priv *priv)
2461{ 2403{
2462#define RegC38_Default 0 2404#define RegC38_Default 0
2463#define RegC38_NonFsync_Other_AP 1 2405#define RegC38_NonFsync_Other_AP 1
2464#define RegC38_Fsync_AP_BCM 2 2406#define RegC38_Fsync_AP_BCM 2
2465 struct r8192_priv *priv = ieee80211_priv(dev);
2466 //u32 framesyncC34; 2407 //u32 framesyncC34;
2467 static u8 reg_c38_State=RegC38_Default; 2408 static u8 reg_c38_State=RegC38_Default;
2468 static u32 reset_cnt=0; 2409 static u32 reset_cnt=0;
@@ -2478,12 +2419,12 @@ void dm_check_fsync(struct net_device *dev)
2478 switch(priv->ieee80211->fsync_state) 2419 switch(priv->ieee80211->fsync_state)
2479 { 2420 {
2480 case Default_Fsync: 2421 case Default_Fsync:
2481 dm_StartHWFsync(dev); 2422 dm_StartHWFsync(priv);
2482 priv->ieee80211->fsync_state = HW_Fsync; 2423 priv->ieee80211->fsync_state = HW_Fsync;
2483 break; 2424 break;
2484 case SW_Fsync: 2425 case SW_Fsync:
2485 dm_EndSWFsync(dev); 2426 dm_EndSWFsync(priv);
2486 dm_StartHWFsync(dev); 2427 dm_StartHWFsync(priv);
2487 priv->ieee80211->fsync_state = HW_Fsync; 2428 priv->ieee80211->fsync_state = HW_Fsync;
2488 break; 2429 break;
2489 case HW_Fsync: 2430 case HW_Fsync:
@@ -2496,12 +2437,12 @@ void dm_check_fsync(struct net_device *dev)
2496 switch(priv->ieee80211->fsync_state) 2437 switch(priv->ieee80211->fsync_state)
2497 { 2438 {
2498 case Default_Fsync: 2439 case Default_Fsync:
2499 dm_StartSWFsync(dev); 2440 dm_StartSWFsync(priv);
2500 priv->ieee80211->fsync_state = SW_Fsync; 2441 priv->ieee80211->fsync_state = SW_Fsync;
2501 break; 2442 break;
2502 case HW_Fsync: 2443 case HW_Fsync:
2503 dm_EndHWFsync(dev); 2444 dm_EndHWFsync(priv);
2504 dm_StartSWFsync(dev); 2445 dm_StartSWFsync(priv);
2505 priv->ieee80211->fsync_state = SW_Fsync; 2446 priv->ieee80211->fsync_state = SW_Fsync;
2506 break; 2447 break;
2507 case SW_Fsync: 2448 case SW_Fsync:
@@ -2525,11 +2466,11 @@ void dm_check_fsync(struct net_device *dev)
2525 switch(priv->ieee80211->fsync_state) 2466 switch(priv->ieee80211->fsync_state)
2526 { 2467 {
2527 case HW_Fsync: 2468 case HW_Fsync:
2528 dm_EndHWFsync(dev); 2469 dm_EndHWFsync(priv);
2529 priv->ieee80211->fsync_state = Default_Fsync; 2470 priv->ieee80211->fsync_state = Default_Fsync;
2530 break; 2471 break;
2531 case SW_Fsync: 2472 case SW_Fsync:
2532 dm_EndSWFsync(dev); 2473 dm_EndSWFsync(priv);
2533 priv->ieee80211->fsync_state = Default_Fsync; 2474 priv->ieee80211->fsync_state = Default_Fsync;
2534 break; 2475 break;
2535 case Default_Fsync: 2476 case Default_Fsync:
@@ -2592,10 +2533,8 @@ void dm_check_fsync(struct net_device *dev)
2592 * Detect Signal strength to control TX Registry 2533 * Detect Signal strength to control TX Registry
2593 * Tx Power Control For Near/Far Range 2534 * Tx Power Control For Near/Far Range
2594 */ 2535 */
2595static void dm_init_dynamic_txpower(struct net_device *dev) 2536static void dm_init_dynamic_txpower(struct r8192_priv *priv)
2596{ 2537{
2597 struct r8192_priv *priv = ieee80211_priv(dev);
2598
2599 //Initial TX Power Control for near/far range , add by amy 2008/05/15, porting from windows code. 2538 //Initial TX Power Control for near/far range , add by amy 2008/05/15, porting from windows code.
2600 priv->ieee80211->bdynamic_txpower_enable = true; //Default to enable Tx Power Control 2539 priv->ieee80211->bdynamic_txpower_enable = true; //Default to enable Tx Power Control
2601 priv->bLastDTPFlag_High = false; 2540 priv->bLastDTPFlag_High = false;
@@ -2604,9 +2543,8 @@ static void dm_init_dynamic_txpower(struct net_device *dev)
2604 priv->bDynamicTxLowPower = false; 2543 priv->bDynamicTxLowPower = false;
2605} 2544}
2606 2545
2607static void dm_dynamic_txpower(struct net_device *dev) 2546static void dm_dynamic_txpower(struct r8192_priv *priv)
2608{ 2547{
2609 struct r8192_priv *priv = ieee80211_priv(dev);
2610 unsigned int txhipower_threshhold=0; 2548 unsigned int txhipower_threshhold=0;
2611 unsigned int txlowpower_threshold=0; 2549 unsigned int txlowpower_threshold=0;
2612 if(priv->ieee80211->bdynamic_txpower_enable != true) 2550 if(priv->ieee80211->bdynamic_txpower_enable != true)
@@ -2674,20 +2612,18 @@ static void dm_dynamic_txpower(struct net_device *dev)
2674} 2612}
2675 2613
2676//added by vivi, for read tx rate and retrycount 2614//added by vivi, for read tx rate and retrycount
2677static void dm_check_txrateandretrycount(struct net_device * dev) 2615static void dm_check_txrateandretrycount(struct r8192_priv *priv)
2678{ 2616{
2679 struct r8192_priv *priv = ieee80211_priv(dev);
2680 struct ieee80211_device* ieee = priv->ieee80211; 2617 struct ieee80211_device* ieee = priv->ieee80211;
2618
2681 //for initial tx rate 2619 //for initial tx rate
2682 ieee->softmac_stats.last_packet_rate = read_nic_byte(priv ,Initial_Tx_Rate_Reg); 2620 ieee->softmac_stats.last_packet_rate = read_nic_byte(priv ,Initial_Tx_Rate_Reg);
2683 //for tx tx retry count 2621 //for tx tx retry count
2684 ieee->softmac_stats.txretrycount = read_nic_dword(priv, Tx_Retry_Count_Reg); 2622 ieee->softmac_stats.txretrycount = read_nic_dword(priv, Tx_Retry_Count_Reg);
2685} 2623}
2686 2624
2687static void dm_send_rssi_tofw(struct net_device *dev) 2625static void dm_send_rssi_tofw(struct r8192_priv *priv)
2688{ 2626{
2689 struct r8192_priv *priv = ieee80211_priv(dev);
2690
2691 // If we test chariot, we should stop the TX command ? 2627 // If we test chariot, we should stop the TX command ?
2692 // Because 92E will always silent reset when we send tx command. We use register 2628 // Because 92E will always silent reset when we send tx command. We use register
2693 // 0x1e0(byte) to botify driver. 2629 // 0x1e0(byte) to botify driver.
diff --git a/drivers/staging/rtl8192e/r8192E_dm.h b/drivers/staging/rtl8192e/r8192E_dm.h
index 2ca9333d877..16dcb033a9e 100644
--- a/drivers/staging/rtl8192e/r8192E_dm.h
+++ b/drivers/staging/rtl8192e/r8192E_dm.h
@@ -219,7 +219,6 @@ void hal_dm_watchdog(struct net_device *dev);
219 219
220void init_rate_adaptive(struct net_device *dev); 220void init_rate_adaptive(struct net_device *dev);
221void dm_txpower_trackingcallback(struct work_struct *work); 221void dm_txpower_trackingcallback(struct work_struct *work);
222void dm_cck_txpower_adjust(struct net_device *dev,bool binch14);
223void dm_restore_dynamic_mechanism_state(struct net_device *dev); 222void dm_restore_dynamic_mechanism_state(struct net_device *dev);
224void dm_backup_dynamic_mechanism_state(struct net_device *dev); 223void dm_backup_dynamic_mechanism_state(struct net_device *dev);
225void dm_change_dynamic_initgain_thresh(struct net_device *dev, u32 dm_type, 224void dm_change_dynamic_initgain_thresh(struct net_device *dev, u32 dm_type,
@@ -227,12 +226,10 @@ void dm_change_dynamic_initgain_thresh(struct net_device *dev, u32 dm_type,
227void DM_ChangeFsyncSetting(struct net_device *dev, s32 DM_Type, s32 DM_Value); 226void DM_ChangeFsyncSetting(struct net_device *dev, s32 DM_Type, s32 DM_Value);
228void dm_force_tx_fw_info(struct net_device *dev, u32 force_type, 227void dm_force_tx_fw_info(struct net_device *dev, u32 force_type,
229 u32 force_value); 228 u32 force_value);
230void dm_init_edca_turbo(struct net_device *dev);
231void dm_rf_operation_test_callback(unsigned long data); 229void dm_rf_operation_test_callback(unsigned long data);
232void dm_rf_pathcheck_workitemcallback(struct work_struct *work); 230void dm_rf_pathcheck_workitemcallback(struct work_struct *work);
233void dm_fsync_timer_callback(unsigned long data); 231void dm_initialize_txpower_tracking(struct r8192_priv *priv);
234void dm_check_fsync(struct net_device *dev); 232void dm_cck_txpower_adjust(struct r8192_priv *priv, bool binch14);
235void dm_initialize_txpower_tracking(struct net_device *dev);
236 233
237 234
238#endif /*__R8192UDM_H__ */ 235#endif /*__R8192UDM_H__ */
diff --git a/drivers/staging/rtl8192e/r819xE_phy.c b/drivers/staging/rtl8192e/r819xE_phy.c
index e8a8b3424f3..1688997d346 100644
--- a/drivers/staging/rtl8192e/r819xE_phy.c
+++ b/drivers/staging/rtl8192e/r819xE_phy.c
@@ -1907,8 +1907,6 @@ u8 rtl8192_phy_SwChnl(struct net_device* dev, u8 channel)
1907 1907
1908static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct r8192_priv *priv) 1908static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct r8192_priv *priv)
1909{ 1909{
1910 struct net_device *dev = priv->ieee80211->dev;
1911
1912 switch(priv->CurrentChannelBW) 1910 switch(priv->CurrentChannelBW)
1913 { 1911 {
1914 /* 20 MHz channel*/ 1912 /* 20 MHz channel*/
@@ -1927,15 +1925,15 @@ static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct r8192_priv *priv)
1927 if(priv->ieee80211->current_network.channel== 14 && !priv->bcck_in_ch14) 1925 if(priv->ieee80211->current_network.channel== 14 && !priv->bcck_in_ch14)
1928 { 1926 {
1929 priv->bcck_in_ch14 = TRUE; 1927 priv->bcck_in_ch14 = TRUE;
1930 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 1928 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
1931 } 1929 }
1932 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14) 1930 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14)
1933 { 1931 {
1934 priv->bcck_in_ch14 = FALSE; 1932 priv->bcck_in_ch14 = FALSE;
1935 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 1933 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
1936 } 1934 }
1937 else 1935 else
1938 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 1936 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
1939 break; 1937 break;
1940 1938
1941 /* 40 MHz channel*/ 1939 /* 40 MHz channel*/
@@ -1953,23 +1951,21 @@ static void CCK_Tx_Power_Track_BW_Switch_TSSI(struct r8192_priv *priv)
1953 if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14) 1951 if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14)
1954 { 1952 {
1955 priv->bcck_in_ch14 = TRUE; 1953 priv->bcck_in_ch14 = TRUE;
1956 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 1954 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
1957 } 1955 }
1958 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14) 1956 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14)
1959 { 1957 {
1960 priv->bcck_in_ch14 = FALSE; 1958 priv->bcck_in_ch14 = FALSE;
1961 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 1959 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
1962 } 1960 }
1963 else 1961 else
1964 dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); 1962 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
1965 break; 1963 break;
1966 } 1964 }
1967} 1965}
1968 1966
1969static void CCK_Tx_Power_Track_BW_Switch_ThermalMeter(struct r8192_priv *priv) 1967static void CCK_Tx_Power_Track_BW_Switch_ThermalMeter(struct r8192_priv *priv)
1970{ 1968{
1971 struct net_device *dev = priv->ieee80211->dev;
1972
1973 if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14) 1969 if(priv->ieee80211->current_network.channel == 14 && !priv->bcck_in_ch14)
1974 priv->bcck_in_ch14 = TRUE; 1970 priv->bcck_in_ch14 = TRUE;
1975 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14) 1971 else if(priv->ieee80211->current_network.channel != 14 && priv->bcck_in_ch14)
@@ -1992,7 +1988,7 @@ static void CCK_Tx_Power_Track_BW_Switch_ThermalMeter(struct r8192_priv *priv)
1992 RT_TRACE(COMP_POWER_TRACKING, "40MHz, CCK_Tx_Power_Track_BW_Switch_ThermalMeter(), CCK_index = %d\n", priv->CCK_index); 1988 RT_TRACE(COMP_POWER_TRACKING, "40MHz, CCK_Tx_Power_Track_BW_Switch_ThermalMeter(), CCK_index = %d\n", priv->CCK_index);
1993 break; 1989 break;
1994 } 1990 }
1995 dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); 1991 dm_cck_txpower_adjust(priv, priv->bcck_in_ch14);
1996} 1992}
1997 1993
1998static void CCK_Tx_Power_Track_BW_Switch(struct r8192_priv *priv) 1994static void CCK_Tx_Power_Track_BW_Switch(struct r8192_priv *priv)