aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Miller <amiller@amilx.com>2012-03-15 15:05:18 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-03-15 17:04:35 -0400
commitaada7fdd8dff89a2f51ccc0d20efa69f0756d90b (patch)
tree42dd2f432f0fb8404d28d75cf73c1632b4c38ce7
parent004c7acb12fd46be084bbdf7866476e5e1116ff3 (diff)
Staging: rtl8187se: r8180_dm.c: Fix brackets
Fix brackets that where out of place and removed brackets that were not needed 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.c531
1 files changed, 166 insertions, 365 deletions
diff --git a/drivers/staging/rtl8187se/r8180_dm.c b/drivers/staging/rtl8187se/r8180_dm.c
index 80fd71cb53e5..97e4fefe8422 100644
--- a/drivers/staging/rtl8187se/r8180_dm.c
+++ b/drivers/staging/rtl8187se/r8180_dm.c
@@ -17,14 +17,10 @@ bool CheckHighPower(struct net_device *dev)
17 struct ieee80211_device *ieee = priv->ieee80211; 17 struct ieee80211_device *ieee = priv->ieee80211;
18 18
19 if(!priv->bRegHighPowerMechanism) 19 if(!priv->bRegHighPowerMechanism)
20 {
21 return false; 20 return false;
22 }
23 21
24 if(ieee->state == IEEE80211_LINKED_SCANNING) 22 if(ieee->state == IEEE80211_LINKED_SCANNING)
25 {
26 return false; 23 return false;
27 }
28 24
29 return true; 25 return true;
30} 26}
@@ -70,8 +66,7 @@ DoTxHighPower(
70 // printk("DoTxHighPower() - UndecoratedSmoothedSS:%d, CurCCKRSSI = %d , bCurCCKPkt= %d \n", priv->UndecoratedSmoothedSS, priv->CurCCKRSSI, priv->bCurCCKPkt ); 66 // printk("DoTxHighPower() - UndecoratedSmoothedSS:%d, CurCCKRSSI = %d , bCurCCKPkt= %d \n", priv->UndecoratedSmoothedSS, priv->CurCCKRSSI, priv->bCurCCKPkt );
71 67
72 if((priv->UndecoratedSmoothedSS > HiPwrUpperTh) || 68 if((priv->UndecoratedSmoothedSS > HiPwrUpperTh) ||
73 (priv->bCurCCKPkt && (priv->CurCCKRSSI > RSSIHiPwrUpperTh))) 69 (priv->bCurCCKPkt && (priv->CurCCKRSSI > RSSIHiPwrUpperTh))) {
74 {
75 // Stevenl suggested that degrade 8dbm in high power sate. 2007-12-04 Isaiah 70 // Stevenl suggested that degrade 8dbm in high power sate. 2007-12-04 Isaiah
76 71
77 // printk("=====>DoTxHighPower() - High Power - UndecoratedSmoothedSS:%d, HiPwrUpperTh = %d \n", priv->UndecoratedSmoothedSS, HiPwrUpperTh ); 72 // printk("=====>DoTxHighPower() - High Power - UndecoratedSmoothedSS:%d, HiPwrUpperTh = %d \n", priv->UndecoratedSmoothedSS, HiPwrUpperTh );
@@ -79,8 +74,7 @@ DoTxHighPower(
79 u1bTmp= read_nic_byte(dev, CCK_TXAGC); 74 u1bTmp= read_nic_byte(dev, CCK_TXAGC);
80 75
81 // If it never enter High Power. 76 // If it never enter High Power.
82 if( CckTxPwrIdx == u1bTmp) 77 if( CckTxPwrIdx == u1bTmp) {
83 {
84 u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm 78 u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm
85 write_nic_byte(dev, CCK_TXAGC, u1bTmp); 79 write_nic_byte(dev, CCK_TXAGC, u1bTmp);
86 80
@@ -89,26 +83,21 @@ DoTxHighPower(
89 write_nic_byte(dev, OFDM_TXAGC, u1bTmp); 83 write_nic_byte(dev, OFDM_TXAGC, u1bTmp);
90 } 84 }
91 85
92 } 86 } else if((priv->UndecoratedSmoothedSS < HiPwrLowerTh) &&
93 else if((priv->UndecoratedSmoothedSS < HiPwrLowerTh) && 87 (!priv->bCurCCKPkt || priv->CurCCKRSSI < RSSIHiPwrLowerTh)) {
94 (!priv->bCurCCKPkt || priv->CurCCKRSSI < RSSIHiPwrLowerTh))
95 {
96 // printk("DoTxHighPower() - lower Power - UndecoratedSmoothedSS:%d, HiPwrUpperTh = %d \n", priv->UndecoratedSmoothedSS, HiPwrLowerTh ); 88 // printk("DoTxHighPower() - lower Power - UndecoratedSmoothedSS:%d, HiPwrUpperTh = %d \n", priv->UndecoratedSmoothedSS, HiPwrLowerTh );
97 if(priv->bToUpdateTxPwr) 89 if(priv->bToUpdateTxPwr) {
98 {
99 priv->bToUpdateTxPwr = false; 90 priv->bToUpdateTxPwr = false;
100 //SD3 required. 91 //SD3 required.
101 u1bTmp= read_nic_byte(dev, CCK_TXAGC); 92 u1bTmp= read_nic_byte(dev, CCK_TXAGC);
102 if(u1bTmp < CckTxPwrIdx) 93 if(u1bTmp < CckTxPwrIdx) {
103 {
104 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm 94 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm
105 //write_nic_byte(dev, CCK_TXAGC, u1bTmp); 95 //write_nic_byte(dev, CCK_TXAGC, u1bTmp);
106 write_nic_byte(dev, CCK_TXAGC, CckTxPwrIdx); 96 write_nic_byte(dev, CCK_TXAGC, CckTxPwrIdx);
107 } 97 }
108 98
109 u1bTmp= read_nic_byte(dev, OFDM_TXAGC); 99 u1bTmp= read_nic_byte(dev, OFDM_TXAGC);
110 if(u1bTmp < OfdmTxPwrIdx) 100 if(u1bTmp < OfdmTxPwrIdx) {
111 {
112 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm 101 //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm
113 //write_nic_byte(dev, OFDM_TXAGC, u1bTmp); 102 //write_nic_byte(dev, OFDM_TXAGC, u1bTmp);
114 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); 103 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx);
@@ -193,29 +182,25 @@ DIG_Zebra(
193// printk("DIG**********OFDM False Alarm: %#X \n",OFDMFalseAlarm); 182// printk("DIG**********OFDM False Alarm: %#X \n",OFDMFalseAlarm);
194 183
195 // The number of initial gain steps is different, by Bruce, 2007-04-13. 184 // The number of initial gain steps is different, by Bruce, 2007-04-13.
196 if (priv->InitialGain == 0 ) //autoDIG 185 if (priv->InitialGain == 0 ) { //autoDIG
197 { // Advised from SD3 DZ 186 // Advised from SD3 DZ
198 priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm) 187 priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm)
199 } 188 }
200 { // Advised from SD3 DZ 189 // Advised from SD3 DZ
201 OfdmFA1 = 0x20; 190 OfdmFA1 = 0x20;
202 }
203 191
204#if 1 //lzm reserved 080826 192#if 1 //lzm reserved 080826
205 AwakePeriodIn2Sec = (2000-priv ->DozePeriodInPast2Sec); 193 AwakePeriodIn2Sec = (2000-priv ->DozePeriodInPast2Sec);
206 //printk("&&& DozePeriod=%d AwakePeriod=%d\n", priv->DozePeriodInPast2Sec, AwakePeriodIn2Sec); 194 //printk("&&& DozePeriod=%d AwakePeriod=%d\n", priv->DozePeriodInPast2Sec, AwakePeriodIn2Sec);
207 priv ->DozePeriodInPast2Sec=0; 195 priv ->DozePeriodInPast2Sec=0;
208 196
209 if(AwakePeriodIn2Sec) 197 if(AwakePeriodIn2Sec) {
210 {
211 //RT_TRACE(COMP_DIG, DBG_TRACE, ("DIG: AwakePeriodIn2Sec(%d) - FATh(0x%X , 0x%X) ->",AwakePeriodIn2Sec, OfdmFA1, OfdmFA2)); 198 //RT_TRACE(COMP_DIG, DBG_TRACE, ("DIG: AwakePeriodIn2Sec(%d) - FATh(0x%X , 0x%X) ->",AwakePeriodIn2Sec, OfdmFA1, OfdmFA2));
212 // adjuest DIG threshold. 199 // adjuest DIG threshold.
213 OfdmFA1 = (u16)((OfdmFA1*AwakePeriodIn2Sec) / 2000) ; 200 OfdmFA1 = (u16)((OfdmFA1*AwakePeriodIn2Sec) / 2000) ;
214 OfdmFA2 = (u16)((OfdmFA2*AwakePeriodIn2Sec) / 2000) ; 201 OfdmFA2 = (u16)((OfdmFA2*AwakePeriodIn2Sec) / 2000) ;
215 //RT_TRACE(COMP_DIG, DBG_TRACE, ("( 0x%X , 0x%X)\n", OfdmFA1, OfdmFA2)); 202 //RT_TRACE(COMP_DIG, DBG_TRACE, ("( 0x%X , 0x%X)\n", OfdmFA1, OfdmFA2));
216 } 203 } else {
217 else
218 {
219 ;//RT_TRACE(COMP_DIG, DBG_WARNING, ("ERROR!! AwakePeriodIn2Sec should not be ZERO!!\n")); 204 ;//RT_TRACE(COMP_DIG, DBG_WARNING, ("ERROR!! AwakePeriodIn2Sec should not be ZERO!!\n"));
220 } 205 }
221#endif 206#endif
@@ -223,16 +208,12 @@ DIG_Zebra(
223 InitialGainStep = 8; 208 InitialGainStep = 8;
224 LowestGainStage = priv->RegBModeGainStage; // Lowest gain stage. 209 LowestGainStage = priv->RegBModeGainStage; // Lowest gain stage.
225 210
226 if (OFDMFalseAlarm > OfdmFA1) 211 if (OFDMFalseAlarm > OfdmFA1) {
227 { 212 if (OFDMFalseAlarm > OfdmFA2) {
228 if (OFDMFalseAlarm > OfdmFA2)
229 {
230 priv->DIG_NumberFallbackVote++; 213 priv->DIG_NumberFallbackVote++;
231 if (priv->DIG_NumberFallbackVote >1) 214 if (priv->DIG_NumberFallbackVote >1) {
232 {
233 //serious OFDM False Alarm, need fallback 215 //serious OFDM False Alarm, need fallback
234 if (priv->InitialGain < InitialGainStep) 216 if (priv->InitialGain < InitialGainStep) {
235 {
236 priv->InitialGainBackUp= priv->InitialGain; 217 priv->InitialGainBackUp= priv->InitialGain;
237 218
238 priv->InitialGain = (priv->InitialGain + 1); 219 priv->InitialGain = (priv->InitialGain + 1);
@@ -243,24 +224,18 @@ DIG_Zebra(
243 priv->DIG_NumberFallbackVote = 0; 224 priv->DIG_NumberFallbackVote = 0;
244 priv->DIG_NumberUpgradeVote=0; 225 priv->DIG_NumberUpgradeVote=0;
245 } 226 }
246 } 227 } else {
247 else
248 {
249 if (priv->DIG_NumberFallbackVote) 228 if (priv->DIG_NumberFallbackVote)
250 priv->DIG_NumberFallbackVote--; 229 priv->DIG_NumberFallbackVote--;
251 } 230 }
252 priv->DIG_NumberUpgradeVote=0; 231 priv->DIG_NumberUpgradeVote=0;
253 } 232 } else {
254 else
255 {
256 if (priv->DIG_NumberFallbackVote) 233 if (priv->DIG_NumberFallbackVote)
257 priv->DIG_NumberFallbackVote--; 234 priv->DIG_NumberFallbackVote--;
258 priv->DIG_NumberUpgradeVote++; 235 priv->DIG_NumberUpgradeVote++;
259 236
260 if (priv->DIG_NumberUpgradeVote>9) 237 if (priv->DIG_NumberUpgradeVote>9) {
261 { 238 if (priv->InitialGain > LowestGainStage) { // In 87B, m78dBm means State 4 (m864dBm)
262 if (priv->InitialGain > LowestGainStage) // In 87B, m78dBm means State 4 (m864dBm)
263 {
264 priv->InitialGainBackUp= priv->InitialGain; 239 priv->InitialGainBackUp= priv->InitialGain;
265 240
266 priv->InitialGain = (priv->InitialGain - 1); 241 priv->InitialGain = (priv->InitialGain - 1);
@@ -317,18 +292,14 @@ IncludedInSupportedRates(
317 292
318 rate_len = priv->ieee80211->current_network.rates_len; 293 rate_len = priv->ieee80211->current_network.rates_len;
319 rate_ex_len = priv->ieee80211->current_network.rates_ex_len; 294 rate_ex_len = priv->ieee80211->current_network.rates_ex_len;
320 for( idx=0; idx< rate_len; idx++ ) 295 for( idx=0; idx< rate_len; idx++ ) {
321 { 296 if( (priv->ieee80211->current_network.rates[idx] & RateMask) == NaiveTxRate ) {
322 if( (priv->ieee80211->current_network.rates[idx] & RateMask) == NaiveTxRate )
323 {
324 Found = 1; 297 Found = 1;
325 goto found_rate; 298 goto found_rate;
326 } 299 }
327 } 300 }
328 for( idx=0; idx< rate_ex_len; idx++ ) 301 for( idx=0; idx< rate_ex_len; idx++ ) {
329 { 302 if( (priv->ieee80211->current_network.rates_ex[idx] & RateMask) == NaiveTxRate ) {
330 if( (priv->ieee80211->current_network.rates_ex[idx] & RateMask) == NaiveTxRate )
331 {
332 Found = 1; 303 Found = 1;
333 goto found_rate; 304 goto found_rate;
334 } 305 }
@@ -354,8 +325,7 @@ GetUpgradeTxRate(
354 u8 UpRate; 325 u8 UpRate;
355 326
356 // Upgrade 1 degree. 327 // Upgrade 1 degree.
357 switch(rate) 328 switch(rate) {
358 {
359 case 108: // Up to 54Mbps. 329 case 108: // Up to 54Mbps.
360 UpRate = 108; 330 UpRate = 108;
361 break; 331 break;
@@ -397,13 +367,10 @@ GetUpgradeTxRate(
397 return rate; 367 return rate;
398 } 368 }
399 // Check if the rate is valid. 369 // Check if the rate is valid.
400 if(IncludedInSupportedRates(priv, UpRate)) 370 if(IncludedInSupportedRates(priv, UpRate)) {
401 {
402// printk("GetUpgradeTxRate(): GetUpgrade Tx rate(%d) from %d !\n", UpRate, priv->CurrentOperaRate); 371// printk("GetUpgradeTxRate(): GetUpgrade Tx rate(%d) from %d !\n", UpRate, priv->CurrentOperaRate);
403 return UpRate; 372 return UpRate;
404 } 373 } else {
405 else
406 {
407 //printk("GetUpgradeTxRate(): Tx rate (%d) is not in supported rates\n", UpRate); 374 //printk("GetUpgradeTxRate(): Tx rate (%d) is not in supported rates\n", UpRate);
408 return rate; 375 return rate;
409 } 376 }
@@ -425,8 +392,7 @@ GetDegradeTxRate(
425 u8 DownRate; 392 u8 DownRate;
426 393
427 // Upgrade 1 degree. 394 // Upgrade 1 degree.
428 switch(rate) 395 switch(rate) {
429 {
430 case 108: // Down to 48Mbps. 396 case 108: // Down to 48Mbps.
431 DownRate = 96; 397 DownRate = 96;
432 break; 398 break;
@@ -468,13 +434,10 @@ GetDegradeTxRate(
468 return rate; 434 return rate;
469 } 435 }
470 // Check if the rate is valid. 436 // Check if the rate is valid.
471 if(IncludedInSupportedRates(priv, DownRate)) 437 if(IncludedInSupportedRates(priv, DownRate)) {
472 {
473// printk("GetDegradeTxRate(): GetDegrade Tx rate(%d) from %d!\n", DownRate, priv->CurrentOperaRate); 438// printk("GetDegradeTxRate(): GetDegrade Tx rate(%d) from %d!\n", DownRate, priv->CurrentOperaRate);
474 return DownRate; 439 return DownRate;
475 } 440 } else {
476 else
477 {
478 //printk("GetDegradeTxRate(): Tx rate (%d) is not in supported rates\n", DownRate); 441 //printk("GetDegradeTxRate(): Tx rate (%d) is not in supported rates\n", DownRate);
479 return rate; 442 return rate;
480 } 443 }
@@ -492,8 +455,7 @@ MgntIsCckRate(
492{ 455{
493 bool bReturn = false; 456 bool bReturn = false;
494 457
495 if((rate <= 22) && (rate != 12) && (rate != 18)) 458 if((rate <= 22) && (rate != 12) && (rate != 18)) {
496 {
497 bReturn = true; 459 bReturn = true;
498 } 460 }
499 461
@@ -520,18 +482,16 @@ TxPwrTracking87SE(
520 482
521 //printk("TxPwrTracking87SE(): CurrentThermal(%d)\n", CurrentThermal); 483 //printk("TxPwrTracking87SE(): CurrentThermal(%d)\n", CurrentThermal);
522 484
523 if( CurrentThermal != priv->ThermalMeter) 485 if( CurrentThermal != priv->ThermalMeter) {
524 {
525// printk("TxPwrTracking87SE(): Thermal meter changed!!!\n"); 486// printk("TxPwrTracking87SE(): Thermal meter changed!!!\n");
526 487
527 // Update Tx Power level on each channel. 488 // Update Tx Power level on each channel.
528 for(Idx = 1; Idx<15; Idx++) 489 for(Idx = 1; Idx<15; Idx++) {
529 {
530 CckTxPwrIdx = priv->chtxpwr[Idx]; 490 CckTxPwrIdx = priv->chtxpwr[Idx];
531 OfdmTxPwrIdx = priv->chtxpwr_ofdm[Idx]; 491 OfdmTxPwrIdx = priv->chtxpwr_ofdm[Idx];
532 492
533 if( CurrentThermal > priv->ThermalMeter ) 493 if( CurrentThermal > priv->ThermalMeter ) {
534 { // higher thermal meter. 494 // higher thermal meter.
535 CckTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; 495 CckTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2;
536 OfdmTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; 496 OfdmTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2;
537 497
@@ -539,9 +499,8 @@ TxPwrTracking87SE(
539 CckTxPwrIdx = 35; // Force TxPower to maximal index. 499 CckTxPwrIdx = 35; // Force TxPower to maximal index.
540 if(OfdmTxPwrIdx >35) 500 if(OfdmTxPwrIdx >35)
541 OfdmTxPwrIdx = 35; 501 OfdmTxPwrIdx = 35;
542 } 502 } else {
543 else 503 // lower thermal meter.
544 { // lower thermal meter.
545 CckTxPwrIdx -= (priv->ThermalMeter - CurrentThermal)*2; 504 CckTxPwrIdx -= (priv->ThermalMeter - CurrentThermal)*2;
546 OfdmTxPwrIdx -= (priv->ThermalMeter - CurrentThermal)*2; 505 OfdmTxPwrIdx -= (priv->ThermalMeter - CurrentThermal)*2;
547 506
@@ -594,12 +553,10 @@ StaRateAdaptive87SE(
594 priv->CurrentOperaRate = priv->ieee80211->rate/5; 553 priv->CurrentOperaRate = priv->ieee80211->rate/5;
595 //printk("priv->CurrentOperaRate is %d\n",priv->CurrentOperaRate); 554 //printk("priv->CurrentOperaRate is %d\n",priv->CurrentOperaRate);
596 //2 Compute retry ratio. 555 //2 Compute retry ratio.
597 if (CurrTxokCnt>0) 556 if (CurrTxokCnt>0) {
598 {
599 CurrRetryRate = (u16)(CurrRetryCnt*100/CurrTxokCnt); 557 CurrRetryRate = (u16)(CurrRetryCnt*100/CurrTxokCnt);
600 } 558 } else {
601 else 559 // It may be serious retry. To distinguish serious retry or no packets modified by Bruce
602 { // It may be serious retry. To distinguish serious retry or no packets modified by Bruce
603 CurrRetryRate = (u16)(CurrRetryCnt*100/1); 560 CurrRetryRate = (u16)(CurrRetryCnt*100/1);
604 } 561 }
605 562
@@ -622,8 +579,7 @@ StaRateAdaptive87SE(
622 priv->CurrRetryCnt = 0; 579 priv->CurrRetryCnt = 0;
623 580
624 //2No Tx packets, return to init_rate or not? 581 //2No Tx packets, return to init_rate or not?
625 if (CurrRetryRate==0 && CurrTxokCnt == 0) 582 if (CurrRetryRate==0 && CurrTxokCnt == 0) {
626 {
627 // 583 //
628 //After 9 (30*300ms) seconds in this condition, we try to raise rate. 584 //After 9 (30*300ms) seconds in this condition, we try to raise rate.
629 // 585 //
@@ -631,8 +587,7 @@ StaRateAdaptive87SE(
631 587
632// printk("No Tx packets, TryupingCountNoData(%d)\n", priv->TryupingCountNoData); 588// printk("No Tx packets, TryupingCountNoData(%d)\n", priv->TryupingCountNoData);
633 //[TRC Dell Lab] Extend raised period from 4.5sec to 9sec, Isaiah 2008-02-15 18:00 589 //[TRC Dell Lab] Extend raised period from 4.5sec to 9sec, Isaiah 2008-02-15 18:00
634 if (priv->TryupingCountNoData>30) 590 if (priv->TryupingCountNoData>30) {
635 {
636 priv->TryupingCountNoData = 0; 591 priv->TryupingCountNoData = 0;
637 priv->CurrentOperaRate = GetUpgradeTxRate(dev, priv->CurrentOperaRate); 592 priv->CurrentOperaRate = GetUpgradeTxRate(dev, priv->CurrentOperaRate);
638 // Reset Fail Record 593 // Reset Fail Record
@@ -641,9 +596,7 @@ StaRateAdaptive87SE(
641 priv->FailTxRateCount = 0; 596 priv->FailTxRateCount = 0;
642 } 597 }
643 goto SetInitialGain; 598 goto SetInitialGain;
644 } 599 } else {
645 else
646 {
647 priv->TryupingCountNoData=0; //Reset trying up times. 600 priv->TryupingCountNoData=0; //Reset trying up times.
648 } 601 }
649 602
@@ -671,20 +624,15 @@ StaRateAdaptive87SE(
671 // Check more times in these rate(key rates). 624 // Check more times in these rate(key rates).
672 // 625 //
673 if(priv->CurrentOperaRate == 22 || priv->CurrentOperaRate == 72) 626 if(priv->CurrentOperaRate == 22 || priv->CurrentOperaRate == 72)
674 {
675 TryUpTh += 9; 627 TryUpTh += 9;
676 }
677 // 628 //
678 // Let these rates down more difficult. 629 // Let these rates down more difficult.
679 // 630 //
680 if(MgntIsCckRate(priv->CurrentOperaRate) || priv->CurrentOperaRate == 36) 631 if(MgntIsCckRate(priv->CurrentOperaRate) || priv->CurrentOperaRate == 36)
681 {
682 TryDownTh += 1; 632 TryDownTh += 1;
683 }
684 633
685 //1 Adjust Rate. 634 //1 Adjust Rate.
686 if (priv->bTryuping == true) 635 if (priv->bTryuping == true) {
687 {
688 //2 For Test Upgrading mechanism 636 //2 For Test Upgrading mechanism
689 // Note: 637 // Note:
690 // Sometimes the throughput is upon on the capability bwtween the AP and NIC, 638 // Sometimes the throughput is upon on the capability bwtween the AP and NIC,
@@ -692,21 +640,16 @@ StaRateAdaptive87SE(
692 // We randomly upgrade the data rate and check if the retry rate is improved. 640 // We randomly upgrade the data rate and check if the retry rate is improved.
693 641
694 // Upgrading rate did not improve the retry rate, fallback to the original rate. 642 // Upgrading rate did not improve the retry rate, fallback to the original rate.
695 if ( (CurrRetryRate > 25) && TxThroughput < priv->LastTxThroughput) 643 if ( (CurrRetryRate > 25) && TxThroughput < priv->LastTxThroughput) {
696 {
697 //Not necessary raising rate, fall back rate. 644 //Not necessary raising rate, fall back rate.
698 bTryDown = true; 645 bTryDown = true;
699 //printk("case1-1: Not necessary raising rate, fall back rate....\n"); 646 //printk("case1-1: Not necessary raising rate, fall back rate....\n");
700 //printk("case1-1: pMgntInfo->CurrentOperaRate =%d, TxThroughput = %d, LastThroughput = %d\n", 647 //printk("case1-1: pMgntInfo->CurrentOperaRate =%d, TxThroughput = %d, LastThroughput = %d\n",
701 // priv->CurrentOperaRate, TxThroughput, priv->LastTxThroughput); 648 // priv->CurrentOperaRate, TxThroughput, priv->LastTxThroughput);
702 } 649 } else {
703 else
704 {
705 priv->bTryuping = false; 650 priv->bTryuping = false;
706 } 651 }
707 } 652 } else if (CurrSignalStrength > -47 && (CurrRetryRate < 50)) {
708 else if (CurrSignalStrength > -47 && (CurrRetryRate < 50))
709 {
710 //2For High Power 653 //2For High Power
711 // 654 //
712 // Added by Roger, 2007.04.09. 655 // Added by Roger, 2007.04.09.
@@ -715,17 +658,14 @@ StaRateAdaptive87SE(
715 // Revise SignalStrength threshold to -51dbm. 658 // Revise SignalStrength threshold to -51dbm.
716 // 659 //
717 // Also need to check retry rate for safety, by Bruce, 2007-06-05. 660 // Also need to check retry rate for safety, by Bruce, 2007-06-05.
718 if(priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate ) 661 if(priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate ) {
719 {
720 bTryUp = true; 662 bTryUp = true;
721 // Upgrade Tx Rate directly. 663 // Upgrade Tx Rate directly.
722 priv->TryupingCount += TryUpTh; 664 priv->TryupingCount += TryUpTh;
723 } 665 }
724// printk("case2: StaRateAdaptive87SE: Power(%d) is high enough!!. \n", CurrSignalStrength); 666// printk("case2: StaRateAdaptive87SE: Power(%d) is high enough!!. \n", CurrSignalStrength);
725 667
726 } 668 } else if(CurrTxokCnt > 9 && CurrTxokCnt< 100 && CurrRetryRate >= 600) {
727 else if(CurrTxokCnt > 9 && CurrTxokCnt< 100 && CurrRetryRate >= 600)
728 {
729 //2 For Serious Retry 669 //2 For Serious Retry
730 // 670 //
731 // Traffic is not busy but our Tx retry is serious. 671 // Traffic is not busy but our Tx retry is serious.
@@ -734,208 +674,147 @@ StaRateAdaptive87SE(
734 // Let Rate Mechanism to degrade tx rate directly. 674 // Let Rate Mechanism to degrade tx rate directly.
735 priv->TryDownCountLowData += TryDownTh; 675 priv->TryDownCountLowData += TryDownTh;
736// printk("case3: RA: Tx Retry is serious. Degrade Tx Rate to %d directly...\n", priv->CurrentOperaRate); 676// printk("case3: RA: Tx Retry is serious. Degrade Tx Rate to %d directly...\n", priv->CurrentOperaRate);
737 } 677 } else if ( priv->CurrentOperaRate == 108 ) {
738 else if ( priv->CurrentOperaRate == 108 )
739 {
740 //2For 54Mbps 678 //2For 54Mbps
741 // Air Link 679 // Air Link
742 if ( (CurrRetryRate>26)&&(priv->LastRetryRate>25)) 680 if ( (CurrRetryRate>26)&&(priv->LastRetryRate>25)) {
743// if ( (CurrRetryRate>40)&&(priv->LastRetryRate>39)) 681// if ( (CurrRetryRate>40)&&(priv->LastRetryRate>39))
744 {
745 //Down to rate 48Mbps. 682 //Down to rate 48Mbps.
746 bTryDown = true; 683 bTryDown = true;
747 } 684 }
748 // Cable Link 685 // Cable Link
749 else if ( (CurrRetryRate>17)&&(priv->LastRetryRate>16) && (CurrSignalStrength > -72)) 686 else if ( (CurrRetryRate>17)&&(priv->LastRetryRate>16) && (CurrSignalStrength > -72)) {
750// else if ( (CurrRetryRate>17)&&(priv->LastRetryRate>16) && (CurrSignalStrength > -72)) 687// else if ( (CurrRetryRate>17)&&(priv->LastRetryRate>16) && (CurrSignalStrength > -72))
751 {
752 //Down to rate 48Mbps. 688 //Down to rate 48Mbps.
753 bTryDown = true; 689 bTryDown = true;
754 } 690 }
755 691
756 if(bTryDown && (CurrSignalStrength < -75)) //cable link 692 if(bTryDown && (CurrSignalStrength < -75)) //cable link
757 {
758 priv->TryDownCountLowData += TryDownTh; 693 priv->TryDownCountLowData += TryDownTh;
759 }
760 //printk("case4---54M \n"); 694 //printk("case4---54M \n");
761 695
762 } 696 }
763 else if ( priv->CurrentOperaRate == 96 ) 697 else if ( priv->CurrentOperaRate == 96 ) {
764 {
765 //2For 48Mbps 698 //2For 48Mbps
766 //Air Link 699 //Air Link
767 if ( ((CurrRetryRate>48) && (priv->LastRetryRate>47))) 700 if ( ((CurrRetryRate>48) && (priv->LastRetryRate>47))) {
768// if ( ((CurrRetryRate>65) && (priv->LastRetryRate>64))) 701// if ( ((CurrRetryRate>65) && (priv->LastRetryRate>64)))
769
770 {
771 //Down to rate 36Mbps. 702 //Down to rate 36Mbps.
772 bTryDown = true; 703 bTryDown = true;
773 } 704 } else if ( ((CurrRetryRate>21) && (priv->LastRetryRate>20)) && (CurrSignalStrength > -74)) { //Cable Link
774 //Cable Link
775 else if ( ((CurrRetryRate>21) && (priv->LastRetryRate>20)) && (CurrSignalStrength > -74))
776 {
777 //Down to rate 36Mbps. 705 //Down to rate 36Mbps.
778 bTryDown = true; 706 bTryDown = true;
779 } 707 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) {
780 else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 ))
781// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 708// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
782 {
783 bTryDown = true; 709 bTryDown = true;
784 priv->TryDownCountLowData += TryDownTh; 710 priv->TryDownCountLowData += TryDownTh;
785 } 711 } else if ( (CurrRetryRate<8) && (priv->LastRetryRate<8) ) { //TO DO: need to consider (RSSI)
786 else if ( (CurrRetryRate<8) && (priv->LastRetryRate<8) ) //TO DO: need to consider (RSSI)
787// else if ( (CurrRetryRate<28) && (priv->LastRetryRate<8) ) 712// else if ( (CurrRetryRate<28) && (priv->LastRetryRate<8) )
788 {
789 bTryUp = true; 713 bTryUp = true;
790 } 714 }
791 715
792 if(bTryDown && (CurrSignalStrength < -75)) 716 if(bTryDown && (CurrSignalStrength < -75)){
793 {
794 priv->TryDownCountLowData += TryDownTh; 717 priv->TryDownCountLowData += TryDownTh;
795 } 718 }
796 //printk("case5---48M \n"); 719 //printk("case5---48M \n");
797 } 720 } else if ( priv->CurrentOperaRate == 72 ) {
798 else if ( priv->CurrentOperaRate == 72 )
799 {
800 //2For 36Mbps 721 //2For 36Mbps
801 if ( (CurrRetryRate>43) && (priv->LastRetryRate>41)) 722 if ( (CurrRetryRate>43) && (priv->LastRetryRate>41)) {
802// if ( (CurrRetryRate>60) && (priv->LastRetryRate>59)) 723// if ( (CurrRetryRate>60) && (priv->LastRetryRate>59))
803 {
804 //Down to rate 24Mbps. 724 //Down to rate 24Mbps.
805 bTryDown = true; 725 bTryDown = true;
806 } 726 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) {
807 else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 ))
808// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 727// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
809 {
810 bTryDown = true; 728 bTryDown = true;
811 priv->TryDownCountLowData += TryDownTh; 729 priv->TryDownCountLowData += TryDownTh;
812 } 730 } else if ( (CurrRetryRate<15) && (priv->LastRetryRate<16)) { //TO DO: need to consider (RSSI)
813 else if ( (CurrRetryRate<15) && (priv->LastRetryRate<16)) //TO DO: need to consider (RSSI)
814// else if ( (CurrRetryRate<35) && (priv->LastRetryRate<36)) 731// else if ( (CurrRetryRate<35) && (priv->LastRetryRate<36))
815 {
816 bTryUp = true; 732 bTryUp = true;
817 } 733 }
818 734
819 if(bTryDown && (CurrSignalStrength < -80)) 735 if(bTryDown && (CurrSignalStrength < -80))
820 {
821 priv->TryDownCountLowData += TryDownTh; 736 priv->TryDownCountLowData += TryDownTh;
822 } 737
823 //printk("case6---36M \n"); 738 //printk("case6---36M \n");
824 } 739 } else if ( priv->CurrentOperaRate == 48 ) {
825 else if ( priv->CurrentOperaRate == 48 )
826 {
827 //2For 24Mbps 740 //2For 24Mbps
828 // Air Link 741 // Air Link
829 if ( ((CurrRetryRate>63) && (priv->LastRetryRate>62))) 742 if ( ((CurrRetryRate>63) && (priv->LastRetryRate>62))) {
830// if ( ((CurrRetryRate>83) && (priv->LastRetryRate>82))) 743// if ( ((CurrRetryRate>83) && (priv->LastRetryRate>82)))
831 {
832 //Down to rate 18Mbps. 744 //Down to rate 18Mbps.
833 bTryDown = true; 745 bTryDown = true;
834 } 746 } else if ( ((CurrRetryRate>33) && (priv->LastRetryRate>32)) && (CurrSignalStrength > -82) ) { //Cable Link
835 //Cable Link
836 else if ( ((CurrRetryRate>33) && (priv->LastRetryRate>32)) && (CurrSignalStrength > -82) )
837// else if ( ((CurrRetryRate>50) && (priv->LastRetryRate>49)) && (CurrSignalStrength > -82) ) 747// else if ( ((CurrRetryRate>50) && (priv->LastRetryRate>49)) && (CurrSignalStrength > -82) )
838 {
839 //Down to rate 18Mbps. 748 //Down to rate 18Mbps.
840 bTryDown = true; 749 bTryDown = true;
841 } 750 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) {
842 else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 ))
843// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 751// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
844
845 {
846 bTryDown = true; 752 bTryDown = true;
847 priv->TryDownCountLowData += TryDownTh; 753 priv->TryDownCountLowData += TryDownTh;
848 } 754 } else if ( (CurrRetryRate<20) && (priv->LastRetryRate<21)) { //TO DO: need to consider (RSSI)
849 else if ( (CurrRetryRate<20) && (priv->LastRetryRate<21)) //TO DO: need to consider (RSSI)
850// else if ( (CurrRetryRate<40) && (priv->LastRetryRate<41)) 755// else if ( (CurrRetryRate<40) && (priv->LastRetryRate<41))
851 {
852 bTryUp = true; 756 bTryUp = true;
853 } 757 }
854 758
855 if(bTryDown && (CurrSignalStrength < -82)) 759 if(bTryDown && (CurrSignalStrength < -82))
856 {
857 priv->TryDownCountLowData += TryDownTh; 760 priv->TryDownCountLowData += TryDownTh;
858 } 761
859 //printk("case7---24M \n"); 762 //printk("case7---24M \n");
860 } 763 } else if ( priv->CurrentOperaRate == 36 ) {
861 else if ( priv->CurrentOperaRate == 36 )
862 {
863 //2For 18Mbps 764 //2For 18Mbps
864 // original (109, 109) 765 // original (109, 109)
865 //[TRC Dell Lab] (90, 91), Isaiah 2008-02-18 23:24 766 //[TRC Dell Lab] (90, 91), Isaiah 2008-02-18 23:24
866 // (85, 86), Isaiah 2008-02-18 24:00 767 // (85, 86), Isaiah 2008-02-18 24:00
867 if ( ((CurrRetryRate>85) && (priv->LastRetryRate>86))) 768 if ( ((CurrRetryRate>85) && (priv->LastRetryRate>86))) {
868// if ( ((CurrRetryRate>115) && (priv->LastRetryRate>116))) 769// if ( ((CurrRetryRate>115) && (priv->LastRetryRate>116)))
869 {
870 //Down to rate 11Mbps. 770 //Down to rate 11Mbps.
871 bTryDown = true; 771 bTryDown = true;
872 } 772
873 //[TRC Dell Lab] Isaiah 2008-02-18 23:24 773 //[TRC Dell Lab] Isaiah 2008-02-18 23:24
874 else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) 774 } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) {
875// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) 775// else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 ))
876 {
877 bTryDown = true; 776 bTryDown = true;
878 priv->TryDownCountLowData += TryDownTh; 777 priv->TryDownCountLowData += TryDownTh;
879 } 778 } else if ( (CurrRetryRate<22) && (priv->LastRetryRate<23)) { //TO DO: need to consider (RSSI)
880 else if ( (CurrRetryRate<22) && (priv->LastRetryRate<23)) //TO DO: need to consider (RSSI)
881// else if ( (CurrRetryRate<42) && (priv->LastRetryRate<43)) 779// else if ( (CurrRetryRate<42) && (priv->LastRetryRate<43))
882 {
883 bTryUp = true; 780 bTryUp = true;
884 } 781 }
885 //printk("case8---18M \n"); 782 //printk("case8---18M \n");
886 } 783 } else if ( priv->CurrentOperaRate == 22 ) {
887 else if ( priv->CurrentOperaRate == 22 )
888 {
889 //2For 11Mbps 784 //2For 11Mbps
890 if (CurrRetryRate>95) 785 if (CurrRetryRate>95) {
891// if (CurrRetryRate>155) 786// if (CurrRetryRate>155)
892 {
893 bTryDown = true; 787 bTryDown = true;
894 } 788 }
895 else if ( (CurrRetryRate<29) && (priv->LastRetryRate <30) )//TO DO: need to consider (RSSI) 789 else if ( (CurrRetryRate<29) && (priv->LastRetryRate <30) ) { //TO DO: need to consider (RSSI)
896// else if ( (CurrRetryRate<49) && (priv->LastRetryRate <50) ) 790// else if ( (CurrRetryRate<49) && (priv->LastRetryRate <50) )
897 {
898 bTryUp = true; 791 bTryUp = true;
899 }
900 //printk("case9---11M \n");
901 } 792 }
902 else if ( priv->CurrentOperaRate == 11 ) 793 //printk("case9---11M \n");
903 { 794 } else if ( priv->CurrentOperaRate == 11 ) {
904 //2For 5.5Mbps 795 //2For 5.5Mbps
905 if (CurrRetryRate>149) 796 if (CurrRetryRate>149) {
906// if (CurrRetryRate>189) 797// if (CurrRetryRate>189)
907 {
908 bTryDown = true; 798 bTryDown = true;
909 } 799 } else if ( (CurrRetryRate<60) && (priv->LastRetryRate < 65)) {
910 else if ( (CurrRetryRate<60) && (priv->LastRetryRate < 65))
911// else if ( (CurrRetryRate<80) && (priv->LastRetryRate < 85)) 800// else if ( (CurrRetryRate<80) && (priv->LastRetryRate < 85))
912
913 {
914 bTryUp = true; 801 bTryUp = true;
915 }
916 //printk("case10---5.5M \n");
917 } 802 }
918 else if ( priv->CurrentOperaRate == 4 ) 803 //printk("case10---5.5M \n");
919 { 804 } else if ( priv->CurrentOperaRate == 4 ) {
920 //2For 2 Mbps 805 //2For 2 Mbps
921 if((CurrRetryRate>99) && (priv->LastRetryRate>99)) 806 if((CurrRetryRate>99) && (priv->LastRetryRate>99)) {
922// if((CurrRetryRate>199) && (priv->LastRetryRate>199)) 807// if((CurrRetryRate>199) && (priv->LastRetryRate>199))
923 {
924 bTryDown = true; 808 bTryDown = true;
925 } 809 } else if ( (CurrRetryRate < 65) && (priv->LastRetryRate < 70)) {
926 else if ( (CurrRetryRate < 65) && (priv->LastRetryRate < 70))
927// else if ( (CurrRetryRate < 85) && (priv->LastRetryRate < 90)) 810// else if ( (CurrRetryRate < 85) && (priv->LastRetryRate < 90))
928 {
929 bTryUp = true; 811 bTryUp = true;
930 } 812 }
931 //printk("case11---2M \n"); 813 //printk("case11---2M \n");
932 } 814 } else if ( priv->CurrentOperaRate == 2 ) {
933 else if ( priv->CurrentOperaRate == 2 )
934 {
935 //2For 1 Mbps 815 //2For 1 Mbps
936 if( (CurrRetryRate<70) && (priv->LastRetryRate<75)) 816 if( (CurrRetryRate<70) && (priv->LastRetryRate<75)) {
937// if( (CurrRetryRate<90) && (priv->LastRetryRate<95)) 817// if( (CurrRetryRate<90) && (priv->LastRetryRate<95))
938 {
939 bTryUp = true; 818 bTryUp = true;
940 } 819 }
941 //printk("case12---1M \n"); 820 //printk("case12---1M \n");
@@ -948,10 +827,8 @@ StaRateAdaptive87SE(
948 // Sometimes the cause of the low throughput (high retry rate) is the compatibility between the AP and NIC. 827 // Sometimes the cause of the low throughput (high retry rate) is the compatibility between the AP and NIC.
949 // To test if the upper rate may cause lower retry rate, this mechanism randomly occurs to test upgrading tx rate. 828 // To test if the upper rate may cause lower retry rate, this mechanism randomly occurs to test upgrading tx rate.
950 if(!bTryUp && !bTryDown && (priv->TryupingCount == 0) && (priv->TryDownCountLowData == 0) 829 if(!bTryUp && !bTryDown && (priv->TryupingCount == 0) && (priv->TryDownCountLowData == 0)
951 && priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate && priv->FailTxRateCount < 2) 830 && priv->CurrentOperaRate != priv->ieee80211->current_network.HighestOperaRate && priv->FailTxRateCount < 2) {
952 { 831 if(jiffies% (CurrRetryRate + 101) == 0) {
953 if(jiffies% (CurrRetryRate + 101) == 0)
954 {
955 bTryUp = true; 832 bTryUp = true;
956 priv->bTryuping = true; 833 priv->bTryuping = true;
957 //printk("StaRateAdaptive87SE(): Randomly try upgrading...\n"); 834 //printk("StaRateAdaptive87SE(): Randomly try upgrading...\n");
@@ -959,18 +836,14 @@ StaRateAdaptive87SE(
959 } 836 }
960 837
961 //1 Rate Mechanism 838 //1 Rate Mechanism
962 if(bTryUp) 839 if(bTryUp) {
963 {
964 priv->TryupingCount++; 840 priv->TryupingCount++;
965 priv->TryDownCountLowData = 0; 841 priv->TryDownCountLowData = 0;
966 842
967 {
968// printk("UP: pHalData->TryupingCount = %d\n", priv->TryupingCount); 843// printk("UP: pHalData->TryupingCount = %d\n", priv->TryupingCount);
969// printk("UP: TryUpTh(%d)+ (FailTxRateCount(%d))^2 =%d\n", 844// printk("UP: TryUpTh(%d)+ (FailTxRateCount(%d))^2 =%d\n",
970// TryUpTh, priv->FailTxRateCount, (TryUpTh + priv->FailTxRateCount * priv->FailTxRateCount) ); 845// TryUpTh, priv->FailTxRateCount, (TryUpTh + priv->FailTxRateCount * priv->FailTxRateCount) );
971// printk("UP: pHalData->bTryuping=%d\n", priv->bTryuping); 846// printk("UP: pHalData->bTryuping=%d\n", priv->bTryuping);}
972
973 }
974 847
975 // 848 //
976 // Check more times if we need to upgrade indeed. 849 // Check more times if we need to upgrade indeed.
@@ -980,8 +853,7 @@ StaRateAdaptive87SE(
980 // 853 //
981 854
982 if((priv->TryupingCount > (TryUpTh + priv->FailTxRateCount * priv->FailTxRateCount)) || 855 if((priv->TryupingCount > (TryUpTh + priv->FailTxRateCount * priv->FailTxRateCount)) ||
983 (CurrSignalStrength > priv->LastFailTxRateSS) || priv->bTryuping) 856 (CurrSignalStrength > priv->LastFailTxRateSS) || priv->bTryuping) {
984 {
985 priv->TryupingCount = 0; 857 priv->TryupingCount = 0;
986 // 858 //
987 // When transferring from CCK to OFDM, DIG is an important issue. 859 // When transferring from CCK to OFDM, DIG is an important issue.
@@ -1003,61 +875,48 @@ StaRateAdaptive87SE(
1003// printk("StaRateAdaptive87SE(): Upgrade Tx Rate to %d\n", priv->CurrentOperaRate); 875// printk("StaRateAdaptive87SE(): Upgrade Tx Rate to %d\n", priv->CurrentOperaRate);
1004 876
1005 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00 877 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00
1006 if(priv->CurrentOperaRate ==36) 878 if(priv->CurrentOperaRate ==36) {
1007 {
1008 priv->bUpdateARFR=true; 879 priv->bUpdateARFR=true;
1009 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6 880 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6
1010// printk("UP: ARFR=0xF8F\n"); 881// printk("UP: ARFR=0xF8F\n");
1011 } 882 } else if(priv->bUpdateARFR) {
1012 else if(priv->bUpdateARFR)
1013 {
1014 priv->bUpdateARFR=false; 883 priv->bUpdateARFR=false;
1015 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps. 884 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps.
1016// printk("UP: ARFR=0xFFF\n"); 885// printk("UP: ARFR=0xFFF\n");
1017 } 886 }
1018 887
1019 // Update Fail Tx rate and count. 888 // Update Fail Tx rate and count.
1020 if(priv->LastFailTxRate != priv->CurrentOperaRate) 889 if(priv->LastFailTxRate != priv->CurrentOperaRate) {
1021 {
1022 priv->LastFailTxRate = priv->CurrentOperaRate; 890 priv->LastFailTxRate = priv->CurrentOperaRate;
1023 priv->FailTxRateCount = 0; 891 priv->FailTxRateCount = 0;
1024 priv->LastFailTxRateSS = -200; // Set lowest power. 892 priv->LastFailTxRateSS = -200; // Set lowest power.
1025 } 893 }
1026 } 894 }
1027 } 895 } else {
1028 else
1029 {
1030 if(priv->TryupingCount > 0) 896 if(priv->TryupingCount > 0)
1031 priv->TryupingCount --; 897 priv->TryupingCount --;
1032 } 898 }
1033 899
1034 if(bTryDown) 900 if(bTryDown) {
1035 {
1036 priv->TryDownCountLowData++; 901 priv->TryDownCountLowData++;
1037 priv->TryupingCount = 0; 902 priv->TryupingCount = 0;
1038 { 903
1039// printk("DN: pHalData->TryDownCountLowData = %d\n",priv->TryDownCountLowData); 904// printk("DN: pHalData->TryDownCountLowData = %d\n",priv->TryDownCountLowData);
1040// printk("DN: TryDownTh =%d\n", TryDownTh); 905// printk("DN: TryDownTh =%d\n", TryDownTh);
1041// printk("DN: pHalData->bTryuping=%d\n", priv->bTryuping); 906// printk("DN: pHalData->bTryuping=%d\n", priv->bTryuping);
1042 } 907
1043 908
1044 //Check if Tx rate can be degraded or Test trying upgrading should fallback. 909 //Check if Tx rate can be degraded or Test trying upgrading should fallback.
1045 if(priv->TryDownCountLowData > TryDownTh || priv->bTryuping) 910 if(priv->TryDownCountLowData > TryDownTh || priv->bTryuping) {
1046 {
1047 priv->TryDownCountLowData = 0; 911 priv->TryDownCountLowData = 0;
1048 priv->bTryuping = false; 912 priv->bTryuping = false;
1049 // Update fail information. 913 // Update fail information.
1050 if(priv->LastFailTxRate == priv->CurrentOperaRate) 914 if(priv->LastFailTxRate == priv->CurrentOperaRate) {
1051 {
1052 priv->FailTxRateCount ++; 915 priv->FailTxRateCount ++;
1053 // Record the Tx fail rate signal strength. 916 // Record the Tx fail rate signal strength.
1054 if(CurrSignalStrength > priv->LastFailTxRateSS) 917 if(CurrSignalStrength > priv->LastFailTxRateSS)
1055 {
1056 priv->LastFailTxRateSS = CurrSignalStrength; 918 priv->LastFailTxRateSS = CurrSignalStrength;
1057 } 919 } else {
1058 }
1059 else
1060 {
1061 priv->LastFailTxRate = priv->CurrentOperaRate; 920 priv->LastFailTxRate = priv->CurrentOperaRate;
1062 priv->FailTxRateCount = 1; 921 priv->FailTxRateCount = 1;
1063 priv->LastFailTxRateSS = CurrSignalStrength; 922 priv->LastFailTxRateSS = CurrSignalStrength;
@@ -1066,21 +925,17 @@ StaRateAdaptive87SE(
1066 925
1067 // Reduce chariot training time at weak signal strength situation. SD3 ED demand. 926 // Reduce chariot training time at weak signal strength situation. SD3 ED demand.
1068 //[TRC Dell Lab] Revise Signal Threshold from -75 to -80 , Isaiah 2008-02-18 20:00 927 //[TRC Dell Lab] Revise Signal Threshold from -75 to -80 , Isaiah 2008-02-18 20:00
1069 if( (CurrSignalStrength < -80) && (priv->CurrentOperaRate > 72 )) 928 if( (CurrSignalStrength < -80) && (priv->CurrentOperaRate > 72 )) {
1070 {
1071 priv->CurrentOperaRate = 72; 929 priv->CurrentOperaRate = 72;
1072// printk("DN: weak signal strength (%d), degrade to 36Mbps\n", CurrSignalStrength); 930// printk("DN: weak signal strength (%d), degrade to 36Mbps\n", CurrSignalStrength);
1073 } 931 }
1074 932
1075 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00 933 //[TRC Dell Lab] Bypass 12/9/6, Isaiah 2008-02-18 20:00
1076 if(priv->CurrentOperaRate ==36) 934 if(priv->CurrentOperaRate ==36) {
1077 {
1078 priv->bUpdateARFR=true; 935 priv->bUpdateARFR=true;
1079 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6 936 write_nic_word(dev, ARFR, 0x0F8F); //bypass 12/9/6
1080// printk("DN: ARFR=0xF8F\n"); 937// printk("DN: ARFR=0xF8F\n");
1081 } 938 } else if(priv->bUpdateARFR) {
1082 else if(priv->bUpdateARFR)
1083 {
1084 priv->bUpdateARFR=false; 939 priv->bUpdateARFR=false;
1085 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps. 940 write_nic_word(dev, ARFR, 0x0FFF); //set 1M ~ 54Mbps.
1086// printk("DN: ARFR=0xFFF\n"); 941// printk("DN: ARFR=0xFFF\n");
@@ -1089,15 +944,12 @@ StaRateAdaptive87SE(
1089 // 944 //
1090 // When it is CCK rate, it may need to update initial gain to receive lower power packets. 945 // When it is CCK rate, it may need to update initial gain to receive lower power packets.
1091 // 946 //
1092 if(MgntIsCckRate(priv->CurrentOperaRate)) 947 if(MgntIsCckRate(priv->CurrentOperaRate)) {
1093 {
1094 bUpdateInitialGain = true; 948 bUpdateInitialGain = true;
1095 } 949 }
1096// printk("StaRateAdaptive87SE(): Degrade Tx Rate to %d\n", priv->CurrentOperaRate); 950// printk("StaRateAdaptive87SE(): Degrade Tx Rate to %d\n", priv->CurrentOperaRate);
1097 } 951 }
1098 } 952 } else {
1099 else
1100 {
1101 if(priv->TryDownCountLowData > 0) 953 if(priv->TryDownCountLowData > 0)
1102 priv->TryDownCountLowData --; 954 priv->TryDownCountLowData --;
1103 } 955 }
@@ -1105,8 +957,7 @@ StaRateAdaptive87SE(
1105 // Keep the Tx fail rate count to equal to 0x15 at most. 957 // Keep the Tx fail rate count to equal to 0x15 at most.
1106 // Reduce the fail count at least to 10 sec if tx rate is tending stable. 958 // Reduce the fail count at least to 10 sec if tx rate is tending stable.
1107 if(priv->FailTxRateCount >= 0x15 || 959 if(priv->FailTxRateCount >= 0x15 ||
1108 (!bTryUp && !bTryDown && priv->TryDownCountLowData == 0 && priv->TryupingCount && priv->FailTxRateCount > 0x6)) 960 (!bTryUp && !bTryDown && priv->TryDownCountLowData == 0 && priv->TryupingCount && priv->FailTxRateCount > 0x6)) {
1109 {
1110 priv->FailTxRateCount --; 961 priv->FailTxRateCount --;
1111 } 962 }
1112 963
@@ -1115,49 +966,39 @@ StaRateAdaptive87SE(
1115 CckTxPwrIdx = priv->chtxpwr[priv->ieee80211->current_network.channel]; 966 CckTxPwrIdx = priv->chtxpwr[priv->ieee80211->current_network.channel];
1116 967
1117 //[TRC Dell Lab] Mac0x9e increase 2 level in 36M~18M situation, Isaiah 2008-02-18 24:00 968 //[TRC Dell Lab] Mac0x9e increase 2 level in 36M~18M situation, Isaiah 2008-02-18 24:00
1118 if((priv->CurrentOperaRate < 96) &&(priv->CurrentOperaRate > 22)) 969 if((priv->CurrentOperaRate < 96) &&(priv->CurrentOperaRate > 22)) {
1119 {
1120 u1bCck = read_nic_byte(dev, CCK_TXAGC); 970 u1bCck = read_nic_byte(dev, CCK_TXAGC);
1121 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC); 971 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC);
1122 972
1123 // case 1: Never enter High power 973 // case 1: Never enter High power
1124 if(u1bCck == CckTxPwrIdx ) 974 if(u1bCck == CckTxPwrIdx ) {
1125 { 975 if(u1bOfdm != (OfdmTxPwrIdx+2) ) {
1126 if(u1bOfdm != (OfdmTxPwrIdx+2) )
1127 {
1128 priv->bEnhanceTxPwr= true; 976 priv->bEnhanceTxPwr= true;
1129 u1bOfdm = ((u1bOfdm+2) > 35) ? 35: (u1bOfdm+2); 977 u1bOfdm = ((u1bOfdm+2) > 35) ? 35: (u1bOfdm+2);
1130 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm); 978 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm);
1131// printk("Enhance OFDM_TXAGC : +++++ u1bOfdm= 0x%x\n", u1bOfdm); 979// printk("Enhance OFDM_TXAGC : +++++ u1bOfdm= 0x%x\n", u1bOfdm);
1132 } 980 }
1133 } 981 } else if(u1bCck < CckTxPwrIdx) {
1134 // case 2: enter high power 982 // case 2: enter high power
1135 else if(u1bCck < CckTxPwrIdx) 983 if(!priv->bEnhanceTxPwr) {
1136 {
1137 if(!priv->bEnhanceTxPwr)
1138 {
1139 priv->bEnhanceTxPwr= true; 984 priv->bEnhanceTxPwr= true;
1140 u1bOfdm = ((u1bOfdm+2) > 35) ? 35: (u1bOfdm+2); 985 u1bOfdm = ((u1bOfdm+2) > 35) ? 35: (u1bOfdm+2);
1141 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm); 986 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm);
1142 //RT_TRACE(COMP_RATE, DBG_TRACE, ("Enhance OFDM_TXAGC(2) : +++++ u1bOfdm= 0x%x\n", u1bOfdm)); 987 //RT_TRACE(COMP_RATE, DBG_TRACE, ("Enhance OFDM_TXAGC(2) : +++++ u1bOfdm= 0x%x\n", u1bOfdm));
1143 } 988 }
1144 } 989 }
1145 } 990 } else if(priv->bEnhanceTxPwr) { //54/48/11/5.5/2/1
1146 else if(priv->bEnhanceTxPwr) //54/48/11/5.5/2/1
1147 {
1148 u1bCck = read_nic_byte(dev, CCK_TXAGC); 991 u1bCck = read_nic_byte(dev, CCK_TXAGC);
1149 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC); 992 u1bOfdm = read_nic_byte(dev, OFDM_TXAGC);
1150 993
1151 // case 1: Never enter High power 994 // case 1: Never enter High power
1152 if(u1bCck == CckTxPwrIdx ) 995 if(u1bCck == CckTxPwrIdx ) {
1153 {
1154 priv->bEnhanceTxPwr= false; 996 priv->bEnhanceTxPwr= false;
1155 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); 997 write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx);
1156 //printk("Recover OFDM_TXAGC : ===== u1bOfdm= 0x%x\n", OfdmTxPwrIdx); 998 //printk("Recover OFDM_TXAGC : ===== u1bOfdm= 0x%x\n", OfdmTxPwrIdx);
1157 } 999 }
1158 // case 2: enter high power 1000 // case 2: enter high power
1159 else if(u1bCck < CckTxPwrIdx) 1001 else if(u1bCck < CckTxPwrIdx) {
1160 {
1161 priv->bEnhanceTxPwr= false; 1002 priv->bEnhanceTxPwr= false;
1162 u1bOfdm = ((u1bOfdm-2) > 0) ? (u1bOfdm-2): 0; 1003 u1bOfdm = ((u1bOfdm-2) > 0) ? (u1bOfdm-2): 0;
1163 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm); 1004 write_nic_byte(dev, OFDM_TXAGC, u1bOfdm);
@@ -1171,35 +1012,26 @@ StaRateAdaptive87SE(
1171 // "from CCK to OFDM". 1012 // "from CCK to OFDM".
1172 // 1013 //
1173SetInitialGain: 1014SetInitialGain:
1174 if(bUpdateInitialGain) 1015 if(bUpdateInitialGain) {
1175 { 1016 if(MgntIsCckRate(priv->CurrentOperaRate)) { // CCK
1176 if(MgntIsCckRate(priv->CurrentOperaRate)) // CCK 1017 if(priv->InitialGain > priv->RegBModeGainStage) {
1177 {
1178 if(priv->InitialGain > priv->RegBModeGainStage)
1179 {
1180 priv->InitialGainBackUp= priv->InitialGain; 1018 priv->InitialGainBackUp= priv->InitialGain;
1181 1019
1182 if(CurrSignalStrength < -85) // Low power, OFDM [0x17] = 26. 1020 if(CurrSignalStrength < -85) // Low power, OFDM [0x17] = 26.
1183 {
1184 //SD3 SYs suggest that CurrSignalStrength < -65, ofdm 0x17=26. 1021 //SD3 SYs suggest that CurrSignalStrength < -65, ofdm 0x17=26.
1185 priv->InitialGain = priv->RegBModeGainStage; 1022 priv->InitialGain = priv->RegBModeGainStage;
1186 } 1023
1187 else if(priv->InitialGain > priv->RegBModeGainStage + 1) 1024 else if(priv->InitialGain > priv->RegBModeGainStage + 1)
1188 {
1189 priv->InitialGain -= 2; 1025 priv->InitialGain -= 2;
1190 } 1026
1191 else 1027 else
1192 {
1193 priv->InitialGain --; 1028 priv->InitialGain --;
1194 } 1029
1195 printk("StaRateAdaptive87SE(): update init_gain to index %d for date rate %d\n",priv->InitialGain, priv->CurrentOperaRate); 1030 printk("StaRateAdaptive87SE(): update init_gain to index %d for date rate %d\n",priv->InitialGain, priv->CurrentOperaRate);
1196 UpdateInitialGain(dev); 1031 UpdateInitialGain(dev);
1197 } 1032 }
1198 } 1033 } else { // OFDM
1199 else // OFDM 1034 if(priv->InitialGain < 4) {
1200 {
1201 if(priv->InitialGain < 4)
1202 {
1203 priv->InitialGainBackUp= priv->InitialGain; 1035 priv->InitialGainBackUp= priv->InitialGain;
1204 1036
1205 priv->InitialGain ++; 1037 priv->InitialGain ++;
@@ -1229,15 +1061,13 @@ void timer_rate_adaptive(unsigned long data)
1229{ 1061{
1230 struct r8180_priv* priv = ieee80211_priv((struct net_device *)data); 1062 struct r8180_priv* priv = ieee80211_priv((struct net_device *)data);
1231 //DMESG("---->timer_rate_adaptive()\n"); 1063 //DMESG("---->timer_rate_adaptive()\n");
1232 if(!priv->up) 1064 if(!priv->up) {
1233 {
1234// DMESG("<----timer_rate_adaptive():driver is not up!\n"); 1065// DMESG("<----timer_rate_adaptive():driver is not up!\n");
1235 return; 1066 return;
1236 } 1067 }
1237 if((priv->ieee80211->iw_mode != IW_MODE_MASTER) 1068 if((priv->ieee80211->iw_mode != IW_MODE_MASTER)
1238 && (priv->ieee80211->state == IEEE80211_LINKED) && 1069 && (priv->ieee80211->state == IEEE80211_LINKED) &&
1239 (priv->ForcedDataRate == 0) ) 1070 (priv->ForcedDataRate == 0) ) {
1240 {
1241// DMESG("timer_rate_adaptive():schedule rate_adapter_wq\n"); 1071// DMESG("timer_rate_adaptive():schedule rate_adapter_wq\n");
1242 queue_work(priv->ieee80211->wq, (void *)&priv->ieee80211->rate_adapter_wq); 1072 queue_work(priv->ieee80211->wq, (void *)&priv->ieee80211->rate_adapter_wq);
1243// StaRateAdaptive87SE((struct net_device *)data); 1073// StaRateAdaptive87SE((struct net_device *)data);
@@ -1259,12 +1089,9 @@ SwAntennaDiversityRxOk8185(
1259 1089
1260 priv->AdRxOkCnt++; 1090 priv->AdRxOkCnt++;
1261 1091
1262 if( priv->AdRxSignalStrength != -1) 1092 if( priv->AdRxSignalStrength != -1) {
1263 {
1264 priv->AdRxSignalStrength = ((priv->AdRxSignalStrength*7) + (SignalStrength*3)) / 10; 1093 priv->AdRxSignalStrength = ((priv->AdRxSignalStrength*7) + (SignalStrength*3)) / 10;
1265 } 1094 } else { // Initialization case.
1266 else
1267 { // Initialization case.
1268 priv->AdRxSignalStrength = SignalStrength; 1095 priv->AdRxSignalStrength = SignalStrength;
1269 } 1096 }
1270//{+by amy 080312 1097//{+by amy 080312
@@ -1290,8 +1117,7 @@ SetAntenna8185(
1290 1117
1291// printk("+SetAntenna8185(): Antenna is switching to: %d \n", u1bAntennaIndex); 1118// printk("+SetAntenna8185(): Antenna is switching to: %d \n", u1bAntennaIndex);
1292 1119
1293 switch(u1bAntennaIndex) 1120 switch(u1bAntennaIndex) {
1294 {
1295 case 0: 1121 case 0:
1296 /* Mac register, main antenna */ 1122 /* Mac register, main antenna */
1297 write_nic_byte(dev, ANTSEL, 0x03); 1123 write_nic_byte(dev, ANTSEL, 0x03);
@@ -1319,9 +1145,7 @@ SetAntenna8185(
1319 } 1145 }
1320 1146
1321 if(bAntennaSwitched) 1147 if(bAntennaSwitched)
1322 {
1323 priv->CurrAntennaIndex = u1bAntennaIndex; 1148 priv->CurrAntennaIndex = u1bAntennaIndex;
1324 }
1325 1149
1326// printk("-SetAntenna8185(): return (%#X)\n", bAntennaSwitched); 1150// printk("-SetAntenna8185(): return (%#X)\n", bAntennaSwitched);
1327 1151
@@ -1340,15 +1164,12 @@ SwitchAntenna(
1340 1164
1341 bool bResult; 1165 bool bResult;
1342 1166
1343 if(priv->CurrAntennaIndex == 0) 1167 if(priv->CurrAntennaIndex == 0) {
1344 {
1345 bResult = SetAntenna8185(dev, 1); 1168 bResult = SetAntenna8185(dev, 1);
1346//by amy 080312 1169//by amy 080312
1347// printk("SwitchAntenna(): switching to antenna 1 ......\n"); 1170// printk("SwitchAntenna(): switching to antenna 1 ......\n");
1348// bResult = SetAntenna8185(dev, 1);//-by amy 080312 1171// bResult = SetAntenna8185(dev, 1);//-by amy 080312
1349 } 1172 } else {
1350 else
1351 {
1352 bResult = SetAntenna8185(dev, 0); 1173 bResult = SetAntenna8185(dev, 0);
1353//by amy 080312 1174//by amy 080312
1354// printk("SwitchAntenna(): switching to antenna 0 ......\n"); 1175// printk("SwitchAntenna(): switching to antenna 0 ......\n");
@@ -1375,8 +1196,7 @@ SwAntennaDiversity(
1375// printk("+SwAntennaDiversity(): CurrAntennaIndex: %d\n", priv->CurrAntennaIndex); 1196// printk("+SwAntennaDiversity(): CurrAntennaIndex: %d\n", priv->CurrAntennaIndex);
1376// printk("AdTickCount is %d\n",priv->AdTickCount); 1197// printk("AdTickCount is %d\n",priv->AdTickCount);
1377//by amy 080312 1198//by amy 080312
1378 if(bSwCheckSS) 1199 if(bSwCheckSS) {
1379 {
1380 priv->AdTickCount++; 1200 priv->AdTickCount++;
1381 1201
1382 printk("(1) AdTickCount: %d, AdCheckPeriod: %d\n", 1202 printk("(1) AdTickCount: %d, AdCheckPeriod: %d\n",
@@ -1387,25 +1207,22 @@ SwAntennaDiversity(
1387// priv->AdTickCount++;//-by amy 080312 1207// priv->AdTickCount++;//-by amy 080312
1388 1208
1389 // Case 1. No Link. 1209 // Case 1. No Link.
1390 if(priv->ieee80211->state != IEEE80211_LINKED) 1210 if(priv->ieee80211->state != IEEE80211_LINKED) {
1391 {
1392 // printk("SwAntennaDiversity(): Case 1. No Link.\n"); 1211 // printk("SwAntennaDiversity(): Case 1. No Link.\n");
1393 1212
1394 priv->bAdSwitchedChecking = false; 1213 priv->bAdSwitchedChecking = false;
1395 // I switch antenna here to prevent any one of antenna is broken before link established, 2006.04.18, by rcnjko.. 1214 // I switch antenna here to prevent any one of antenna is broken before link established, 2006.04.18, by rcnjko..
1396 SwitchAntenna(dev); 1215 SwitchAntenna(dev);
1397 } 1216
1398 // Case 2. Linked but no packet received. 1217 // Case 2. Linked but no packet receive.d
1399 else if(priv->AdRxOkCnt == 0) 1218 } else if(priv->AdRxOkCnt == 0) {
1400 {
1401 // printk("SwAntennaDiversity(): Case 2. Linked but no packet received.\n"); 1219 // printk("SwAntennaDiversity(): Case 2. Linked but no packet received.\n");
1402 1220
1403 priv->bAdSwitchedChecking = false; 1221 priv->bAdSwitchedChecking = false;
1404 SwitchAntenna(dev); 1222 SwitchAntenna(dev);
1405 } 1223
1406 // Case 3. Evaluate last antenna switch action and undo it if necessary. 1224 // Case 3. Evaluate last antenna switch action and undo it if necessary.
1407 else if(priv->bAdSwitchedChecking == true) 1225 } else if(priv->bAdSwitchedChecking == true) {
1408 {
1409 // printk("SwAntennaDiversity(): Case 3. Evaluate last antenna switch action.\n"); 1226 // printk("SwAntennaDiversity(): Case 3. Evaluate last antenna switch action.\n");
1410 1227
1411 priv->bAdSwitchedChecking = false; 1228 priv->bAdSwitchedChecking = false;
@@ -1415,8 +1232,8 @@ SwAntennaDiversity(
1415 1232
1416 priv->AdRxSsThreshold = (priv->AdRxSsThreshold > priv->AdMaxRxSsThreshold) ? 1233 priv->AdRxSsThreshold = (priv->AdRxSsThreshold > priv->AdMaxRxSsThreshold) ?
1417 priv->AdMaxRxSsThreshold: priv->AdRxSsThreshold; 1234 priv->AdMaxRxSsThreshold: priv->AdRxSsThreshold;
1418 if(priv->AdRxSignalStrength < priv->AdRxSsBeforeSwitched) 1235 if(priv->AdRxSignalStrength < priv->AdRxSsBeforeSwitched) {
1419 { // Rx signal strength is not improved after we swtiched antenna. => Swich back. 1236 // Rx signal strength is not improved after we swtiched antenna. => Swich back.
1420// printk("SwAntennaDiversity(): Rx Signal Strength is not improved, CurrRxSs: %d, LastRxSs: %d\n", 1237// printk("SwAntennaDiversity(): Rx Signal Strength is not improved, CurrRxSs: %d, LastRxSs: %d\n",
1421// priv->AdRxSignalStrength, priv->AdRxSsBeforeSwitched); 1238// priv->AdRxSignalStrength, priv->AdRxSsBeforeSwitched);
1422//by amy 080312 1239//by amy 080312
@@ -1429,9 +1246,8 @@ SwAntennaDiversity(
1429 1246
1430 // Wrong deceision => switch back. 1247 // Wrong deceision => switch back.
1431 SwitchAntenna(dev); 1248 SwitchAntenna(dev);
1432 } 1249 } else {
1433 else 1250 // Rx Signal Strength is improved.
1434 { // Rx Signal Strength is improved.
1435// printk("SwAntennaDiversity(): Rx Signal Strength is improved, CurrRxSs: %d, LastRxSs: %d\n", 1251// printk("SwAntennaDiversity(): Rx Signal Strength is improved, CurrRxSs: %d, LastRxSs: %d\n",
1436// priv->AdRxSignalStrength, priv->AdRxSsBeforeSwitched); 1252// priv->AdRxSignalStrength, priv->AdRxSsBeforeSwitched);
1437 1253
@@ -1444,8 +1260,7 @@ SwAntennaDiversity(
1444 } 1260 }
1445 // Case 4. Evaluate if we shall switch antenna now. 1261 // Case 4. Evaluate if we shall switch antenna now.
1446 // Cause Table Speed is very fast in TRC Dell Lab, we check it every time. 1262 // Cause Table Speed is very fast in TRC Dell Lab, we check it every time.
1447 else// if(priv->AdTickCount >= priv->AdCheckPeriod)//-by amy 080312 1263 else { // if(priv->AdTickCount >= priv->AdCheckPeriod)//-by amy 080312
1448 {
1449// printk("SwAntennaDiversity(): Case 4. Evaluate if we shall switch antenna now.\n"); 1264// printk("SwAntennaDiversity(): Case 4. Evaluate if we shall switch antenna now.\n");
1450 1265
1451 priv->AdTickCount = 0; 1266 priv->AdTickCount = 0;
@@ -1463,8 +1278,8 @@ SwAntennaDiversity(
1463 // Added by Roger, 2008.02.21. 1278 // Added by Roger, 2008.02.21.
1464//{by amy 080312 1279//{by amy 080312
1465 if((priv->AdMainAntennaRxOkCnt < priv->AdAuxAntennaRxOkCnt) 1280 if((priv->AdMainAntennaRxOkCnt < priv->AdAuxAntennaRxOkCnt)
1466 && (priv->CurrAntennaIndex == 0)) 1281 && (priv->CurrAntennaIndex == 0)) {
1467 { // We set Main antenna as default but RxOk count was less than Aux ones. 1282 // We set Main antenna as default but RxOk count was less than Aux ones.
1468 1283
1469 // printk("SwAntennaDiversity(): Main antenna RxOK is poor, AdMainAntennaRxOkCnt: %d, AdAuxAntennaRxOkCnt: %d\n", 1284 // printk("SwAntennaDiversity(): Main antenna RxOK is poor, AdMainAntennaRxOkCnt: %d, AdAuxAntennaRxOkCnt: %d\n",
1470 // priv->AdMainAntennaRxOkCnt, priv->AdAuxAntennaRxOkCnt); 1285 // priv->AdMainAntennaRxOkCnt, priv->AdAuxAntennaRxOkCnt);
@@ -1472,10 +1287,9 @@ SwAntennaDiversity(
1472 // Switch to Aux antenna. 1287 // Switch to Aux antenna.
1473 SwitchAntenna(dev); 1288 SwitchAntenna(dev);
1474 priv->bHWAdSwitched = true; 1289 priv->bHWAdSwitched = true;
1475 } 1290 } else if((priv->AdAuxAntennaRxOkCnt < priv->AdMainAntennaRxOkCnt)
1476 else if((priv->AdAuxAntennaRxOkCnt < priv->AdMainAntennaRxOkCnt) 1291 && (priv->CurrAntennaIndex == 1)) {
1477 && (priv->CurrAntennaIndex == 1)) 1292 // We set Aux antenna as default but RxOk count was less than Main ones.
1478 { // We set Aux antenna as default but RxOk count was less than Main ones.
1479 1293
1480 // printk("SwAntennaDiversity(): Aux antenna RxOK is poor, AdMainAntennaRxOkCnt: %d, AdAuxAntennaRxOkCnt: %d\n", 1294 // printk("SwAntennaDiversity(): Aux antenna RxOK is poor, AdMainAntennaRxOkCnt: %d, AdAuxAntennaRxOkCnt: %d\n",
1481 // priv->AdMainAntennaRxOkCnt, priv->AdAuxAntennaRxOkCnt); 1295 // priv->AdMainAntennaRxOkCnt, priv->AdAuxAntennaRxOkCnt);
@@ -1483,9 +1297,8 @@ SwAntennaDiversity(
1483 // Switch to Main antenna. 1297 // Switch to Main antenna.
1484 SwitchAntenna(dev); 1298 SwitchAntenna(dev);
1485 priv->bHWAdSwitched = true; 1299 priv->bHWAdSwitched = true;
1486 } 1300 } else {
1487 else 1301 // Default antenna is better.
1488 {// Default antenna is better.
1489 1302
1490 // printk("SwAntennaDiversity(): Default antenna is better., AdMainAntennaRxOkCnt: %d, AdAuxAntennaRxOkCnt: %d\n", 1303 // printk("SwAntennaDiversity(): Default antenna is better., AdMainAntennaRxOkCnt: %d, AdAuxAntennaRxOkCnt: %d\n",
1491 // priv->AdMainAntennaRxOkCnt, priv->AdAuxAntennaRxOkCnt); 1304 // priv->AdMainAntennaRxOkCnt, priv->AdAuxAntennaRxOkCnt);
@@ -1504,12 +1317,11 @@ SwAntennaDiversity(
1504 // Our guess is that main antenna have lower throughput and get many change 1317 // Our guess is that main antenna have lower throughput and get many change
1505 // to receive more CCK packets(ex.Beacon) which have stronger SignalStrength. 1318 // to receive more CCK packets(ex.Beacon) which have stronger SignalStrength.
1506 // 1319 //
1507 if( (!priv->bHWAdSwitched) && (bSwCheckSS)) 1320 if( (!priv->bHWAdSwitched) && (bSwCheckSS)) {
1508 {
1509//by amy 080312} 1321//by amy 080312}
1510 // Evaluate Rx signal strength if we shall switch antenna now. 1322 // Evaluate Rx signal strength if we shall switch antenna now.
1511 if(priv->AdRxSignalStrength < priv->AdRxSsThreshold) 1323 if(priv->AdRxSignalStrength < priv->AdRxSsThreshold) {
1512 { // Rx signal strength is weak => Switch Antenna. 1324 // Rx signal strength is weak => Switch Antenna.
1513// printk("SwAntennaDiversity(): Rx Signal Strength is weak, CurrRxSs: %d, RxSsThreshold: %d\n", 1325// printk("SwAntennaDiversity(): Rx Signal Strength is weak, CurrRxSs: %d, RxSsThreshold: %d\n",
1514// priv->AdRxSignalStrength, priv->AdRxSsThreshold); 1326// priv->AdRxSignalStrength, priv->AdRxSsThreshold);
1515 1327
@@ -1517,17 +1329,16 @@ SwAntennaDiversity(
1517 priv->bAdSwitchedChecking = true; 1329 priv->bAdSwitchedChecking = true;
1518 1330
1519 SwitchAntenna(dev); 1331 SwitchAntenna(dev);
1520 } 1332 } else {
1521 else 1333 // Rx signal strength is OK.
1522 { // Rx signal strength is OK.
1523// printk("SwAntennaDiversity(): Rx Signal Strength is OK, CurrRxSs: %d, RxSsThreshold: %d\n", 1334// printk("SwAntennaDiversity(): Rx Signal Strength is OK, CurrRxSs: %d, RxSsThreshold: %d\n",
1524// priv->AdRxSignalStrength, priv->AdRxSsThreshold); 1335// priv->AdRxSignalStrength, priv->AdRxSsThreshold);
1525 1336
1526 priv->bAdSwitchedChecking = false; 1337 priv->bAdSwitchedChecking = false;
1527 // Increase Rx signal strength threshold if necessary. 1338 // Increase Rx signal strength threshold if necessary.
1528 if( (priv->AdRxSignalStrength > (priv->AdRxSsThreshold + 10)) && // Signal is much stronger than current threshold 1339 if( (priv->AdRxSignalStrength > (priv->AdRxSsThreshold + 10)) && // Signal is much stronger than current threshold
1529 priv->AdRxSsThreshold <= priv->AdMaxRxSsThreshold) // Current threhold is not yet reach upper limit. 1340 priv->AdRxSsThreshold <= priv->AdMaxRxSsThreshold) { // Current threhold is not yet reach upper limit.
1530 { 1341
1531 priv->AdRxSsThreshold = (priv->AdRxSsThreshold + priv->AdRxSignalStrength) / 2; 1342 priv->AdRxSsThreshold = (priv->AdRxSsThreshold + priv->AdRxSignalStrength) / 2;
1532 priv->AdRxSsThreshold = (priv->AdRxSsThreshold > priv->AdMaxRxSsThreshold) ? 1343 priv->AdRxSsThreshold = (priv->AdRxSsThreshold > priv->AdMaxRxSsThreshold) ?
1533 priv->AdMaxRxSsThreshold: priv->AdRxSsThreshold;//+by amy 080312 1344 priv->AdMaxRxSsThreshold: priv->AdRxSsThreshold;//+by amy 080312
@@ -1535,9 +1346,7 @@ SwAntennaDiversity(
1535 1346
1536 // Reduce Antenna Diversity checking period if possible. 1347 // Reduce Antenna Diversity checking period if possible.
1537 if( priv->AdCheckPeriod > priv->AdMinCheckPeriod ) 1348 if( priv->AdCheckPeriod > priv->AdMinCheckPeriod )
1538 {
1539 priv->AdCheckPeriod /= 2; 1349 priv->AdCheckPeriod /= 2;
1540 }
1541 } 1350 }
1542 } 1351 }
1543 } 1352 }
@@ -1563,9 +1372,7 @@ CheckTxPwrTracking( struct net_device *dev)
1563 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); 1372 struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev);
1564 1373
1565 if(!priv->bTxPowerTrack) 1374 if(!priv->bTxPowerTrack)
1566 {
1567 return false; 1375 return false;
1568 }
1569 1376
1570//lzm reserved 080826 1377//lzm reserved 080826
1571 //if(priv->bScanInProgress) 1378 //if(priv->bScanInProgress)
@@ -1575,9 +1382,7 @@ CheckTxPwrTracking( struct net_device *dev)
1575 1382
1576 //if 87SE is in High Power , don't do Tx Power Tracking. asked by SD3 ED. 2008-08-08 Isaiah 1383 //if 87SE is in High Power , don't do Tx Power Tracking. asked by SD3 ED. 2008-08-08 Isaiah
1577 if(priv->bToUpdateTxPwr) 1384 if(priv->bToUpdateTxPwr)
1578 {
1579 return false; 1385 return false;
1580 }
1581 1386
1582 return true; 1387 return true;
1583} 1388}
@@ -1602,24 +1407,20 @@ SwAntennaDiversityTimerCallback(
1602 // 2007.05.09, added by Roger. 1407 // 2007.05.09, added by Roger.
1603 // 1408 //
1604 rtState = priv->eRFPowerState; 1409 rtState = priv->eRFPowerState;
1605 do{ 1410 do {
1606 if (rtState == eRfOff) 1411 if (rtState == eRfOff) {
1607 {
1608// printk("SwAntennaDiversityTimer - RF is OFF.\n"); 1412// printk("SwAntennaDiversityTimer - RF is OFF.\n");
1609 break; 1413 break;
1610 } 1414 } else if (rtState == eRfSleep) {
1611 else if (rtState == eRfSleep)
1612 {
1613 // Don't access BB/RF under Disable PLL situation. 1415 // Don't access BB/RF under Disable PLL situation.
1614 //RT_TRACE((COMP_RF|COMP_ANTENNA), DBG_LOUD, ("SwAntennaDiversityTimerCallback(): RF is Sleep => skip it\n")); 1416 //RT_TRACE((COMP_RF|COMP_ANTENNA), DBG_LOUD, ("SwAntennaDiversityTimerCallback(): RF is Sleep => skip it\n"));
1615 break; 1417 break;
1616 } 1418 }
1617 SwAntennaDiversity(dev); 1419 SwAntennaDiversity(dev);
1618 1420
1619 }while(false); 1421 } while(false);
1620 1422
1621 if(priv->up) 1423 if(priv->up) {
1622 {
1623 priv->SwAntennaDiversityTimer.expires = jiffies + MSECS(ANTENNA_DIVERSITY_TIMER_PERIOD); 1424 priv->SwAntennaDiversityTimer.expires = jiffies + MSECS(ANTENNA_DIVERSITY_TIMER_PERIOD);
1624 add_timer(&priv->SwAntennaDiversityTimer); 1425 add_timer(&priv->SwAntennaDiversityTimer);
1625 } 1426 }