diff options
author | Andrew Miller <amiller@amilx.com> | 2012-03-15 15:05:18 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-03-15 17:04:35 -0400 |
commit | aada7fdd8dff89a2f51ccc0d20efa69f0756d90b (patch) | |
tree | 42dd2f432f0fb8404d28d75cf73c1632b4c38ce7 | |
parent | 004c7acb12fd46be084bbdf7866476e5e1116ff3 (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.c | 531 |
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 | // |
1173 | SetInitialGain: | 1014 | SetInitialGain: |
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 | } |