aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Miller <amiller@amilx.com>2012-03-15 15:05:20 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-03-15 17:06:32 -0400
commit536d190d77db6eb5a67ad79bedac0892f36dee12 (patch)
tree027fdd7e4c459304c1439dc19552128d0d64f274
parent1748d2de4edca52a34966d8d4f8fdd47cc459709 (diff)
Staging: rtl8187se: r8180_dm.c: Fix spacing issues
Fix spacing around keywords, '*', binary and ternary operators, and fix the format of statments and function declaration. Signed-off-by: Andrew Miller <amiller@amilx.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/rtl8187se/r8180_dm.c442
1 files changed, 197 insertions, 245 deletions
diff --git a/drivers/staging/rtl8187se/r8180_dm.c b/drivers/staging/rtl8187se/r8180_dm.c
index bd2cf4acb578..02bffa9bddc7 100644
--- a/drivers/staging/rtl8187se/r8180_dm.c
+++ b/drivers/staging/rtl8187se/r8180_dm.c
@@ -36,10 +36,7 @@ bool CheckHighPower(struct net_device *dev)
36// and they are related to OFDM and MAC registers. 36// and they are related to OFDM and MAC registers.
37// So, we don't want to update it so frequently in per-Rx packet base. 37// So, we don't want to update it so frequently in per-Rx packet base.
38// 38//
39void 39void DoTxHighPower(struct net_device *dev)
40DoTxHighPower(
41 struct net_device *dev
42 )
43{ 40{
44 struct r8180_priv *priv = ieee80211_priv(dev); 41 struct r8180_priv *priv = ieee80211_priv(dev);
45 u16 HiPwrUpperTh = 0; 42 u16 HiPwrUpperTh = 0;
@@ -65,7 +62,7 @@ DoTxHighPower(
65 62
66 // printk("DoTxHighPower() - UndecoratedSmoothedSS:%d, CurCCKRSSI = %d , bCurCCKPkt= %d \n", priv->UndecoratedSmoothedSS, priv->CurCCKRSSI, priv->bCurCCKPkt ); 63 // printk("DoTxHighPower() - UndecoratedSmoothedSS:%d, CurCCKRSSI = %d , bCurCCKPkt= %d \n", priv->UndecoratedSmoothedSS, priv->CurCCKRSSI, priv->bCurCCKPkt );
67 64
68 if((priv->UndecoratedSmoothedSS > HiPwrUpperTh) || 65 if ((priv->UndecoratedSmoothedSS > HiPwrUpperTh) ||
69 (priv->bCurCCKPkt && (priv->CurCCKRSSI > RSSIHiPwrUpperTh))) { 66 (priv->bCurCCKPkt && (priv->CurCCKRSSI > RSSIHiPwrUpperTh))) {
70 // Stevenl suggested that degrade 8dbm in high power sate. 2007-12-04 Isaiah 67 // Stevenl suggested that degrade 8dbm in high power sate. 2007-12-04 Isaiah
71 68
@@ -74,7 +71,7 @@ DoTxHighPower(
74 u1bTmp= read_nic_byte(dev, CCK_TXAGC); 71 u1bTmp= read_nic_byte(dev, CCK_TXAGC);
75 72
76 // If it never enter High Power. 73 // If it never enter High Power.
77 if( CckTxPwrIdx == u1bTmp) { 74 if (CckTxPwrIdx == u1bTmp) {
78 u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm 75 u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm
79 write_nic_byte(dev, CCK_TXAGC, u1bTmp); 76 write_nic_byte(dev, CCK_TXAGC, u1bTmp);
80 77
@@ -83,21 +80,21 @@ DoTxHighPower(
83 write_nic_byte(dev, OFDM_TXAGC, u1bTmp); 80 write_nic_byte(dev, OFDM_TXAGC, u1bTmp);
84 } 81 }
85 82
86 } else if((priv->UndecoratedSmoothedSS < HiPwrLowerTh) && 83 } else if ((priv->UndecoratedSmoothedSS < HiPwrLowerTh) &&
87 (!priv->bCurCCKPkt || priv->CurCCKRSSI < RSSIHiPwrLowerTh)) { 84 (!priv->bCurCCKPkt || priv->CurCCKRSSI < RSSIHiPwrLowerTh)) {
88 // printk("DoTxHighPower() - lower Power - UndecoratedSmoothedSS:%d, HiPwrUpperTh = %d \n", priv->UndecoratedSmoothedSS, HiPwrLowerTh ); 85 // printk("DoTxHighPower() - lower Power - UndecoratedSmoothedSS:%d, HiPwrUpperTh = %d \n", priv->UndecoratedSmoothedSS, HiPwrLowerTh );
89 if(priv->bToUpdateTxPwr) { 86 if (priv->bToUpdateTxPwr) {
90 priv->bToUpdateTxPwr = false; 87 priv->bToUpdateTxPwr = false;
91 //SD3 required. 88 //SD3 required.
92 u1bTmp= read_nic_byte(dev, CCK_TXAGC); 89 u1bTmp= read_nic_byte(dev, CCK_TXAGC);
93 if(u1bTmp < CckTxPwrIdx) { 90 if (u1bTmp < CckTxPwrIdx) {
94 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm 91 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm
95 //write_nic_byte(dev, CCK_TXAGC, u1bTmp); 92 //write_nic_byte(dev, CCK_TXAGC, u1bTmp);
96 write_nic_byte(dev, CCK_TXAGC, CckTxPwrIdx); 93 write_nic_byte(dev, CCK_TXAGC, CckTxPwrIdx);
97 } 94 }
98 95
99 u1bTmp= read_nic_byte(dev, OFDM_TXAGC); 96 u1bTmp= read_nic_byte(dev, OFDM_TXAGC);
100 if(u1bTmp < OfdmTxPwrIdx) { 97 if (u1bTmp < OfdmTxPwrIdx) {
101 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm 98 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm
102 //write_nic_byte(dev, OFDM_TXAGC, u1bTmp); 99 //write_nic_byte(dev, OFDM_TXAGC, u1bTmp);
103 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); 100 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx);
@@ -115,7 +112,7 @@ DoTxHighPower(
115// Because of some event happened, e.g. CCX TPC, High Power Mechanism, 112// Because of some event happened, e.g. CCX TPC, High Power Mechanism,
116// We update Tx power of current channel again. 113// We update Tx power of current channel again.
117// 114//
118void rtl8180_tx_pw_wq (struct work_struct *work) 115void rtl8180_tx_pw_wq(struct work_struct *work)
119{ 116{
120// struct r8180_priv *priv = container_of(work, struct r8180_priv, watch_dog_wq); 117// struct r8180_priv *priv = container_of(work, struct r8180_priv, watch_dog_wq);
121// struct ieee80211_device * ieee = (struct ieee80211_device*) 118// struct ieee80211_device * ieee = (struct ieee80211_device*)
@@ -136,22 +133,19 @@ void rtl8180_tx_pw_wq (struct work_struct *work)
136// Description: 133// Description:
137// Return TRUE if we shall perform DIG Mecahnism, FALSE otherwise. 134// Return TRUE if we shall perform DIG Mecahnism, FALSE otherwise.
138// 135//
139bool 136bool CheckDig(struct net_device *dev)
140CheckDig(
141 struct net_device *dev
142 )
143{ 137{
144 struct r8180_priv *priv = ieee80211_priv(dev); 138 struct r8180_priv *priv = ieee80211_priv(dev);
145 struct ieee80211_device *ieee = priv->ieee80211; 139 struct ieee80211_device *ieee = priv->ieee80211;
146 140
147 if(!priv->bDigMechanism) 141 if (!priv->bDigMechanism)
148 return false; 142 return false;
149 143
150 if(ieee->state != IEEE80211_LINKED) 144 if (ieee->state != IEEE80211_LINKED)
151 return false; 145 return false;
152 146
153 //if(priv->CurrentOperaRate < 36) // Schedule Dig under all OFDM rates. By Bruce, 2007-06-01. 147 //if(priv->CurrentOperaRate < 36) // Schedule Dig under all OFDM rates. By Bruce, 2007-06-01.
154 if((priv->ieee80211->rate/5) < 36) // Schedule Dig under all OFDM rates. By Bruce, 2007-06-01. 148 if ((priv->ieee80211->rate / 5) < 36) // Schedule Dig under all OFDM rates. By Bruce, 2007-06-01.
155 return false; 149 return false;
156 return true; 150 return true;
157} 151}
@@ -159,17 +153,14 @@ CheckDig(
159// Description: 153// Description:
160// Implementation of DIG for Zebra and Zebra2. 154// Implementation of DIG for Zebra and Zebra2.
161// 155//
162void 156void DIG_Zebra(struct net_device *dev)
163DIG_Zebra(
164 struct net_device *dev
165 )
166{ 157{
167 struct r8180_priv *priv = ieee80211_priv(dev); 158 struct r8180_priv *priv = ieee80211_priv(dev);
168 u16 CCKFalseAlarm, OFDMFalseAlarm; 159 u16 CCKFalseAlarm, OFDMFalseAlarm;
169 u16 OfdmFA1, OfdmFA2; 160 u16 OfdmFA1, OfdmFA2;
170 int InitialGainStep = 7; // The number of initial gain stages. 161 int InitialGainStep = 7; // The number of initial gain stages.
171 int LowestGainStage = 4; // The capable lowest stage of performing dig workitem. 162 int LowestGainStage = 4; // The capable lowest stage of performing dig workitem.
172 u32 AwakePeriodIn2Sec=0; 163 u32 AwakePeriodIn2Sec = 0;
173 164
174 //printk("---------> DIG_Zebra()\n"); 165 //printk("---------> DIG_Zebra()\n");
175 166
@@ -182,23 +173,23 @@ DIG_Zebra(
182// printk("DIG**********OFDM False Alarm: %#X \n",OFDMFalseAlarm); 173// printk("DIG**********OFDM False Alarm: %#X \n",OFDMFalseAlarm);
183 174
184 // The number of initial gain steps is different, by Bruce, 2007-04-13. 175 // The number of initial gain steps is different, by Bruce, 2007-04-13.
185 if (priv->InitialGain == 0 ) { //autoDIG 176 if (priv->InitialGain == 0) { //autoDIG
186 // Advised from SD3 DZ 177 // Advised from SD3 DZ
187 priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm) 178 priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm)
188 } 179 }
189 // Advised from SD3 DZ 180 // Advised from SD3 DZ
190 OfdmFA1 = 0x20; 181 OfdmFA1 = 0x20;
191 182
192#if 1 //lzm reserved 080826 183#if 1 //lzm reserved 080826
193 AwakePeriodIn2Sec = (2000-priv ->DozePeriodInPast2Sec); 184 AwakePeriodIn2Sec = (2000 - priv->DozePeriodInPast2Sec);
194 //printk("&&& DozePeriod=%d AwakePeriod=%d\n", priv->DozePeriodInPast2Sec, AwakePeriodIn2Sec); 185 //printk("&&& DozePeriod=%d AwakePeriod=%d\n", priv->DozePeriodInPast2Sec, AwakePeriodIn2Sec);
195 priv ->DozePeriodInPast2Sec=0; 186 priv ->DozePeriodInPast2Sec = 0;
196 187
197 if(AwakePeriodIn2Sec) { 188 if (AwakePeriodIn2Sec) {
198 //RT_TRACE(COMP_DIG, DBG_TRACE, ("DIG: AwakePeriodIn2Sec(%d) - FATh(0x%X , 0x%X) ->",AwakePeriodIn2Sec, OfdmFA1, OfdmFA2)); 189 //RT_TRACE(COMP_DIG, DBG_TRACE, ("DIG: AwakePeriodIn2Sec(%d) - FATh(0x%X , 0x%X) ->",AwakePeriodIn2Sec, OfdmFA1, OfdmFA2));
199 // adjuest DIG threshold. 190 // adjuest DIG threshold.
200 OfdmFA1 = (u16)((OfdmFA1*AwakePeriodIn2Sec) / 2000) ; 191 OfdmFA1 = (u16)((OfdmFA1 * AwakePeriodIn2Sec) / 2000) ;
201 OfdmFA2 = (u16)((OfdmFA2*AwakePeriodIn2Sec) / 2000) ; 192 OfdmFA2 = (u16)((OfdmFA2 * AwakePeriodIn2Sec) / 2000) ;
202 //RT_TRACE(COMP_DIG, DBG_TRACE, ("( 0x%X , 0x%X)\n", OfdmFA1, OfdmFA2)); 193 //RT_TRACE(COMP_DIG, DBG_TRACE, ("( 0x%X , 0x%X)\n", OfdmFA1, OfdmFA2));
203 } else { 194 } else {
204 ;//RT_TRACE(COMP_DIG, DBG_WARNING, ("ERROR!! AwakePeriodIn2Sec should not be ZERO!!\n")); 195 ;//RT_TRACE(COMP_DIG, DBG_WARNING, ("ERROR!! AwakePeriodIn2Sec should not be ZERO!!\n"));
@@ -211,10 +202,10 @@ DIG_Zebra(
211 if (OFDMFalseAlarm > OfdmFA1) { 202 if (OFDMFalseAlarm > OfdmFA1) {
212 if (OFDMFalseAlarm > OfdmFA2) { 203 if (OFDMFalseAlarm > OfdmFA2) {
213 priv->DIG_NumberFallbackVote++; 204 priv->DIG_NumberFallbackVote++;
214 if (priv->DIG_NumberFallbackVote >1) { 205 if (priv->DIG_NumberFallbackVote > 1) {
215 //serious OFDM False Alarm, need fallback 206 //serious OFDM False Alarm, need fallback
216 if (priv->InitialGain < InitialGainStep) { 207 if (priv->InitialGain < InitialGainStep) {
217 priv->InitialGainBackUp= priv->InitialGain; 208 priv->InitialGainBackUp = priv->InitialGain;
218 209
219 priv->InitialGain = (priv->InitialGain + 1); 210 priv->InitialGain = (priv->InitialGain + 1);
220// printk("DIG**********OFDM False Alarm: %#X, OfdmFA1: %#X, OfdmFA2: %#X\n", OFDMFalseAlarm, OfdmFA1, OfdmFA2); 211// printk("DIG**********OFDM False Alarm: %#X, OfdmFA1: %#X, OfdmFA2: %#X\n", OFDMFalseAlarm, OfdmFA1, OfdmFA2);
@@ -222,21 +213,21 @@ DIG_Zebra(
222 UpdateInitialGain(dev); 213 UpdateInitialGain(dev);
223 } 214 }
224 priv->DIG_NumberFallbackVote = 0; 215 priv->DIG_NumberFallbackVote = 0;
225 priv->DIG_NumberUpgradeVote=0; 216 priv->DIG_NumberUpgradeVote = 0;
226 } 217 }
227 } else { 218 } else {
228 if (priv->DIG_NumberFallbackVote) 219 if (priv->DIG_NumberFallbackVote)
229 priv->DIG_NumberFallbackVote--; 220 priv->DIG_NumberFallbackVote--;
230 } 221 }
231 priv->DIG_NumberUpgradeVote=0; 222 priv->DIG_NumberUpgradeVote = 0;
232 } else { 223 } else {
233 if (priv->DIG_NumberFallbackVote) 224 if (priv->DIG_NumberFallbackVote)
234 priv->DIG_NumberFallbackVote--; 225 priv->DIG_NumberFallbackVote--;
235 priv->DIG_NumberUpgradeVote++; 226 priv->DIG_NumberUpgradeVote++;
236 227
237 if (priv->DIG_NumberUpgradeVote>9) { 228 if (priv->DIG_NumberUpgradeVote > 9) {
238 if (priv->InitialGain > LowestGainStage) { // In 87B, m78dBm means State 4 (m864dBm) 229 if (priv->InitialGain > LowestGainStage) { // In 87B, m78dBm means State 4 (m864dBm)
239 priv->InitialGainBackUp= priv->InitialGain; 230 priv->InitialGainBackUp = priv->InitialGain;
240 231
241 priv->InitialGain = (priv->InitialGain - 1); 232 priv->InitialGain = (priv->InitialGain - 1);
242// printk("DIG**********OFDM False Alarm: %#X, OfdmFA1: %#X, OfdmFA2: %#X\n", OFDMFalseAlarm, OfdmFA1, OfdmFA2); 233// printk("DIG**********OFDM False Alarm: %#X, OfdmFA1: %#X, OfdmFA2: %#X\n", OFDMFalseAlarm, OfdmFA1, OfdmFA2);
@@ -244,7 +235,7 @@ DIG_Zebra(
244 UpdateInitialGain(dev); 235 UpdateInitialGain(dev);
245 } 236 }
246 priv->DIG_NumberFallbackVote = 0; 237 priv->DIG_NumberFallbackVote = 0;
247 priv->DIG_NumberUpgradeVote=0; 238 priv->DIG_NumberUpgradeVote = 0;
248 } 239 }
249 } 240 }
250 241
@@ -256,13 +247,12 @@ DIG_Zebra(
256// Description: 247// Description:
257// Dispatch DIG implementation according to RF. 248// Dispatch DIG implementation according to RF.
258// 249//
259void 250void DynamicInitGain(struct net_device *dev)
260DynamicInitGain(struct net_device *dev)
261{ 251{
262 DIG_Zebra(dev); 252 DIG_Zebra(dev);
263} 253}
264 254
265void rtl8180_hw_dig_wq (struct work_struct *work) 255void rtl8180_hw_dig_wq(struct work_struct *work)
266{ 256{
267 struct delayed_work *dwork = to_delayed_work(work); 257 struct delayed_work *dwork = to_delayed_work(work);
268 struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,hw_dig_wq); 258 struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,hw_dig_wq);
@@ -278,10 +268,7 @@ void rtl8180_hw_dig_wq (struct work_struct *work)
278 268
279} 269}
280 270
281int 271int IncludedInSupportedRates(struct r8180_priv *priv, u8 TxRate)
282IncludedInSupportedRates(
283 struct r8180_priv *priv,
284 u8 TxRate )
285{ 272{
286 u8 rate_len; 273 u8 rate_len;
287 u8 rate_ex_len; 274 u8 rate_ex_len;
@@ -292,14 +279,14 @@ IncludedInSupportedRates(
292 279
293 rate_len = priv->ieee80211->current_network.rates_len; 280 rate_len = priv->ieee80211->current_network.rates_len;
294 rate_ex_len = priv->ieee80211->current_network.rates_ex_len; 281 rate_ex_len = priv->ieee80211->current_network.rates_ex_len;
295 for( idx=0; idx< rate_len; idx++ ) { 282 for (idx=0; idx < rate_len; idx++) {
296 if( (priv->ieee80211->current_network.rates[idx] & RateMask) == NaiveTxRate ) { 283 if ((priv->ieee80211->current_network.rates[idx] & RateMask) == NaiveTxRate) {
297 Found = 1; 284 Found = 1;
298 goto found_rate; 285 goto found_rate;
299 } 286 }
300 } 287 }
301 for( idx=0; idx< rate_ex_len; idx++ ) { 288 for (idx = 0; idx < rate_ex_len; idx++) {
302 if( (priv->ieee80211->current_network.rates_ex[idx] & RateMask) == NaiveTxRate ) { 289 if ((priv->ieee80211->current_network.rates_ex[idx] & RateMask) == NaiveTxRate) {
303 Found = 1; 290 Found = 1;
304 goto found_rate; 291 goto found_rate;
305 } 292 }
@@ -315,17 +302,13 @@ IncludedInSupportedRates(
315// Return the upgrade rate if it is successed, otherwise return the input rate. 302// Return the upgrade rate if it is successed, otherwise return the input rate.
316// By Bruce, 2007-06-05. 303// By Bruce, 2007-06-05.
317// 304//
318u8 305u8 GetUpgradeTxRate(struct net_device *dev, u8 rate)
319GetUpgradeTxRate(
320 struct net_device *dev,
321 u8 rate
322 )
323{ 306{
324 struct r8180_priv *priv = ieee80211_priv(dev); 307 struct r8180_priv *priv = ieee80211_priv(dev);
325 u8 UpRate; 308 u8 UpRate;
326 309
327 // Upgrade 1 degree. 310 // Upgrade 1 degree.
328 switch(rate) { 311 switch (rate) {
329 case 108: // Up to 54Mbps. 312 case 108: // Up to 54Mbps.
330 UpRate = 108; 313 UpRate = 108;
331 break; 314 break;
@@ -367,7 +350,7 @@ GetUpgradeTxRate(
367 return rate; 350 return rate;
368 } 351 }
369 // Check if the rate is valid. 352 // Check if the rate is valid.
370 if(IncludedInSupportedRates(priv, UpRate)) { 353 if (IncludedInSupportedRates(priv, UpRate)) {
371// printk("GetUpgradeTxRate(): GetUpgrade Tx rate(%d) from %d !\n", UpRate, priv->CurrentOperaRate); 354// printk("GetUpgradeTxRate(): GetUpgrade Tx rate(%d) from %d !\n", UpRate, priv->CurrentOperaRate);
372 return UpRate; 355 return UpRate;
373 } else { 356 } else {
@@ -382,17 +365,13 @@ GetUpgradeTxRate(
382// Return the degrade rate if it is successed, otherwise return the input rate. 365// Return the degrade rate if it is successed, otherwise return the input rate.
383// By Bruce, 2007-06-05. 366// By Bruce, 2007-06-05.
384// 367//
385u8 368u8 GetDegradeTxRate(struct net_device *dev, u8 rate)
386GetDegradeTxRate(
387 struct net_device *dev,
388 u8 rate
389 )
390{ 369{
391 struct r8180_priv *priv = ieee80211_priv(dev); 370 struct r8180_priv *priv = ieee80211_priv(dev);
392 u8 DownRate; 371 u8 DownRate;
393 372
394 // Upgrade 1 degree. 373 // Upgrade 1 degree.
395 switch(rate) { 374 switch (rate) {
396 case 108: // Down to 48Mbps. 375 case 108: // Down to 48Mbps.
397 DownRate = 96; 376 DownRate = 96;
398 break; 377 break;
@@ -434,7 +413,7 @@ GetDegradeTxRate(
434 return rate; 413 return rate;
435 } 414 }
436 // Check if the rate is valid. 415 // Check if the rate is valid.
437 if(IncludedInSupportedRates(priv, DownRate)) { 416 if (IncludedInSupportedRates(priv, DownRate)) {
438// printk("GetDegradeTxRate(): GetDegrade Tx rate(%d) from %d!\n", DownRate, priv->CurrentOperaRate); 417// printk("GetDegradeTxRate(): GetDegrade Tx rate(%d) from %d!\n", DownRate, priv->CurrentOperaRate);
439 return DownRate; 418 return DownRate;
440 } else { 419 } else {
@@ -448,14 +427,11 @@ GetDegradeTxRate(
448// CCK rate. 427// CCK rate.
449// 2005.01.25, by rcnjko. 428// 2005.01.25, by rcnjko.
450// 429//
451bool 430bool MgntIsCckRate(u16 rate)
452MgntIsCckRate(
453 u16 rate
454 )
455{ 431{
456 bool bReturn = false; 432 bool bReturn = false;
457 433
458 if((rate <= 22) && (rate != 12) && (rate != 18)) { 434 if ((rate <= 22) && (rate != 12) && (rate != 18)) {
459 bReturn = true; 435 bReturn = true;
460 } 436 }
461 437
@@ -466,10 +442,7 @@ MgntIsCckRate(
466// Tx Power tracking mechanism routine on 87SE. 442// Tx Power tracking mechanism routine on 87SE.
467// Created by Roger, 2007.12.11. 443// Created by Roger, 2007.12.11.
468// 444//
469void 445void TxPwrTracking87SE(struct net_device *dev)
470TxPwrTracking87SE(
471 struct net_device *dev
472)
473{ 446{
474 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 447 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
475 u8 tmpu1Byte, CurrentThermal, Idx; 448 u8 tmpu1Byte, CurrentThermal, Idx;
@@ -477,36 +450,36 @@ TxPwrTracking87SE(
477 //u32 u4bRfReg; 450 //u32 u4bRfReg;
478 451
479 tmpu1Byte = read_nic_byte(dev, EN_LPF_CAL); 452 tmpu1Byte = read_nic_byte(dev, EN_LPF_CAL);
480 CurrentThermal = (tmpu1Byte & 0xf0)>>4; //[ 7:4]: thermal meter indication. 453 CurrentThermal = (tmpu1Byte & 0xf0) >> 4; //[ 7:4]: thermal meter indication.
481 CurrentThermal = (CurrentThermal>0x0c)? 0x0c:CurrentThermal;//lzm add 080826 454 CurrentThermal = (CurrentThermal > 0x0c) ? 0x0c:CurrentThermal;//lzm add 080826
482 455
483 //printk("TxPwrTracking87SE(): CurrentThermal(%d)\n", CurrentThermal); 456 //printk("TxPwrTracking87SE(): CurrentThermal(%d)\n", CurrentThermal);
484 457
485 if( CurrentThermal != priv->ThermalMeter) { 458 if (CurrentThermal != priv->ThermalMeter) {
486// printk("TxPwrTracking87SE(): Thermal meter changed!!!\n"); 459// printk("TxPwrTracking87SE(): Thermal meter changed!!!\n");
487 460
488 // Update Tx Power level on each channel. 461 // Update Tx Power level on each channel.
489 for(Idx = 1; Idx<15; Idx++) { 462 for (Idx = 1; Idx < 15; Idx++) {
490 CckTxPwrIdx = priv->chtxpwr[Idx]; 463 CckTxPwrIdx = priv->chtxpwr[Idx];
491 OfdmTxPwrIdx = priv->chtxpwr_ofdm[Idx]; 464 OfdmTxPwrIdx = priv->chtxpwr_ofdm[Idx];
492 465
493 if( CurrentThermal > priv->ThermalMeter ) { 466 if (CurrentThermal > priv->ThermalMeter) {
494 // higher thermal meter. 467 // higher thermal meter.
495 CckTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; 468 CckTxPwrIdx += (CurrentThermal - priv->ThermalMeter) * 2;
496 OfdmTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; 469 OfdmTxPwrIdx += (CurrentThermal - priv->ThermalMeter) * 2;
497 470
498 if(CckTxPwrIdx >35) 471 if (CckTxPwrIdx > 35)
499 CckTxPwrIdx = 35; // Force TxPower to maximal index. 472 CckTxPwrIdx = 35; // Force TxPower to maximal index.
500 if(OfdmTxPwrIdx >35) 473 if (OfdmTxPwrIdx > 35)
501 OfdmTxPwrIdx = 35; 474 OfdmTxPwrIdx = 35;
502 } else { 475 } else {
503 // lower thermal meter. 476 // lower thermal meter.
504 CckTxPwrIdx -= (priv->ThermalMeter - CurrentThermal)*2; 477 CckTxPwrIdx -= (priv->ThermalMeter - CurrentThermal) * 2;
505 OfdmTxPwrIdx -= (priv->ThermalMeter - CurrentThermal)*2; 478 OfdmTxPwrIdx -= (priv->ThermalMeter - CurrentThermal) * 2;
506 479
507 if(CckTxPwrIdx <0) 480 if (CckTxPwrIdx < 0)
508 CckTxPwrIdx = 0; 481 CckTxPwrIdx = 0;
509 if(OfdmTxPwrIdx <0) 482 if (OfdmTxPwrIdx < 0)
510 OfdmTxPwrIdx = 0; 483 OfdmTxPwrIdx = 0;
511 } 484 }
512 485
@@ -520,10 +493,7 @@ TxPwrTracking87SE(
520 } 493 }
521 priv->ThermalMeter = CurrentThermal; 494 priv->ThermalMeter = CurrentThermal;
522} 495}
523void 496void StaRateAdaptive87SE(struct net_device *dev)
524StaRateAdaptive87SE(
525 struct net_device *dev
526 )
527{ 497{
528 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 498 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
529 unsigned long CurrTxokCnt; 499 unsigned long CurrTxokCnt;
@@ -538,10 +508,10 @@ StaRateAdaptive87SE(
538 u32 TxThroughput; 508 u32 TxThroughput;
539 long CurrSignalStrength; 509 long CurrSignalStrength;
540 bool bUpdateInitialGain = false; 510 bool bUpdateInitialGain = false;
541 u8 u1bOfdm=0, u1bCck = 0; 511 u8 u1bOfdm = 0, u1bCck = 0;
542 char OfdmTxPwrIdx, CckTxPwrIdx; 512 char OfdmTxPwrIdx, CckTxPwrIdx;
543 513
544 priv->RateAdaptivePeriod= RATE_ADAPTIVE_TIMER_PERIOD; 514 priv->RateAdaptivePeriod = RATE_ADAPTIVE_TIMER_PERIOD;
545 515
546 516
547 CurrRetryCnt = priv->CurrRetryCnt; 517 CurrRetryCnt = priv->CurrRetryCnt;
@@ -550,14 +520,14 @@ StaRateAdaptive87SE(
550 CurrSignalStrength = priv->Stats_RecvSignalPower; 520 CurrSignalStrength = priv->Stats_RecvSignalPower;
551 TxThroughput = (u32)(priv->NumTxOkBytesTotal - priv->LastTxOKBytes); 521 TxThroughput = (u32)(priv->NumTxOkBytesTotal - priv->LastTxOKBytes);
552 priv->LastTxOKBytes = priv->NumTxOkBytesTotal; 522 priv->LastTxOKBytes = priv->NumTxOkBytesTotal;
553 priv->CurrentOperaRate = priv->ieee80211->rate/5; 523 priv->CurrentOperaRate = priv->ieee80211->rate / 5;
554 //printk("priv->CurrentOperaRate is %d\n",priv->CurrentOperaRate); 524 //printk("priv->CurrentOperaRate is %d\n",priv->CurrentOperaRate);
555 //2 Compute retry ratio. 525 //2 Compute retry ratio.
556 if (CurrTxokCnt>0) { 526 if (CurrTxokCnt > 0) {
557 CurrRetryRate = (u16)(CurrRetryCnt*100/CurrTxokCnt); 527 CurrRetryRate = (u16)(CurrRetryCnt * 100 / CurrTxokCnt);
558 } else { 528 } else {
559 // It may be serious retry. To distinguish serious retry or no packets modified by Bruce 529 // It may be serious retry. To distinguish serious retry or no packets modified by Bruce
560 CurrRetryRate = (u16)(CurrRetryCnt*100/1); 530 CurrRetryRate = (u16)(CurrRetryCnt * 100 / 1);
561 } 531 }
562 532
563 533
@@ -579,7 +549,7 @@ StaRateAdaptive87SE(
579 priv->CurrRetryCnt = 0; 549 priv->CurrRetryCnt = 0;
580 550
581 //2No Tx packets, return to init_rate or not? 551 //2No Tx packets, return to init_rate or not?
582 if (CurrRetryRate==0 && CurrTxokCnt == 0) { 552 if (CurrRetryRate == 0 && CurrTxokCnt == 0) {
583 // 553 //
584 //After 9 (30*300ms) seconds in this condition, we try to raise rate. 554 //After 9 (30*300ms) seconds in this condition, we try to raise rate.
585 // 555 //
@@ -587,7 +557,7 @@ StaRateAdaptive87SE(
587 557
588// printk("No Tx packets, TryupingCountNoData(%d)\n", priv->TryupingCountNoData); 558// printk("No Tx packets, TryupingCountNoData(%d)\n", priv->TryupingCountNoData);
589 //[TRC Dell Lab] Extend raised period from 4.5sec to 9sec, Isaiah 2008-02-15 18:00 559 //[TRC Dell Lab] Extend raised period from 4.5sec to 9sec, Isaiah 2008-02-15 18:00
590 if (priv->TryupingCountNoData>30) { 560 if (priv->TryupingCountNoData > 30) {
591 priv->TryupingCountNoData = 0; 561 priv->TryupingCountNoData = 0;
592 priv->CurrentOperaRate = GetUpgradeTxRate(dev, priv->CurrentOperaRate); 562 priv->CurrentOperaRate = GetUpgradeTxRate(dev, priv->CurrentOperaRate);
593 // Reset Fail Record 563 // Reset Fail Record
@@ -597,7 +567,7 @@ StaRateAdaptive87SE(
597 } 567 }
598 goto SetInitialGain; 568 goto SetInitialGain;
599 } else { 569 } else {
600 priv->TryupingCountNoData=0; //Reset trying up times. 570 priv->TryupingCountNoData = 0; //Reset trying up times.
601 } 571 }
602 572
603 573
@@ -623,12 +593,12 @@ StaRateAdaptive87SE(
623 // 11Mbps or 36Mbps 593 // 11Mbps or 36Mbps
624 // Check more times in these rate(key rates). 594 // Check more times in these rate(key rates).
625 // 595 //
626 if(priv->CurrentOperaRate == 22 || priv->CurrentOperaRate == 72) 596 if (priv->CurrentOperaRate == 22 || priv->CurrentOperaRate == 72)
627 TryUpTh += 9; 597 TryUpTh += 9;
628 // 598 //
629 // Let these rates down more difficult. 599 // Let these rates down more difficult.
630 // 600 //
631 if(MgntIsCckRate(priv->CurrentOperaRate) || priv->CurrentOperaRate == 36) 601 if (MgntIsCckRate(priv->CurrentOperaRate) || priv->CurrentOperaRate == 36)
632 TryDownTh += 1; 602 TryDownTh += 1;
633 603
634 //1 Adjust Rate. 604 //1 Adjust Rate.
@@ -640,7 +610,7 @@ StaRateAdaptive87SE(
640 // We randomly upgrade the data rate and check if the retry rate is improved. 610 // We randomly upgrade the data rate and check if the retry rate is improved.
641 611
642 // Upgrading rate did not improve the retry rate, fallback to the original rate. 612 // Upgrading rate did not improve the retry rate, fallback to the original rate.
643 if ( (CurrRetryRate > 25) && TxThroughput < priv->LastTxThroughput) { 613 if ((CurrRetryRate > 25) && TxThroughput < priv->LastTxThroughput) {
644 //Not necessary raising rate, fall back rate. 614 //Not necessary raising rate, fall back rate.
645 bTryDown = true; 615 bTryDown = true;
646 //printk("case1-1: Not necessary raising rate, fall back rate....\n"); 616 //printk("case1-1: Not necessary raising rate, fall back rate....\n");
@@ -658,14 +628,14 @@ StaRateAdaptive87SE(
658 // Revise SignalStrength threshold to -51dbm. 628 // Revise SignalStrength threshold to -51dbm.
659 // 629 //
660 // Also need to check retry rate for safety, by Bruce, 2007-06-05. 630 // Also need to check retry rate for safety, by Bruce, 2007-06-05.
661 if(priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate ) { 631 if (priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate) {
662 bTryUp = true; 632 bTryUp = true;
663 // Upgrade Tx Rate directly. 633 // Upgrade Tx Rate directly.
664 priv->TryupingCount += TryUpTh; 634 priv->TryupingCount += TryUpTh;
665 } 635 }
666// printk("case2: StaRateAdaptive87SE: Power(%d) is high enough!!. \n", CurrSignalStrength); 636// printk("case2: StaRateAdaptive87SE: Power(%d) is high enough!!. \n", CurrSignalStrength);
667 637
668 } else if(CurrTxokCnt > 9 && CurrTxokCnt< 100 && CurrRetryRate >= 600) { 638 } else if (CurrTxokCnt > 9 && CurrTxokCnt < 100 && CurrRetryRate >= 600) {
669 //2 For Serious Retry 639 //2 For Serious Retry
670 // 640 //
671 // Traffic is not busy but our Tx retry is serious. 641 // Traffic is not busy but our Tx retry is serious.
@@ -674,161 +644,161 @@ StaRateAdaptive87SE(
674 // Let Rate Mechanism to degrade tx rate directly. 644 // Let Rate Mechanism to degrade tx rate directly.
675 priv->TryDownCountLowData += TryDownTh; 645 priv->TryDownCountLowData += TryDownTh;
676// printk("case3: RA: Tx Retry is serious. Degrade Tx Rate to %d directly...\n", priv->CurrentOperaRate); 646// printk("case3: RA: Tx Retry is serious. Degrade Tx Rate to %d directly...\n", priv->CurrentOperaRate);
677 } else if ( priv->CurrentOperaRate == 108 ) { 647 } else if (priv->CurrentOperaRate == 108) {
678 //2For 54Mbps 648 //2For 54Mbps
679 // Air Link 649 // Air Link
680 if ( (CurrRetryRate>26)&&(priv->LastRetryRate>25)) { 650 if ((CurrRetryRate > 26) && (priv->LastRetryRate > 25)) {
681// if ( (CurrRetryRate>40)&&(priv->LastRetryRate>39)) 651// if ((CurrRetryRate>40)&&(priv->LastRetryRate>39))
682 //Down to rate 48Mbps. 652 //Down to rate 48Mbps.
683 bTryDown = true; 653 bTryDown = true;
684 } 654 }
685 // Cable Link 655 // Cable Link
686 else if ( (CurrRetryRate>17)&&(priv->LastRetryRate>16) && (CurrSignalStrength > -72)) { 656 else if ((CurrRetryRate > 17) && (priv->LastRetryRate > 16) && (CurrSignalStrength > -72)) {
687// else if ( (CurrRetryRate>17)&&(priv->LastRetryRate>16) && (CurrSignalStrength > -72)) 657// else if ((CurrRetryRate>17)&&(priv->LastRetryRate>16) && (CurrSignalStrength > -72))
688 //Down to rate 48Mbps. 658 //Down to rate 48Mbps.
689 bTryDown = true; 659 bTryDown = true;
690 } 660 }
691 661
692 if(bTryDown && (CurrSignalStrength < -75)) //cable link 662 if (bTryDown && (CurrSignalStrength < -75)) //cable link
693 priv->TryDownCountLowData += TryDownTh; 663 priv->TryDownCountLowData += TryDownTh;
694 //printk("case4---54M \n"); 664 //printk("case4---54M \n");
695 665
696 } 666 }
697 else if ( priv->CurrentOperaRate == 96 ) { 667 else if (priv->CurrentOperaRate == 96) {
698 //2For 48Mbps 668 //2For 48Mbps
699 //Air Link 669 //Air Link
700 if ( ((CurrRetryRate>48) && (priv->LastRetryRate>47))) { 670 if (((CurrRetryRate > 48) && (priv->LastRetryRate > 47))) {
701// if ( ((CurrRetryRate>65) && (priv->LastRetryRate>64))) 671// if ( ((CurrRetryRate>65) && (priv->LastRetryRate>64)))
702 //Down to rate 36Mbps. 672 //Down to rate 36Mbps.
703 bTryDown = true; 673 bTryDown = true;
704 } else if ( ((CurrRetryRate>21) && (priv->LastRetryRate>20)) && (CurrSignalStrength > -74)) { //Cable Link 674 } else if (((CurrRetryRate > 21) && (priv->LastRetryRate > 20)) && (CurrSignalStrength > -74)) { //Cable Link
705 //Down to rate 36Mbps. 675 //Down to rate 36Mbps.
706 bTryDown = true; 676 bTryDown = true;
707 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { 677 } else if ((CurrRetryRate > (priv->LastRetryRate + 50)) && (priv->FailTxRateCount > 2)) {
708// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 678// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
709 bTryDown = true; 679 bTryDown = true;
710 priv->TryDownCountLowData += TryDownTh; 680 priv->TryDownCountLowData += TryDownTh;
711 } else if ( (CurrRetryRate<8) && (priv->LastRetryRate<8) ) { //TO DO: need to consider (RSSI) 681 } else if ((CurrRetryRate < 8) && (priv->LastRetryRate < 8)) { //TO DO: need to consider (RSSI)
712// else if ( (CurrRetryRate<28) && (priv->LastRetryRate<8) ) 682// else if ( (CurrRetryRate<28) && (priv->LastRetryRate<8) )
713 bTryUp = true; 683 bTryUp = true;
714 } 684 }
715 685
716 if(bTryDown && (CurrSignalStrength < -75)){ 686 if (bTryDown && (CurrSignalStrength < -75)){
717 priv->TryDownCountLowData += TryDownTh; 687 priv->TryDownCountLowData += TryDownTh;
718 } 688 }
719 //printk("case5---48M \n"); 689 //printk("case5---48M \n");
720 } else if ( priv->CurrentOperaRate == 72 ) { 690 } else if (priv->CurrentOperaRate == 72) {
721 //2For 36Mbps 691 //2For 36Mbps
722 if ( (CurrRetryRate>43) && (priv->LastRetryRate>41)) { 692 if ((CurrRetryRate > 43) && (priv->LastRetryRate > 41)) {
723// if ( (CurrRetryRate>60) && (priv->LastRetryRate>59)) 693// if ( (CurrRetryRate>60) && (priv->LastRetryRate>59))
724 //Down to rate 24Mbps. 694 //Down to rate 24Mbps.
725 bTryDown = true; 695 bTryDown = true;
726 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { 696 } else if ((CurrRetryRate > (priv->LastRetryRate + 50)) && (priv->FailTxRateCount > 2)) {
727// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 697// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
728 bTryDown = true; 698 bTryDown = true;
729 priv->TryDownCountLowData += TryDownTh; 699 priv->TryDownCountLowData += TryDownTh;
730 } else if ( (CurrRetryRate<15) && (priv->LastRetryRate<16)) { //TO DO: need to consider (RSSI) 700 } else if ((CurrRetryRate < 15) && (priv->LastRetryRate < 16)) { //TO DO: need to consider (RSSI)
731// else if ( (CurrRetryRate<35) && (priv->LastRetryRate<36)) 701// else if ( (CurrRetryRate<35) && (priv->LastRetryRate<36))
732 bTryUp = true; 702 bTryUp = true;
733 } 703 }
734 704
735 if(bTryDown && (CurrSignalStrength < -80)) 705 if (bTryDown && (CurrSignalStrength < -80))
736 priv->TryDownCountLowData += TryDownTh; 706 priv->TryDownCountLowData += TryDownTh;
737 707
738 //printk("case6---36M \n"); 708 //printk("case6---36M \n");
739 } else if ( priv->CurrentOperaRate == 48 ) { 709 } else if (priv->CurrentOperaRate == 48) {
740 //2For 24Mbps 710 //2For 24Mbps
741 // Air Link 711 // Air Link
742 if ( ((CurrRetryRate>63) && (priv->LastRetryRate>62))) { 712 if (((CurrRetryRate > 63) && (priv->LastRetryRate > 62))) {
743// if ( ((CurrRetryRate>83) && (priv->LastRetryRate>82))) 713// if ( ((CurrRetryRate>83) && (priv->LastRetryRate>82)))
744 //Down to rate 18Mbps. 714 //Down to rate 18Mbps.
745 bTryDown = true; 715 bTryDown = true;
746 } else if ( ((CurrRetryRate>33) && (priv->LastRetryRate>32)) && (CurrSignalStrength > -82) ) { //Cable Link 716 } else if (((CurrRetryRate > 33) && (priv->LastRetryRate > 32)) && (CurrSignalStrength > -82)) { //Cable Link
747// else if ( ((CurrRetryRate>50) && (priv->LastRetryRate>49)) && (CurrSignalStrength > -82) ) 717// else if ( ((CurrRetryRate>50) && (priv->LastRetryRate>49)) && (CurrSignalStrength > -82) )
748 //Down to rate 18Mbps. 718 //Down to rate 18Mbps.
749 bTryDown = true; 719 bTryDown = true;
750 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { 720 } else if ((CurrRetryRate > (priv->LastRetryRate + 50)) && (priv->FailTxRateCount > 2 )) {
751// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 721// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
752 bTryDown = true; 722 bTryDown = true;
753 priv->TryDownCountLowData += TryDownTh; 723 priv->TryDownCountLowData += TryDownTh;
754 } else if ( (CurrRetryRate<20) && (priv->LastRetryRate<21)) { //TO DO: need to consider (RSSI) 724 } else if ((CurrRetryRate < 20) && (priv->LastRetryRate < 21)) { //TO DO: need to consider (RSSI)
755// else if ( (CurrRetryRate<40) && (priv->LastRetryRate<41)) 725// else if ( (CurrRetryRate<40) && (priv->LastRetryRate<41))
756 bTryUp = true; 726 bTryUp = true;
757 } 727 }
758 728
759 if(bTryDown && (CurrSignalStrength < -82)) 729 if (bTryDown && (CurrSignalStrength < -82))
760 priv->TryDownCountLowData += TryDownTh; 730 priv->TryDownCountLowData += TryDownTh;
761 731
762 //printk("case7---24M \n"); 732 //printk("case7---24M \n");
763 } else if ( priv->CurrentOperaRate == 36 ) { 733 } else if (priv->CurrentOperaRate == 36) {
764 //2For 18Mbps 734 //2For 18Mbps
765 // original (109, 109) 735 // original (109, 109)
766 //[TRC Dell Lab] (90, 91), Isaiah 2008-02-18 23:24 736 //[TRC Dell Lab] (90, 91), Isaiah 2008-02-18 23:24
767 // (85, 86), Isaiah 2008-02-18 24:00 737 // (85, 86), Isaiah 2008-02-18 24:00
768 if ( ((CurrRetryRate>85) && (priv->LastRetryRate>86))) { 738 if (((CurrRetryRate > 85) && (priv->LastRetryRate > 86))) {
769// if ( ((CurrRetryRate>115) && (priv->LastRetryRate>116))) 739// if ( ((CurrRetryRate>115) && (priv->LastRetryRate>116)))
770 //Down to rate 11Mbps. 740 //Down to rate 11Mbps.
771 bTryDown = true; 741 bTryDown = true;
772 742
773 //[TRC Dell Lab] Isaiah 2008-02-18 23:24 743 //[TRC Dell Lab] Isaiah 2008-02-18 23:24
774 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { 744 } else if ((CurrRetryRate > (priv->LastRetryRate + 50)) && (priv->FailTxRateCount > 2)) {
775// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 745// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
776 bTryDown = true; 746 bTryDown = true;
777 priv->TryDownCountLowData += TryDownTh; 747 priv->TryDownCountLowData += TryDownTh;
778 } else if ( (CurrRetryRate<22) && (priv->LastRetryRate<23)) { //TO DO: need to consider (RSSI) 748 } else if ((CurrRetryRate < 22) && (priv->LastRetryRate < 23)) { //TO DO: need to consider (RSSI)
779// else if ( (CurrRetryRate<42) && (priv->LastRetryRate<43)) 749// else if ( (CurrRetryRate<42) && (priv->LastRetryRate<43))
780 bTryUp = true; 750 bTryUp = true;
781 } 751 }
782 //printk("case8---18M \n"); 752 //printk("case8---18M \n");
783 } else if ( priv->CurrentOperaRate == 22 ) { 753 } else if (priv->CurrentOperaRate == 22) {
784 //2For 11Mbps 754 //2For 11Mbps
785 if (CurrRetryRate>95) { 755 if (CurrRetryRate > 95) {
786// if (CurrRetryRate>155) 756// if (CurrRetryRate>155)
787 bTryDown = true; 757 bTryDown = true;
788 } 758 }
789 else if ( (CurrRetryRate<29) && (priv->LastRetryRate <30) ) { //TO DO: need to consider (RSSI) 759 else if ((CurrRetryRate < 29) && (priv->LastRetryRate < 30)) { //TO DO: need to consider (RSSI)
790// else if ( (CurrRetryRate<49) && (priv->LastRetryRate <50) ) 760// else if ( (CurrRetryRate<49) && (priv->LastRetryRate <50) )
791 bTryUp = true; 761 bTryUp = true;
792 } 762 }
793 //printk("case9---11M \n"); 763 //printk("case9---11M \n");
794 } else if ( priv->CurrentOperaRate == 11 ) { 764 } else if (priv->CurrentOperaRate == 11) {
795 //2For 5.5Mbps 765 //2For 5.5Mbps
796 if (CurrRetryRate>149) { 766 if (CurrRetryRate > 149) {
797// if (CurrRetryRate>189) 767// if (CurrRetryRate>189)
798 bTryDown = true; 768 bTryDown = true;
799 } else if ( (CurrRetryRate<60) && (priv->LastRetryRate < 65)) { 769 } else if ((CurrRetryRate < 60) && (priv->LastRetryRate < 65)) {
800// else if ( (CurrRetryRate<80) && (priv->LastRetryRate < 85)) 770// else if ( (CurrRetryRate<80) && (priv->LastRetryRate < 85))
801 bTryUp = true; 771 bTryUp = true;
802 } 772 }
803 //printk("case10---5.5M \n"); 773 //printk("case10---5.5M \n");
804 } else if ( priv->CurrentOperaRate == 4 ) { 774 } else if (priv->CurrentOperaRate == 4) {
805 //2For 2 Mbps 775 //2For 2 Mbps
806 if((CurrRetryRate>99) && (priv->LastRetryRate>99)) { 776 if ((CurrRetryRate > 99) && (priv->LastRetryRate > 99)) {
807// if((CurrRetryRate>199) && (priv->LastRetryRate>199)) 777// if((CurrRetryRate>199) && (priv->LastRetryRate>199))
808 bTryDown = true; 778 bTryDown = true;
809 } else if ( (CurrRetryRate < 65) && (priv->LastRetryRate < 70)) { 779 } else if ((CurrRetryRate < 65) && (priv->LastRetryRate < 70)) {
810// else if ( (CurrRetryRate < 85) && (priv->LastRetryRate < 90)) 780// else if ( (CurrRetryRate < 85) && (priv->LastRetryRate < 90))
811 bTryUp = true; 781 bTryUp = true;
812 } 782 }
813 //printk("case11---2M \n"); 783 //printk("case11---2M \n");
814 } else if ( priv->CurrentOperaRate == 2 ) { 784 } else if (priv->CurrentOperaRate == 2) {
815 //2For 1 Mbps 785 //2For 1 Mbps
816 if( (CurrRetryRate<70) && (priv->LastRetryRate<75)) { 786 if ((CurrRetryRate < 70) && (priv->LastRetryRate < 75)) {
817// if( (CurrRetryRate<90) && (priv->LastRetryRate<95)) 787// if( (CurrRetryRate<90) && (priv->LastRetryRate<95))
818 bTryUp = true; 788 bTryUp = true;
819 } 789 }
820 //printk("case12---1M \n"); 790 //printk("case12---1M \n");
821 } 791 }
822 792
823 if(bTryUp && bTryDown) 793 if (bTryUp && bTryDown)
824 printk("StaRateAdaptive87B(): Tx Rate tried upping and downing simultaneously!\n"); 794 printk("StaRateAdaptive87B(): Tx Rate tried upping and downing simultaneously!\n");
825 795
826 //1 Test Upgrading Tx Rate 796 //1 Test Upgrading Tx Rate
827 // Sometimes the cause of the low throughput (high retry rate) is the compatibility between the AP and NIC. 797 // Sometimes the cause of the low throughput (high retry rate) is the compatibility between the AP and NIC.
828 // To test if the upper rate may cause lower retry rate, this mechanism randomly occurs to test upgrading tx rate. 798 // To test if the upper rate may cause lower retry rate, this mechanism randomly occurs to test upgrading tx rate.
829 if(!bTryUp && !bTryDown && (priv->TryupingCount == 0) && (priv->TryDownCountLowData == 0) 799 if (!bTryUp && !bTryDown && (priv->TryupingCount == 0) && (priv->TryDownCountLowData == 0)
830 && priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate && priv->FailTxRateCount < 2) { 800 && priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate && priv->FailTxRateCount < 2) {
831 if(jiffies% (CurrRetryRate + 101) == 0) { 801 if (jiffies % (CurrRetryRate + 101) == 0) {
832 bTryUp = true; 802 bTryUp = true;
833 priv->bTryuping = true; 803 priv->bTryuping = true;
834 //printk("StaRateAdaptive87SE(): Randomly try upgrading...\n"); 804 //printk("StaRateAdaptive87SE(): Randomly try upgrading...\n");
@@ -836,7 +806,7 @@ StaRateAdaptive87SE(
836 } 806 }
837 807
838 //1 Rate Mechanism 808 //1 Rate Mechanism
839 if(bTryUp) { 809 if (bTryUp) {
840 priv->TryupingCount++; 810 priv->TryupingCount++;
841 priv->TryDownCountLowData = 0; 811 priv->TryDownCountLowData = 0;
842 812
@@ -852,21 +822,21 @@ StaRateAdaptive87SE(
852 // this condition will be satisfied at most every 2 min. 822 // this condition will be satisfied at most every 2 min.
853 // 823 //
854 824
855 if((priv->TryupingCount > (TryUpTh + priv->FailTxRateCount * priv->FailTxRateCount)) || 825 if ((priv->TryupingCount > (TryUpTh + priv->FailTxRateCount * priv->FailTxRateCount)) ||
856 (CurrSignalStrength > priv->LastFailTxRateSS) || priv->bTryuping) { 826 (CurrSignalStrength > priv->LastFailTxRateSS) || priv->bTryuping) {
857 priv->TryupingCount = 0; 827 priv->TryupingCount = 0;
858 // 828 //
859 // When transferring from CCK to OFDM, DIG is an important issue. 829 // When transferring from CCK to OFDM, DIG is an important issue.
860 // 830 //
861 if(priv->CurrentOperaRate == 22) 831 if (priv->CurrentOperaRate == 22)
862 bUpdateInitialGain = true; 832 bUpdateInitialGain = true;
863 833
864 // The difference in throughput between 48Mbps and 36Mbps is 8M. 834 // The difference in throughput between 48Mbps and 36Mbps is 8M.
865 // So, we must be carefully in this rate scale. Isaiah 2008-02-15. 835 // So, we must be carefully in this rate scale. Isaiah 2008-02-15.
866 // 836 //
867 if( ((priv->CurrentOperaRate == 72) || (priv->CurrentOperaRate == 48) || (priv->CurrentOperaRate == 36)) && 837 if (((priv->CurrentOperaRate == 72) || (priv->CurrentOperaRate == 48) || (priv->CurrentOperaRate == 36)) &&
868 (priv->FailTxRateCount > 2) ) 838 (priv->FailTxRateCount > 2))
869 priv->RateAdaptivePeriod= (RATE_ADAPTIVE_TIMER_PERIOD/2); 839 priv->RateAdaptivePeriod = (RATE_ADAPTIVE_TIMER_PERIOD / 2);
870 840
871 // (1)To avoid upgrade frequently to the fail tx rate, add the FailTxRateCount into the threshold. 841 // (1)To avoid upgrade frequently to the fail tx rate, add the FailTxRateCount into the threshold.
872 // (2)If the signal strength is increased, it may be able to upgrade. 842 // (2)If the signal strength is increased, it may be able to upgrade.
@@ -875,29 +845,29 @@ StaRateAdaptive87SE(
875// printk("StaRateAdaptive87SE(): Upgrade Tx Rate to %d\n", priv->CurrentOperaRate); 845// printk("StaRateAdaptive87SE(): Upgrade Tx Rate to %d\n", priv->CurrentOperaRate);
876 846
877 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00 847 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00
878 if(priv->CurrentOperaRate ==36) { 848 if (priv->CurrentOperaRate == 36) {
879 priv->bUpdateARFR=true; 849 priv->bUpdateARFR = true;
880 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6 850 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6
881// printk("UP: ARFR=0xF8F\n"); 851// printk("UP: ARFR=0xF8F\n");
882 } else if(priv->bUpdateARFR) { 852 } else if(priv->bUpdateARFR) {
883 priv->bUpdateARFR=false; 853 priv->bUpdateARFR = false;
884 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps. 854 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps.
885// printk("UP: ARFR=0xFFF\n"); 855// printk("UP: ARFR=0xFFF\n");
886 } 856 }
887 857
888 // Update Fail Tx rate and count. 858 // Update Fail Tx rate and count.
889 if(priv->LastFailTxRate != priv->CurrentOperaRate) { 859 if (priv->LastFailTxRate != priv->CurrentOperaRate) {
890 priv->LastFailTxRate = priv->CurrentOperaRate; 860 priv->LastFailTxRate = priv->CurrentOperaRate;
891 priv->FailTxRateCount = 0; 861 priv->FailTxRateCount = 0;
892 priv->LastFailTxRateSS = -200; // Set lowest power. 862 priv->LastFailTxRateSS = -200; // Set lowest power.
893 } 863 }
894 } 864 }
895 } else { 865 } else {
896 if(priv->TryupingCount > 0) 866 if (priv->TryupingCount > 0)
897 priv->TryupingCount --; 867 priv->TryupingCount --;
898 } 868 }
899 869
900 if(bTryDown) { 870 if (bTryDown) {
901 priv->TryDownCountLowData++; 871 priv->TryDownCountLowData++;
902 priv->TryupingCount = 0; 872 priv->TryupingCount = 0;
903 873
@@ -907,14 +877,14 @@ StaRateAdaptive87SE(
907 877
908 878
909 //Check if Tx rate can be degraded or Test trying upgrading should fallback. 879 //Check if Tx rate can be degraded or Test trying upgrading should fallback.
910 if(priv->TryDownCountLowData > TryDownTh || priv->bTryuping) { 880 if (priv->TryDownCountLowData > TryDownTh || priv->bTryuping) {
911 priv->TryDownCountLowData = 0; 881 priv->TryDownCountLowData = 0;
912 priv->bTryuping = false; 882 priv->bTryuping = false;
913 // Update fail information. 883 // Update fail information.
914 if(priv->LastFailTxRate == priv->CurrentOperaRate) { 884 if (priv->LastFailTxRate == priv->CurrentOperaRate) {
915 priv->FailTxRateCount ++; 885 priv->FailTxRateCount++;
916 // Record the Tx fail rate signal strength. 886 // Record the Tx fail rate signal strength.
917 if(CurrSignalStrength > priv->LastFailTxRateSS) 887 if (CurrSignalStrength > priv->LastFailTxRateSS)
918 priv->LastFailTxRateSS = CurrSignalStrength; 888 priv->LastFailTxRateSS = CurrSignalStrength;
919 } else { 889 } else {
920 priv->LastFailTxRate = priv->CurrentOperaRate; 890 priv->LastFailTxRate = priv->CurrentOperaRate;
@@ -925,18 +895,18 @@ StaRateAdaptive87SE(
925 895
926 // Reduce chariot training time at weak signal strength situation. SD3 ED demand. 896 // Reduce chariot training time at weak signal strength situation. SD3 ED demand.
927 //[TRC Dell Lab] Revise Signal Threshold from -75 to -80 , Isaiah 2008-02-18 20:00 897 //[TRC Dell Lab] Revise Signal Threshold from -75 to -80 , Isaiah 2008-02-18 20:00
928 if( (CurrSignalStrength < -80) && (priv->CurrentOperaRate > 72 )) { 898 if ((CurrSignalStrength < -80) && (priv->CurrentOperaRate > 72 )) {
929 priv->CurrentOperaRate = 72; 899 priv->CurrentOperaRate = 72;
930// printk("DN: weak signal strength (%d), degrade to 36Mbps\n", CurrSignalStrength); 900// printk("DN: weak signal strength (%d), degrade to 36Mbps\n", CurrSignalStrength);
931 } 901 }
932 902
933 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00 903 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00
934 if(priv->CurrentOperaRate ==36) { 904 if (priv->CurrentOperaRate == 36) {
935 priv->bUpdateARFR=true; 905 priv->bUpdateARFR = true;
936 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6 906 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6
937// printk("DN: ARFR=0xF8F\n"); 907// printk("DN: ARFR=0xF8F\n");
938 } else if(priv->bUpdateARFR) { 908 } else if (priv->bUpdateARFR) {
939 priv->bUpdateARFR=false; 909 priv->bUpdateARFR = false;
940 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps. 910 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps.
941// printk("DN: ARFR=0xFFF\n"); 911// printk("DN: ARFR=0xFFF\n");
942 } 912 }
@@ -944,21 +914,21 @@ StaRateAdaptive87SE(
944 // 914 //
945 // When it is CCK rate, it may need to update initial gain to receive lower power packets. 915 // When it is CCK rate, it may need to update initial gain to receive lower power packets.
946 // 916 //
947 if(MgntIsCckRate(priv->CurrentOperaRate)) { 917 if (MgntIsCckRate(priv->CurrentOperaRate)) {
948 bUpdateInitialGain = true; 918 bUpdateInitialGain = true;
949 } 919 }
950// printk("StaRateAdaptive87SE(): Degrade Tx Rate to %d\n", priv->CurrentOperaRate); 920// printk("StaRateAdaptive87SE(): Degrade Tx Rate to %d\n", priv->CurrentOperaRate);
951 } 921 }
952 } else { 922 } else {
953 if(priv->TryDownCountLowData > 0) 923 if (priv->TryDownCountLowData > 0)
954 priv->TryDownCountLowData --; 924 priv->TryDownCountLowData--;
955 } 925 }
956 926
957 // Keep the Tx fail rate count to equal to 0x15 at most. 927 // Keep the Tx fail rate count to equal to 0x15 at most.
958 // Reduce the fail count at least to 10 sec if tx rate is tending stable. 928 // Reduce the fail count at least to 10 sec if tx rate is tending stable.
959 if(priv->FailTxRateCount >= 0x15 || 929 if (priv->FailTxRateCount >= 0x15 ||
960 (!bTryUp && !bTryDown && priv->TryDownCountLowData == 0 && priv->TryupingCount && priv->FailTxRateCount > 0x6)) { 930 (!bTryUp && !bTryDown && priv->TryDownCountLowData == 0 && priv->TryupingCount && priv->FailTxRateCount > 0x6)) {
961 priv->FailTxRateCount --; 931 priv->FailTxRateCount--;
962 } 932 }
963 933
964 934
@@ -966,41 +936,41 @@ StaRateAdaptive87SE(
966 CckTxPwrIdx = priv->chtxpwr[priv->ieee80211->current_network.channel]; 936 CckTxPwrIdx = priv->chtxpwr[priv->ieee80211->current_network.channel];
967 937
968 //[TRC Dell Lab] Mac0x9e increase 2 level in 36M~18M situation, Isaiah 2008-02-18 24:00 938 //[TRC Dell Lab] Mac0x9e increase 2 level in 36M~18M situation, Isaiah 2008-02-18 24:00
969 if((priv->CurrentOperaRate < 96) &&(priv->CurrentOperaRate > 22)) { 939 if ((priv->CurrentOperaRate < 96) && (priv->CurrentOperaRate > 22)) {
970 u1bCck = read_nic_byte(dev, CCK_TXAGC); 940 u1bCck = read_nic_byte(dev, CCK_TXAGC);
971 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC); 941 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC);
972 942
973 // case 1: Never enter High power 943 // case 1: Never enter High power
974 if(u1bCck == CckTxPwrIdx ) { 944 if (u1bCck == CckTxPwrIdx) {
975 if(u1bOfdm != (OfdmTxPwrIdx+2) ) { 945 if (u1bOfdm != (OfdmTxPwrIdx + 2)) {
976 priv->bEnhanceTxPwr= true; 946 priv->bEnhanceTxPwr = true;
977 u1bOfdm = ((u1bOfdm+2) > 35) ? 35: (u1bOfdm+2); 947 u1bOfdm = ((u1bOfdm + 2) > 35) ? 35: (u1bOfdm + 2);
978 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm); 948 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm);
979// printk("Enhance OFDM_TXAGC : +++++ u1bOfdm= 0x%x\n", u1bOfdm); 949// printk("Enhance OFDM_TXAGC : +++++ u1bOfdm= 0x%x\n", u1bOfdm);
980 } 950 }
981 } else if(u1bCck < CckTxPwrIdx) { 951 } else if (u1bCck < CckTxPwrIdx) {
982 // case 2: enter high power 952 // case 2: enter high power
983 if(!priv->bEnhanceTxPwr) { 953 if (!priv->bEnhanceTxPwr) {
984 priv->bEnhanceTxPwr= true; 954 priv->bEnhanceTxPwr = true;
985 u1bOfdm = ((u1bOfdm+2) > 35) ? 35: (u1bOfdm+2); 955 u1bOfdm = ((u1bOfdm + 2) > 35) ? 35: (u1bOfdm + 2);
986 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm); 956 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm);
987 //RT_TRACE(COMP_RATE, DBG_TRACE, ("Enhance OFDM_TXAGC(2) : +++++ u1bOfdm= 0x%x\n", u1bOfdm)); 957 //RT_TRACE(COMP_RATE, DBG_TRACE, ("Enhance OFDM_TXAGC(2) : +++++ u1bOfdm= 0x%x\n", u1bOfdm));
988 } 958 }
989 } 959 }
990 } else if(priv->bEnhanceTxPwr) { //54/48/11/5.5/2/1 960 } else if (priv->bEnhanceTxPwr) { //54/48/11/5.5/2/1
991 u1bCck = read_nic_byte(dev, CCK_TXAGC); 961 u1bCck = read_nic_byte(dev, CCK_TXAGC);
992 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC); 962 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC);
993 963
994 // case 1: Never enter High power 964 // case 1: Never enter High power
995 if(u1bCck == CckTxPwrIdx ) { 965 if (u1bCck == CckTxPwrIdx) {
996 priv->bEnhanceTxPwr= false; 966 priv->bEnhanceTxPwr = false;
997 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); 967 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx);
998 //printk("Recover OFDM_TXAGC : ===== u1bOfdm= 0x%x\n", OfdmTxPwrIdx); 968 //printk("Recover OFDM_TXAGC : ===== u1bOfdm= 0x%x\n", OfdmTxPwrIdx);
999 } 969 }
1000 // case 2: enter high power 970 // case 2: enter high power
1001 else if(u1bCck < CckTxPwrIdx) { 971 else if (u1bCck < CckTxPwrIdx) {
1002 priv->bEnhanceTxPwr= false; 972 priv->bEnhanceTxPwr = false;
1003 u1bOfdm = ((u1bOfdm-2) > 0) ? (u1bOfdm-2): 0; 973 u1bOfdm = ((u1bOfdm - 2) > 0) ? (u1bOfdm - 2): 0;
1004 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm); 974 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm);
1005 //RT_TRACE(COMP_RATE, DBG_TRACE, ("Recover OFDM_TXAGC(2): ===== u1bOfdm= 0x%x\n", u1bOfdm)); 975 //RT_TRACE(COMP_RATE, DBG_TRACE, ("Recover OFDM_TXAGC(2): ===== u1bOfdm= 0x%x\n", u1bOfdm));
1006 976
@@ -1012,29 +982,29 @@ StaRateAdaptive87SE(
1012 // "from CCK to OFDM". 982 // "from CCK to OFDM".
1013 // 983 //
1014SetInitialGain: 984SetInitialGain:
1015 if(bUpdateInitialGain) { 985 if (bUpdateInitialGain) {
1016 if(MgntIsCckRate(priv->CurrentOperaRate)) { // CCK 986 if (MgntIsCckRate(priv->CurrentOperaRate)) { // CCK
1017 if(priv->InitialGain > priv->RegBModeGainStage) { 987 if (priv->InitialGain > priv->RegBModeGainStage) {
1018 priv->InitialGainBackUp= priv->InitialGain; 988 priv->InitialGainBackUp = priv->InitialGain;
1019 989
1020 if(CurrSignalStrength < -85) // Low power, OFDM [0x17] = 26. 990 if (CurrSignalStrength < -85) // Low power, OFDM [0x17] = 26.
1021 //SD3 SYs suggest that CurrSignalStrength < -65, ofdm 0x17=26. 991 //SD3 SYs suggest that CurrSignalStrength < -65, ofdm 0x17=26.
1022 priv->InitialGain = priv->RegBModeGainStage; 992 priv->InitialGain = priv->RegBModeGainStage;
1023 993
1024 else if(priv->InitialGain > priv->RegBModeGainStage + 1) 994 else if (priv->InitialGain > priv->RegBModeGainStage + 1)
1025 priv->InitialGain -= 2; 995 priv->InitialGain -= 2;
1026 996
1027 else 997 else
1028 priv->InitialGain --; 998 priv->InitialGain--;
1029 999
1030 printk("StaRateAdaptive87SE(): update init_gain to index %d for date rate %d\n",priv->InitialGain, priv->CurrentOperaRate); 1000 printk("StaRateAdaptive87SE(): update init_gain to index %d for date rate %d\n",priv->InitialGain, priv->CurrentOperaRate);
1031 UpdateInitialGain(dev); 1001 UpdateInitialGain(dev);
1032 } 1002 }
1033 } else { // OFDM 1003 } else { // OFDM
1034 if(priv->InitialGain < 4) { 1004 if (priv->InitialGain < 4) {
1035 priv->InitialGainBackUp= priv->InitialGain; 1005 priv->InitialGainBackUp = priv->InitialGain;
1036 1006
1037 priv->InitialGain ++; 1007 priv->InitialGain++;
1038 printk("StaRateAdaptive87SE(): update init_gain to index %d for date rate %d\n",priv->InitialGain, priv->CurrentOperaRate); 1008 printk("StaRateAdaptive87SE(): update init_gain to index %d for date rate %d\n",priv->InitialGain, priv->CurrentOperaRate);
1039 UpdateInitialGain(dev); 1009 UpdateInitialGain(dev);
1040 } 1010 }
@@ -1047,10 +1017,10 @@ SetInitialGain:
1047 priv->ieee80211->rate = priv->CurrentOperaRate * 5; 1017 priv->ieee80211->rate = priv->CurrentOperaRate * 5;
1048} 1018}
1049 1019
1050void rtl8180_rate_adapter(struct work_struct * work) 1020void rtl8180_rate_adapter(struct work_struct *work)
1051{ 1021{
1052 struct delayed_work *dwork = to_delayed_work(work); 1022 struct delayed_work *dwork = to_delayed_work(work);
1053 struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,rate_adapter_wq); 1023 struct ieee80211_device *ieee = container_of(dwork, struct ieee80211_device, rate_adapter_wq);
1054 struct net_device *dev = ieee->dev; 1024 struct net_device *dev = ieee->dev;
1055 //struct r8180_priv *priv = ieee80211_priv(dev); 1025 //struct r8180_priv *priv = ieee80211_priv(dev);
1056// DMESG("---->rtl8180_rate_adapter"); 1026// DMESG("---->rtl8180_rate_adapter");
@@ -1059,15 +1029,15 @@ void rtl8180_rate_adapter(struct work_struct * work)
1059} 1029}
1060void timer_rate_adaptive(unsigned long data) 1030void timer_rate_adaptive(unsigned long data)
1061{ 1031{
1062 struct r8180_priv* priv = ieee80211_priv((struct net_device *)data); 1032 struct r8180_priv *priv = ieee80211_priv((struct net_device *)data);
1063 //DMESG("---->timer_rate_adaptive()\n"); 1033 //DMESG("---->timer_rate_adaptive()\n");
1064 if(!priv->up) { 1034 if (!priv->up) {
1065// DMESG("<----timer_rate_adaptive():driver is not up!\n"); 1035// DMESG("<----timer_rate_adaptive():driver is not up!\n");
1066 return; 1036 return;
1067 } 1037 }
1068 if((priv->ieee80211->iw_mode != IW_MODE_MASTER) 1038 if ((priv->ieee80211->iw_mode != IW_MODE_MASTER)
1069 && (priv->ieee80211->state == IEEE80211_LINKED) && 1039 && (priv->ieee80211->state == IEEE80211_LINKED) &&
1070 (priv->ForcedDataRate == 0) ) { 1040 (priv->ForcedDataRate == 0)) {
1071// DMESG("timer_rate_adaptive():schedule rate_adapter_wq\n"); 1041// DMESG("timer_rate_adaptive():schedule rate_adapter_wq\n");
1072 queue_work(priv->ieee80211->wq, (void *)&priv->ieee80211->rate_adapter_wq); 1042 queue_work(priv->ieee80211->wq, (void *)&priv->ieee80211->rate_adapter_wq);
1073// StaRateAdaptive87SE((struct net_device *)data); 1043// StaRateAdaptive87SE((struct net_device *)data);
@@ -1077,11 +1047,7 @@ void timer_rate_adaptive(unsigned long data)
1077 //DMESG("<----timer_rate_adaptive()\n"); 1047 //DMESG("<----timer_rate_adaptive()\n");
1078} 1048}
1079//by amy 080312} 1049//by amy 080312}
1080void 1050void SwAntennaDiversityRxOk8185(struct net_device *dev, u8 SignalStrength)
1081SwAntennaDiversityRxOk8185(
1082 struct net_device *dev,
1083 u8 SignalStrength
1084 )
1085{ 1051{
1086 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 1052 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
1087 1053
@@ -1089,13 +1055,13 @@ SwAntennaDiversityRxOk8185(
1089 1055
1090 priv->AdRxOkCnt++; 1056 priv->AdRxOkCnt++;
1091 1057
1092 if( priv->AdRxSignalStrength != -1) { 1058 if (priv->AdRxSignalStrength != -1) {
1093 priv->AdRxSignalStrength = ((priv->AdRxSignalStrength*7) + (SignalStrength*3)) / 10; 1059 priv->AdRxSignalStrength = ((priv->AdRxSignalStrength * 7) + (SignalStrength * 3)) / 10;
1094 } else { // Initialization case. 1060 } else { // Initialization case.
1095 priv->AdRxSignalStrength = SignalStrength; 1061 priv->AdRxSignalStrength = SignalStrength;
1096 } 1062 }
1097//{+by amy 080312 1063//{+by amy 080312
1098 if( priv->LastRxPktAntenna ) //Main antenna. 1064 if (priv->LastRxPktAntenna) //Main antenna.
1099 priv->AdMainAntennaRxOkCnt++; 1065 priv->AdMainAntennaRxOkCnt++;
1100 else // Aux antenna. 1066 else // Aux antenna.
1101 priv->AdAuxAntennaRxOkCnt++; 1067 priv->AdAuxAntennaRxOkCnt++;
@@ -1106,18 +1072,14 @@ SwAntennaDiversityRxOk8185(
1106// Description: 1072// Description:
1107// Change Antenna Switch. 1073// Change Antenna Switch.
1108// 1074//
1109bool 1075bool SetAntenna8185(struct net_device *dev, u8 u1bAntennaIndex)
1110SetAntenna8185(
1111 struct net_device *dev,
1112 u8 u1bAntennaIndex
1113 )
1114{ 1076{
1115 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 1077 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
1116 bool bAntennaSwitched = false; 1078 bool bAntennaSwitched = false;
1117 1079
1118// printk("+SetAntenna8185(): Antenna is switching to: %d \n", u1bAntennaIndex); 1080// printk("+SetAntenna8185(): Antenna is switching to: %d \n", u1bAntennaIndex);
1119 1081
1120 switch(u1bAntennaIndex) { 1082 switch (u1bAntennaIndex) {
1121 case 0: 1083 case 0:
1122 /* Mac register, main antenna */ 1084 /* Mac register, main antenna */
1123 write_nic_byte(dev, ANTSEL, 0x03); 1085 write_nic_byte(dev, ANTSEL, 0x03);
@@ -1155,16 +1117,13 @@ SetAntenna8185(
1155// Description: 1117// Description:
1156// Toggle Antenna switch. 1118// Toggle Antenna switch.
1157// 1119//
1158bool 1120bool SwitchAntenna(struct net_device *dev)
1159SwitchAntenna(
1160 struct net_device *dev
1161 )
1162{ 1121{
1163 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 1122 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
1164 1123
1165 bool bResult; 1124 bool bResult;
1166 1125
1167 if(priv->CurrAntennaIndex == 0) { 1126 if (priv->CurrAntennaIndex == 0) {
1168 bResult = SetAntenna8185(dev, 1); 1127 bResult = SetAntenna8185(dev, 1);
1169//by amy 080312 1128//by amy 080312
1170// printk("SwitchAntenna(): switching to antenna 1 ......\n"); 1129// printk("SwitchAntenna(): switching to antenna 1 ......\n");
@@ -1186,17 +1145,14 @@ SwitchAntenna(
1186// 1145//
1187// 2006.04.17, by rcnjko. 1146// 2006.04.17, by rcnjko.
1188// 1147//
1189void 1148void SwAntennaDiversity(struct net_device *dev)
1190SwAntennaDiversity(
1191 struct net_device *dev
1192 )
1193{ 1149{
1194 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 1150 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
1195 bool bSwCheckSS=false; 1151 bool bSwCheckSS = false;
1196// printk("+SwAntennaDiversity(): CurrAntennaIndex: %d\n", priv->CurrAntennaIndex); 1152// printk("+SwAntennaDiversity(): CurrAntennaIndex: %d\n", priv->CurrAntennaIndex);
1197// printk("AdTickCount is %d\n",priv->AdTickCount); 1153// printk("AdTickCount is %d\n",priv->AdTickCount);
1198//by amy 080312 1154//by amy 080312
1199 if(bSwCheckSS) { 1155 if (bSwCheckSS) {
1200 priv->AdTickCount++; 1156 priv->AdTickCount++;
1201 1157
1202 printk("(1) AdTickCount: %d, AdCheckPeriod: %d\n", 1158 printk("(1) AdTickCount: %d, AdCheckPeriod: %d\n",
@@ -1207,7 +1163,7 @@ SwAntennaDiversity(
1207// priv->AdTickCount++;//-by amy 080312 1163// priv->AdTickCount++;//-by amy 080312
1208 1164
1209 // Case 1. No Link. 1165 // Case 1. No Link.
1210 if(priv->ieee80211->state != IEEE80211_LINKED) { 1166 if (priv->ieee80211->state != IEEE80211_LINKED) {
1211 // printk("SwAntennaDiversity(): Case 1. No Link.\n"); 1167 // printk("SwAntennaDiversity(): Case 1. No Link.\n");
1212 1168
1213 priv->bAdSwitchedChecking = false; 1169 priv->bAdSwitchedChecking = false;
@@ -1215,14 +1171,14 @@ SwAntennaDiversity(
1215 SwitchAntenna(dev); 1171 SwitchAntenna(dev);
1216 1172
1217 // Case 2. Linked but no packet receive.d 1173 // Case 2. Linked but no packet receive.d
1218 } else if(priv->AdRxOkCnt == 0) { 1174 } else if (priv->AdRxOkCnt == 0) {
1219 // printk("SwAntennaDiversity(): Case 2. Linked but no packet received.\n"); 1175 // printk("SwAntennaDiversity(): Case 2. Linked but no packet received.\n");
1220 1176
1221 priv->bAdSwitchedChecking = false; 1177 priv->bAdSwitchedChecking = false;
1222 SwitchAntenna(dev); 1178 SwitchAntenna(dev);
1223 1179
1224 // Case 3. Evaluate last antenna switch action and undo it if necessary. 1180 // Case 3. Evaluate last antenna switch action and undo it if necessary.
1225 } else if(priv->bAdSwitchedChecking == true) { 1181 } else if (priv->bAdSwitchedChecking == true) {
1226 // printk("SwAntennaDiversity(): Case 3. Evaluate last antenna switch action.\n"); 1182 // printk("SwAntennaDiversity(): Case 3. Evaluate last antenna switch action.\n");
1227 1183
1228 priv->bAdSwitchedChecking = false; 1184 priv->bAdSwitchedChecking = false;
@@ -1241,7 +1197,7 @@ SwAntennaDiversity(
1241 priv->AdCheckPeriod *= 2; 1197 priv->AdCheckPeriod *= 2;
1242//by amy 080312 1198//by amy 080312
1243 // Increase Antenna Diversity checking period. 1199 // Increase Antenna Diversity checking period.
1244 if(priv->AdCheckPeriod > priv->AdMaxCheckPeriod) 1200 if (priv->AdCheckPeriod > priv->AdMaxCheckPeriod)
1245 priv->AdCheckPeriod = priv->AdMaxCheckPeriod; 1201 priv->AdCheckPeriod = priv->AdMaxCheckPeriod;
1246 1202
1247 // Wrong deceision => switch back. 1203 // Wrong deceision => switch back.
@@ -1277,7 +1233,7 @@ SwAntennaDiversity(
1277 // Evaluate RxOk count from each antenna if we shall switch default antenna now. 1233 // Evaluate RxOk count from each antenna if we shall switch default antenna now.
1278 // Added by Roger, 2008.02.21. 1234 // Added by Roger, 2008.02.21.
1279//{by amy 080312 1235//{by amy 080312
1280 if((priv->AdMainAntennaRxOkCnt < priv->AdAuxAntennaRxOkCnt) 1236 if ((priv->AdMainAntennaRxOkCnt < priv->AdAuxAntennaRxOkCnt)
1281 && (priv->CurrAntennaIndex == 0)) { 1237 && (priv->CurrAntennaIndex == 0)) {
1282 // We set Main antenna as default but RxOk count was less than Aux ones. 1238 // We set Main antenna as default but RxOk count was less than Aux ones.
1283 1239
@@ -1287,7 +1243,7 @@ SwAntennaDiversity(
1287 // Switch to Aux antenna. 1243 // Switch to Aux antenna.
1288 SwitchAntenna(dev); 1244 SwitchAntenna(dev);
1289 priv->bHWAdSwitched = true; 1245 priv->bHWAdSwitched = true;
1290 } else if((priv->AdAuxAntennaRxOkCnt < priv->AdMainAntennaRxOkCnt) 1246 } else if ((priv->AdAuxAntennaRxOkCnt < priv->AdMainAntennaRxOkCnt)
1291 && (priv->CurrAntennaIndex == 1)) { 1247 && (priv->CurrAntennaIndex == 1)) {
1292 // We set Aux antenna as default but RxOk count was less than Main ones. 1248 // We set Aux antenna as default but RxOk count was less than Main ones.
1293 1249
@@ -1317,10 +1273,10 @@ SwAntennaDiversity(
1317 // Our guess is that main antenna have lower throughput and get many change 1273 // Our guess is that main antenna have lower throughput and get many change
1318 // to receive more CCK packets(ex.Beacon) which have stronger SignalStrength. 1274 // to receive more CCK packets(ex.Beacon) which have stronger SignalStrength.
1319 // 1275 //
1320 if( (!priv->bHWAdSwitched) && (bSwCheckSS)) { 1276 if ((!priv->bHWAdSwitched) && (bSwCheckSS)) {
1321//by amy 080312} 1277//by amy 080312}
1322 // Evaluate Rx signal strength if we shall switch antenna now. 1278 // Evaluate Rx signal strength if we shall switch antenna now.
1323 if(priv->AdRxSignalStrength < priv->AdRxSsThreshold) { 1279 if (priv->AdRxSignalStrength < priv->AdRxSsThreshold) {
1324 // Rx signal strength is weak => Switch Antenna. 1280 // Rx signal strength is weak => Switch Antenna.
1325// printk("SwAntennaDiversity(): Rx Signal Strength is weak, CurrRxSs: %d, RxSsThreshold: %d\n", 1281// printk("SwAntennaDiversity(): Rx Signal Strength is weak, CurrRxSs: %d, RxSsThreshold: %d\n",
1326// priv->AdRxSignalStrength, priv->AdRxSsThreshold); 1282// priv->AdRxSignalStrength, priv->AdRxSsThreshold);
@@ -1336,7 +1292,7 @@ SwAntennaDiversity(
1336 1292
1337 priv->bAdSwitchedChecking = false; 1293 priv->bAdSwitchedChecking = false;
1338 // Increase Rx signal strength threshold if necessary. 1294 // Increase Rx signal strength threshold if necessary.
1339 if( (priv->AdRxSignalStrength > (priv->AdRxSsThreshold + 10)) && // Signal is much stronger than current threshold 1295 if ((priv->AdRxSignalStrength > (priv->AdRxSsThreshold + 10)) && // Signal is much stronger than current threshold
1340 priv->AdRxSsThreshold <= priv->AdMaxRxSsThreshold) { // Current threhold is not yet reach upper limit. 1296 priv->AdRxSsThreshold <= priv->AdMaxRxSsThreshold) { // Current threhold is not yet reach upper limit.
1341 1297
1342 priv->AdRxSsThreshold = (priv->AdRxSsThreshold + priv->AdRxSignalStrength) / 2; 1298 priv->AdRxSsThreshold = (priv->AdRxSsThreshold + priv->AdRxSignalStrength) / 2;
@@ -1345,7 +1301,7 @@ SwAntennaDiversity(
1345 } 1301 }
1346 1302
1347 // Reduce Antenna Diversity checking period if possible. 1303 // Reduce Antenna Diversity checking period if possible.
1348 if( priv->AdCheckPeriod > priv->AdMinCheckPeriod ) 1304 if (priv->AdCheckPeriod > priv->AdMinCheckPeriod)
1349 priv->AdCheckPeriod /= 2; 1305 priv->AdCheckPeriod /= 2;
1350 } 1306 }
1351 } 1307 }
@@ -1366,12 +1322,11 @@ SwAntennaDiversity(
1366// Description: 1322// Description:
1367// Return TRUE if we shall perform Tx Power Tracking Mecahnism, FALSE otherwise. 1323// Return TRUE if we shall perform Tx Power Tracking Mecahnism, FALSE otherwise.
1368// 1324//
1369bool 1325bool CheckTxPwrTracking(struct net_device *dev)
1370CheckTxPwrTracking( struct net_device *dev)
1371{ 1326{
1372 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 1327 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
1373 1328
1374 if(!priv->bTxPowerTrack) 1329 if (!priv->bTxPowerTrack)
1375 return false; 1330 return false;
1376 1331
1377//lzm reserved 080826 1332//lzm reserved 080826
@@ -1381,7 +1336,7 @@ CheckTxPwrTracking( struct net_device *dev)
1381 //} 1336 //}
1382 1337
1383 //if 87SE is in High Power , don't do Tx Power Tracking. asked by SD3 ED. 2008-08-08 Isaiah 1338 //if 87SE is in High Power , don't do Tx Power Tracking. asked by SD3 ED. 2008-08-08 Isaiah
1384 if(priv->bToUpdateTxPwr) 1339 if (priv->bToUpdateTxPwr)
1385 return false; 1340 return false;
1386 1341
1387 return true; 1342 return true;
@@ -1392,10 +1347,7 @@ CheckTxPwrTracking( struct net_device *dev)
1392// Description: 1347// Description:
1393// Timer callback function of SW Antenna Diversity. 1348// Timer callback function of SW Antenna Diversity.
1394// 1349//
1395void 1350void SwAntennaDiversityTimerCallback(struct net_device *dev)
1396SwAntennaDiversityTimerCallback(
1397 struct net_device *dev
1398 )
1399{ 1351{
1400 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 1352 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
1401 RT_RF_POWER_STATE rtState; 1353 RT_RF_POWER_STATE rtState;
@@ -1418,9 +1370,9 @@ SwAntennaDiversityTimerCallback(
1418 } 1370 }
1419 SwAntennaDiversity(dev); 1371 SwAntennaDiversity(dev);
1420 1372
1421 } while(false); 1373 } while (false);
1422 1374
1423 if(priv->up) { 1375 if (priv->up) {
1424 priv->SwAntennaDiversityTimer.expires = jiffies + MSECS(ANTENNA_DIVERSITY_TIMER_PERIOD); 1376 priv->SwAntennaDiversityTimer.expires = jiffies + MSECS(ANTENNA_DIVERSITY_TIMER_PERIOD);
1425 add_timer(&priv->SwAntennaDiversityTimer); 1377 add_timer(&priv->SwAntennaDiversityTimer);
1426 } 1378 }