diff options
| -rw-r--r-- | drivers/staging/rtl8187se/r8180_dm.c | 418 |
1 files changed, 209 insertions, 209 deletions
diff --git a/drivers/staging/rtl8187se/r8180_dm.c b/drivers/staging/rtl8187se/r8180_dm.c index 97e4fefe8422..bd2cf4acb578 100644 --- a/drivers/staging/rtl8187se/r8180_dm.c +++ b/drivers/staging/rtl8187se/r8180_dm.c | |||
| @@ -75,12 +75,12 @@ DoTxHighPower( | |||
| 75 | 75 | ||
| 76 | // If it never enter High Power. | 76 | // If it never enter High Power. |
| 77 | if( CckTxPwrIdx == u1bTmp) { | 77 | if( CckTxPwrIdx == u1bTmp) { |
| 78 | u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm | 78 | u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm |
| 79 | write_nic_byte(dev, CCK_TXAGC, u1bTmp); | 79 | write_nic_byte(dev, CCK_TXAGC, u1bTmp); |
| 80 | 80 | ||
| 81 | u1bTmp= read_nic_byte(dev, OFDM_TXAGC); | 81 | u1bTmp= read_nic_byte(dev, OFDM_TXAGC); |
| 82 | u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm | 82 | u1bTmp = (u1bTmp > 16) ? (u1bTmp -16): 0; // 8dbm |
| 83 | write_nic_byte(dev, OFDM_TXAGC, u1bTmp); | 83 | write_nic_byte(dev, OFDM_TXAGC, u1bTmp); |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | } else if((priv->UndecoratedSmoothedSS < HiPwrLowerTh) && | 86 | } else if((priv->UndecoratedSmoothedSS < HiPwrLowerTh) && |
| @@ -91,16 +91,16 @@ DoTxHighPower( | |||
| 91 | //SD3 required. | 91 | //SD3 required. |
| 92 | u1bTmp= read_nic_byte(dev, CCK_TXAGC); | 92 | u1bTmp= read_nic_byte(dev, CCK_TXAGC); |
| 93 | if(u1bTmp < CckTxPwrIdx) { | 93 | if(u1bTmp < CckTxPwrIdx) { |
| 94 | //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm | 94 | //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm |
| 95 | //write_nic_byte(dev, CCK_TXAGC, u1bTmp); | 95 | //write_nic_byte(dev, CCK_TXAGC, u1bTmp); |
| 96 | write_nic_byte(dev, CCK_TXAGC, CckTxPwrIdx); | 96 | write_nic_byte(dev, CCK_TXAGC, CckTxPwrIdx); |
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | u1bTmp= read_nic_byte(dev, OFDM_TXAGC); | 99 | u1bTmp= read_nic_byte(dev, OFDM_TXAGC); |
| 100 | if(u1bTmp < OfdmTxPwrIdx) { | 100 | if(u1bTmp < OfdmTxPwrIdx) { |
| 101 | //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm | 101 | //u1bTmp = ((u1bTmp+16) > 35) ? 35: (u1bTmp+16); // 8dbm |
| 102 | //write_nic_byte(dev, OFDM_TXAGC, u1bTmp); | 102 | //write_nic_byte(dev, OFDM_TXAGC, u1bTmp); |
| 103 | write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); | 103 | write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); |
| 104 | } | 104 | } |
| 105 | } | 105 | } |
| 106 | } | 106 | } |
| @@ -121,8 +121,8 @@ void rtl8180_tx_pw_wq (struct work_struct *work) | |||
| 121 | // struct ieee80211_device * ieee = (struct ieee80211_device*) | 121 | // struct ieee80211_device * ieee = (struct ieee80211_device*) |
| 122 | // container_of(work, struct ieee80211_device, watch_dog_wq); | 122 | // container_of(work, struct ieee80211_device, watch_dog_wq); |
| 123 | struct delayed_work *dwork = to_delayed_work(work); | 123 | struct delayed_work *dwork = to_delayed_work(work); |
| 124 | struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,tx_pw_wq); | 124 | struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,tx_pw_wq); |
| 125 | struct net_device *dev = ieee->dev; | 125 | struct net_device *dev = ieee->dev; |
| 126 | 126 | ||
| 127 | // printk("----> UpdateTxPowerWorkItemCallback()\n"); | 127 | // printk("----> UpdateTxPowerWorkItemCallback()\n"); |
| 128 | 128 | ||
| @@ -181,7 +181,7 @@ DIG_Zebra( | |||
| 181 | // printk("DIG**********CCK False Alarm: %#X \n",CCKFalseAlarm); | 181 | // printk("DIG**********CCK False Alarm: %#X \n",CCKFalseAlarm); |
| 182 | // printk("DIG**********OFDM False Alarm: %#X \n",OFDMFalseAlarm); | 182 | // printk("DIG**********OFDM False Alarm: %#X \n",OFDMFalseAlarm); |
| 183 | 183 | ||
| 184 | // 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. |
| 185 | if (priv->InitialGain == 0 ) { //autoDIG | 185 | if (priv->InitialGain == 0 ) { //autoDIG |
| 186 | // Advised from SD3 DZ | 186 | // Advised from SD3 DZ |
| 187 | priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm) | 187 | priv->InitialGain = 4; // In 87B, m74dBm means State 4 (m82dBm) |
| @@ -265,8 +265,8 @@ DynamicInitGain(struct net_device *dev) | |||
| 265 | void rtl8180_hw_dig_wq (struct work_struct *work) | 265 | void rtl8180_hw_dig_wq (struct work_struct *work) |
| 266 | { | 266 | { |
| 267 | struct delayed_work *dwork = to_delayed_work(work); | 267 | struct delayed_work *dwork = to_delayed_work(work); |
| 268 | struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,hw_dig_wq); | 268 | struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,hw_dig_wq); |
| 269 | struct net_device *dev = ieee->dev; | 269 | struct net_device *dev = ieee->dev; |
| 270 | struct r8180_priv *priv = ieee80211_priv(dev); | 270 | struct r8180_priv *priv = ieee80211_priv(dev); |
| 271 | 271 | ||
| 272 | // Read CCK and OFDM False Alarm. | 272 | // Read CCK and OFDM False Alarm. |
| @@ -280,33 +280,33 @@ void rtl8180_hw_dig_wq (struct work_struct *work) | |||
| 280 | 280 | ||
| 281 | int | 281 | int |
| 282 | IncludedInSupportedRates( | 282 | IncludedInSupportedRates( |
| 283 | struct r8180_priv *priv, | 283 | struct r8180_priv *priv, |
| 284 | u8 TxRate ) | 284 | u8 TxRate ) |
| 285 | { | 285 | { |
| 286 | u8 rate_len; | 286 | u8 rate_len; |
| 287 | u8 rate_ex_len; | 287 | u8 rate_ex_len; |
| 288 | u8 RateMask = 0x7F; | 288 | u8 RateMask = 0x7F; |
| 289 | u8 idx; | 289 | u8 idx; |
| 290 | unsigned short Found = 0; | 290 | unsigned short Found = 0; |
| 291 | u8 NaiveTxRate = TxRate&RateMask; | 291 | u8 NaiveTxRate = TxRate&RateMask; |
| 292 | 292 | ||
| 293 | rate_len = priv->ieee80211->current_network.rates_len; | 293 | rate_len = priv->ieee80211->current_network.rates_len; |
| 294 | rate_ex_len = priv->ieee80211->current_network.rates_ex_len; | 294 | rate_ex_len = priv->ieee80211->current_network.rates_ex_len; |
| 295 | for( idx=0; idx< rate_len; idx++ ) { | 295 | for( idx=0; idx< rate_len; idx++ ) { |
| 296 | if( (priv->ieee80211->current_network.rates[idx] & RateMask) == NaiveTxRate ) { | 296 | if( (priv->ieee80211->current_network.rates[idx] & RateMask) == NaiveTxRate ) { |
| 297 | Found = 1; | 297 | Found = 1; |
| 298 | goto found_rate; | 298 | goto found_rate; |
| 299 | } | 299 | } |
| 300 | } | 300 | } |
| 301 | for( idx=0; idx< rate_ex_len; idx++ ) { | 301 | for( idx=0; idx< rate_ex_len; idx++ ) { |
| 302 | if( (priv->ieee80211->current_network.rates_ex[idx] & RateMask) == NaiveTxRate ) { | 302 | if( (priv->ieee80211->current_network.rates_ex[idx] & RateMask) == NaiveTxRate ) { |
| 303 | Found = 1; | 303 | Found = 1; |
| 304 | goto found_rate; | 304 | goto found_rate; |
| 305 | } | 305 | } |
| 306 | } | 306 | } |
| 307 | return Found; | 307 | return Found; |
| 308 | found_rate: | 308 | found_rate: |
| 309 | return Found; | 309 | return Found; |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | // | 312 | // |
| @@ -317,64 +317,64 @@ IncludedInSupportedRates( | |||
| 317 | // | 317 | // |
| 318 | u8 | 318 | u8 |
| 319 | GetUpgradeTxRate( | 319 | GetUpgradeTxRate( |
| 320 | struct net_device *dev, | 320 | struct net_device *dev, |
| 321 | u8 rate | 321 | u8 rate |
| 322 | ) | 322 | ) |
| 323 | { | 323 | { |
| 324 | struct r8180_priv *priv = ieee80211_priv(dev); | 324 | struct r8180_priv *priv = ieee80211_priv(dev); |
| 325 | u8 UpRate; | 325 | u8 UpRate; |
| 326 | 326 | ||
| 327 | // Upgrade 1 degree. | 327 | // Upgrade 1 degree. |
| 328 | switch(rate) { | 328 | switch(rate) { |
| 329 | case 108: // Up to 54Mbps. | 329 | case 108: // Up to 54Mbps. |
| 330 | UpRate = 108; | 330 | UpRate = 108; |
| 331 | break; | 331 | break; |
| 332 | 332 | ||
| 333 | case 96: // Up to 54Mbps. | 333 | case 96: // Up to 54Mbps. |
| 334 | UpRate = 108; | 334 | UpRate = 108; |
| 335 | break; | 335 | break; |
| 336 | 336 | ||
| 337 | case 72: // Up to 48Mbps. | 337 | case 72: // Up to 48Mbps. |
| 338 | UpRate = 96; | 338 | UpRate = 96; |
| 339 | break; | 339 | break; |
| 340 | 340 | ||
| 341 | case 48: // Up to 36Mbps. | 341 | case 48: // Up to 36Mbps. |
| 342 | UpRate = 72; | 342 | UpRate = 72; |
| 343 | break; | 343 | break; |
| 344 | 344 | ||
| 345 | case 36: // Up to 24Mbps. | 345 | case 36: // Up to 24Mbps. |
| 346 | UpRate = 48; | 346 | UpRate = 48; |
| 347 | break; | 347 | break; |
| 348 | 348 | ||
| 349 | case 22: // Up to 18Mbps. | 349 | case 22: // Up to 18Mbps. |
| 350 | UpRate = 36; | 350 | UpRate = 36; |
| 351 | break; | 351 | break; |
| 352 | 352 | ||
| 353 | case 11: // Up to 11Mbps. | 353 | case 11: // Up to 11Mbps. |
| 354 | UpRate = 22; | 354 | UpRate = 22; |
| 355 | break; | 355 | break; |
| 356 | 356 | ||
| 357 | case 4: // Up to 5.5Mbps. | 357 | case 4: // Up to 5.5Mbps. |
| 358 | UpRate = 11; | 358 | UpRate = 11; |
| 359 | break; | 359 | break; |
| 360 | 360 | ||
| 361 | case 2: // Up to 2Mbps. | 361 | case 2: // Up to 2Mbps. |
| 362 | UpRate = 4; | 362 | UpRate = 4; |
| 363 | break; | 363 | break; |
| 364 | 364 | ||
| 365 | default: | 365 | default: |
| 366 | printk("GetUpgradeTxRate(): Input Tx Rate(%d) is undefined!\n", rate); | 366 | printk("GetUpgradeTxRate(): Input Tx Rate(%d) is undefined!\n", rate); |
| 367 | return rate; | 367 | return rate; |
| 368 | } | 368 | } |
| 369 | // Check if the rate is valid. | 369 | // Check if the rate is valid. |
| 370 | if(IncludedInSupportedRates(priv, UpRate)) { | 370 | if(IncludedInSupportedRates(priv, UpRate)) { |
| 371 | // 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); |
| 372 | return UpRate; | 372 | return UpRate; |
| 373 | } else { | 373 | } else { |
| 374 | //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); |
| 375 | return rate; | 375 | return rate; |
| 376 | } | 376 | } |
| 377 | return rate; | 377 | return rate; |
| 378 | } | 378 | } |
| 379 | // | 379 | // |
| 380 | // Description: | 380 | // Description: |
| @@ -384,64 +384,64 @@ GetUpgradeTxRate( | |||
| 384 | // | 384 | // |
| 385 | u8 | 385 | u8 |
| 386 | GetDegradeTxRate( | 386 | GetDegradeTxRate( |
| 387 | struct net_device *dev, | 387 | struct net_device *dev, |
| 388 | u8 rate | 388 | u8 rate |
| 389 | ) | 389 | ) |
| 390 | { | 390 | { |
| 391 | struct r8180_priv *priv = ieee80211_priv(dev); | 391 | struct r8180_priv *priv = ieee80211_priv(dev); |
| 392 | u8 DownRate; | 392 | u8 DownRate; |
| 393 | 393 | ||
| 394 | // Upgrade 1 degree. | 394 | // Upgrade 1 degree. |
| 395 | switch(rate) { | 395 | switch(rate) { |
| 396 | case 108: // Down to 48Mbps. | 396 | case 108: // Down to 48Mbps. |
| 397 | DownRate = 96; | 397 | DownRate = 96; |
| 398 | break; | 398 | break; |
| 399 | 399 | ||
| 400 | case 96: // Down to 36Mbps. | 400 | case 96: // Down to 36Mbps. |
| 401 | DownRate = 72; | 401 | DownRate = 72; |
| 402 | break; | 402 | break; |
| 403 | 403 | ||
| 404 | case 72: // Down to 24Mbps. | 404 | case 72: // Down to 24Mbps. |
| 405 | DownRate = 48; | 405 | DownRate = 48; |
| 406 | break; | 406 | break; |
| 407 | 407 | ||
| 408 | case 48: // Down to 18Mbps. | 408 | case 48: // Down to 18Mbps. |
| 409 | DownRate = 36; | 409 | DownRate = 36; |
| 410 | break; | 410 | break; |
| 411 | 411 | ||
| 412 | case 36: // Down to 11Mbps. | 412 | case 36: // Down to 11Mbps. |
| 413 | DownRate = 22; | 413 | DownRate = 22; |
| 414 | break; | 414 | break; |
| 415 | 415 | ||
| 416 | case 22: // Down to 5.5Mbps. | 416 | case 22: // Down to 5.5Mbps. |
| 417 | DownRate = 11; | 417 | DownRate = 11; |
| 418 | break; | 418 | break; |
| 419 | 419 | ||
| 420 | case 11: // Down to 2Mbps. | 420 | case 11: // Down to 2Mbps. |
| 421 | DownRate = 4; | 421 | DownRate = 4; |
| 422 | break; | 422 | break; |
| 423 | 423 | ||
| 424 | case 4: // Down to 1Mbps. | 424 | case 4: // Down to 1Mbps. |
| 425 | DownRate = 2; | 425 | DownRate = 2; |
| 426 | break; | 426 | break; |
| 427 | 427 | ||
| 428 | case 2: // Down to 1Mbps. | 428 | case 2: // Down to 1Mbps. |
| 429 | DownRate = 2; | 429 | DownRate = 2; |
| 430 | break; | 430 | break; |
| 431 | 431 | ||
| 432 | default: | 432 | default: |
| 433 | printk("GetDegradeTxRate(): Input Tx Rate(%d) is undefined!\n", rate); | 433 | printk("GetDegradeTxRate(): Input Tx Rate(%d) is undefined!\n", rate); |
| 434 | return rate; | 434 | return rate; |
| 435 | } | 435 | } |
| 436 | // Check if the rate is valid. | 436 | // Check if the rate is valid. |
| 437 | if(IncludedInSupportedRates(priv, DownRate)) { | 437 | if(IncludedInSupportedRates(priv, DownRate)) { |
| 438 | // 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); |
| 439 | return DownRate; | 439 | return DownRate; |
| 440 | } else { | 440 | } else { |
| 441 | //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); |
| 442 | return rate; | 442 | return rate; |
| 443 | } | 443 | } |
| 444 | return rate; | 444 | return rate; |
| 445 | } | 445 | } |
| 446 | // | 446 | // |
| 447 | // Helper function to determine if specified data rate is | 447 | // Helper function to determine if specified data rate is |
| @@ -450,16 +450,16 @@ GetDegradeTxRate( | |||
| 450 | // | 450 | // |
| 451 | bool | 451 | bool |
| 452 | MgntIsCckRate( | 452 | MgntIsCckRate( |
| 453 | u16 rate | 453 | u16 rate |
| 454 | ) | 454 | ) |
| 455 | { | 455 | { |
| 456 | bool bReturn = false; | 456 | bool bReturn = false; |
| 457 | 457 | ||
| 458 | if((rate <= 22) && (rate != 12) && (rate != 18)) { | 458 | if((rate <= 22) && (rate != 12) && (rate != 18)) { |
| 459 | bReturn = true; | 459 | bReturn = true; |
| 460 | } | 460 | } |
| 461 | 461 | ||
| 462 | return bReturn; | 462 | return bReturn; |
| 463 | } | 463 | } |
| 464 | // | 464 | // |
| 465 | // Description: | 465 | // Description: |
| @@ -490,7 +490,7 @@ TxPwrTracking87SE( | |||
| 490 | CckTxPwrIdx = priv->chtxpwr[Idx]; | 490 | CckTxPwrIdx = priv->chtxpwr[Idx]; |
| 491 | OfdmTxPwrIdx = priv->chtxpwr_ofdm[Idx]; | 491 | OfdmTxPwrIdx = priv->chtxpwr_ofdm[Idx]; |
| 492 | 492 | ||
| 493 | if( CurrentThermal > priv->ThermalMeter ) { | 493 | if( CurrentThermal > priv->ThermalMeter ) { |
| 494 | // higher thermal meter. | 494 | // higher thermal meter. |
| 495 | CckTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; | 495 | CckTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; |
| 496 | OfdmTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; | 496 | OfdmTxPwrIdx += (CurrentThermal - priv->ThermalMeter)*2; |
| @@ -526,19 +526,19 @@ StaRateAdaptive87SE( | |||
| 526 | ) | 526 | ) |
| 527 | { | 527 | { |
| 528 | struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); | 528 | struct r8180_priv *priv = (struct r8180_priv *)ieee80211_priv(dev); |
| 529 | unsigned long CurrTxokCnt; | 529 | unsigned long CurrTxokCnt; |
| 530 | u16 CurrRetryCnt; | 530 | u16 CurrRetryCnt; |
| 531 | u16 CurrRetryRate; | 531 | u16 CurrRetryRate; |
| 532 | //u16 i,idx; | 532 | //u16 i,idx; |
| 533 | unsigned long CurrRxokCnt; | 533 | unsigned long CurrRxokCnt; |
| 534 | bool bTryUp = false; | 534 | bool bTryUp = false; |
| 535 | bool bTryDown = false; | 535 | bool bTryDown = false; |
| 536 | u8 TryUpTh = 1; | 536 | u8 TryUpTh = 1; |
| 537 | u8 TryDownTh = 2; | 537 | u8 TryDownTh = 2; |
| 538 | u32 TxThroughput; | 538 | u32 TxThroughput; |
| 539 | long CurrSignalStrength; | 539 | long CurrSignalStrength; |
| 540 | bool bUpdateInitialGain = false; | 540 | bool bUpdateInitialGain = false; |
| 541 | u8 u1bOfdm=0, u1bCck = 0; | 541 | u8 u1bOfdm=0, u1bCck = 0; |
| 542 | char OfdmTxPwrIdx, CckTxPwrIdx; | 542 | char OfdmTxPwrIdx, CckTxPwrIdx; |
| 543 | 543 | ||
| 544 | priv->RateAdaptivePeriod= RATE_ADAPTIVE_TIMER_PERIOD; | 544 | priv->RateAdaptivePeriod= RATE_ADAPTIVE_TIMER_PERIOD; |
| @@ -629,7 +629,7 @@ StaRateAdaptive87SE( | |||
| 629 | // Let these rates down more difficult. | 629 | // Let these rates down more difficult. |
| 630 | // | 630 | // |
| 631 | if(MgntIsCckRate(priv->CurrentOperaRate) || priv->CurrentOperaRate == 36) | 631 | if(MgntIsCckRate(priv->CurrentOperaRate) || priv->CurrentOperaRate == 36) |
| 632 | TryDownTh += 1; | 632 | TryDownTh += 1; |
| 633 | 633 | ||
| 634 | //1 Adjust Rate. | 634 | //1 Adjust Rate. |
| 635 | if (priv->bTryuping == true) { | 635 | if (priv->bTryuping == true) { |
| @@ -701,7 +701,7 @@ StaRateAdaptive87SE( | |||
| 701 | // if ( ((CurrRetryRate>65) && (priv->LastRetryRate>64))) | 701 | // if ( ((CurrRetryRate>65) && (priv->LastRetryRate>64))) |
| 702 | //Down to rate 36Mbps. | 702 | //Down to rate 36Mbps. |
| 703 | bTryDown = true; | 703 | bTryDown = true; |
| 704 | } else if ( ((CurrRetryRate>21) && (priv->LastRetryRate>20)) && (CurrSignalStrength > -74)) { //Cable Link | 704 | } else if ( ((CurrRetryRate>21) && (priv->LastRetryRate>20)) && (CurrSignalStrength > -74)) { //Cable Link |
| 705 | //Down to rate 36Mbps. | 705 | //Down to rate 36Mbps. |
| 706 | bTryDown = true; | 706 | bTryDown = true; |
| 707 | } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { | 707 | } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { |
| @@ -771,7 +771,7 @@ StaRateAdaptive87SE( | |||
| 771 | bTryDown = true; | 771 | bTryDown = true; |
| 772 | 772 | ||
| 773 | //[TRC Dell Lab] Isaiah 2008-02-18 23:24 | 773 | //[TRC Dell Lab] Isaiah 2008-02-18 23:24 |
| 774 | } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { | 774 | } else if((CurrRetryRate> (priv->LastRetryRate + 50 )) && (priv->FailTxRateCount >2 )) { |
| 775 | // else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) | 775 | // else if((CurrRetryRate> (priv->LastRetryRate + 70 )) && (priv->FailTxRateCount >2 )) |
| 776 | bTryDown = true; | 776 | bTryDown = true; |
| 777 | priv->TryDownCountLowData += TryDownTh; | 777 | priv->TryDownCountLowData += TryDownTh; |
| @@ -993,9 +993,9 @@ StaRateAdaptive87SE( | |||
| 993 | 993 | ||
| 994 | // case 1: Never enter High power | 994 | // case 1: Never enter High power |
| 995 | if(u1bCck == CckTxPwrIdx ) { | 995 | if(u1bCck == CckTxPwrIdx ) { |
| 996 | priv->bEnhanceTxPwr= false; | 996 | priv->bEnhanceTxPwr= false; |
| 997 | write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); | 997 | write_nic_byte(dev, OFDM_TXAGC, OfdmTxPwrIdx); |
| 998 | //printk("Recover OFDM_TXAGC : ===== u1bOfdm= 0x%x\n", OfdmTxPwrIdx); | 998 | //printk("Recover OFDM_TXAGC : ===== u1bOfdm= 0x%x\n", OfdmTxPwrIdx); |
| 999 | } | 999 | } |
| 1000 | // case 2: enter high power | 1000 | // case 2: enter high power |
| 1001 | else if(u1bCck < CckTxPwrIdx) { | 1001 | else if(u1bCck < CckTxPwrIdx) { |
| @@ -1024,7 +1024,7 @@ SetInitialGain: | |||
| 1024 | else if(priv->InitialGain > priv->RegBModeGainStage + 1) | 1024 | else if(priv->InitialGain > priv->RegBModeGainStage + 1) |
| 1025 | priv->InitialGain -= 2; | 1025 | priv->InitialGain -= 2; |
| 1026 | 1026 | ||
| 1027 | else | 1027 | else |
| 1028 | priv->InitialGain --; | 1028 | priv->InitialGain --; |
| 1029 | 1029 | ||
| 1030 | 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); |
| @@ -1050,11 +1050,11 @@ SetInitialGain: | |||
| 1050 | void rtl8180_rate_adapter(struct work_struct * work) | 1050 | void rtl8180_rate_adapter(struct work_struct * work) |
| 1051 | { | 1051 | { |
| 1052 | struct delayed_work *dwork = to_delayed_work(work); | 1052 | struct delayed_work *dwork = to_delayed_work(work); |
| 1053 | struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,rate_adapter_wq); | 1053 | struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,rate_adapter_wq); |
| 1054 | struct net_device *dev = ieee->dev; | 1054 | struct net_device *dev = ieee->dev; |
| 1055 | //struct r8180_priv *priv = ieee80211_priv(dev); | 1055 | //struct r8180_priv *priv = ieee80211_priv(dev); |
| 1056 | // DMESG("---->rtl8180_rate_adapter"); | 1056 | // DMESG("---->rtl8180_rate_adapter"); |
| 1057 | StaRateAdaptive87SE(dev); | 1057 | StaRateAdaptive87SE(dev); |
| 1058 | // DMESG("<----rtl8180_rate_adapter"); | 1058 | // DMESG("<----rtl8180_rate_adapter"); |
| 1059 | } | 1059 | } |
| 1060 | void timer_rate_adaptive(unsigned long data) | 1060 | void timer_rate_adaptive(unsigned long data) |
| @@ -1165,12 +1165,12 @@ SwitchAntenna( | |||
| 1165 | bool bResult; | 1165 | bool bResult; |
| 1166 | 1166 | ||
| 1167 | if(priv->CurrAntennaIndex == 0) { | 1167 | if(priv->CurrAntennaIndex == 0) { |
| 1168 | bResult = SetAntenna8185(dev, 1); | 1168 | bResult = SetAntenna8185(dev, 1); |
| 1169 | //by amy 080312 | 1169 | //by amy 080312 |
| 1170 | // printk("SwitchAntenna(): switching to antenna 1 ......\n"); | 1170 | // printk("SwitchAntenna(): switching to antenna 1 ......\n"); |
| 1171 | // bResult = SetAntenna8185(dev, 1);//-by amy 080312 | 1171 | // bResult = SetAntenna8185(dev, 1);//-by amy 080312 |
| 1172 | } else { | 1172 | } else { |
| 1173 | bResult = SetAntenna8185(dev, 0); | 1173 | bResult = SetAntenna8185(dev, 0); |
| 1174 | //by amy 080312 | 1174 | //by amy 080312 |
| 1175 | // printk("SwitchAntenna(): switching to antenna 0 ......\n"); | 1175 | // printk("SwitchAntenna(): switching to antenna 0 ......\n"); |
| 1176 | // bResult = SetAntenna8185(dev, 0);//-by amy 080312 | 1176 | // bResult = SetAntenna8185(dev, 0);//-by amy 080312 |
| @@ -1246,7 +1246,7 @@ SwAntennaDiversity( | |||
| 1246 | 1246 | ||
| 1247 | // Wrong deceision => switch back. | 1247 | // Wrong deceision => switch back. |
| 1248 | SwitchAntenna(dev); | 1248 | SwitchAntenna(dev); |
| 1249 | } else { | 1249 | } else { |
| 1250 | // Rx Signal Strength is improved. | 1250 | // Rx Signal Strength is improved. |
| 1251 | // 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", |
| 1252 | // priv->AdRxSignalStrength, priv->AdRxSsBeforeSwitched); | 1252 | // priv->AdRxSignalStrength, priv->AdRxSsBeforeSwitched); |
| @@ -1319,35 +1319,35 @@ SwAntennaDiversity( | |||
| 1319 | // | 1319 | // |
| 1320 | if( (!priv->bHWAdSwitched) && (bSwCheckSS)) { | 1320 | if( (!priv->bHWAdSwitched) && (bSwCheckSS)) { |
| 1321 | //by amy 080312} | 1321 | //by amy 080312} |
| 1322 | // Evaluate Rx signal strength if we shall switch antenna now. | 1322 | // Evaluate Rx signal strength if we shall switch antenna now. |
| 1323 | if(priv->AdRxSignalStrength < priv->AdRxSsThreshold) { | 1323 | if(priv->AdRxSignalStrength < priv->AdRxSsThreshold) { |
| 1324 | // Rx signal strength is weak => Switch Antenna. | 1324 | // Rx signal strength is weak => Switch Antenna. |
| 1325 | // 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", |
| 1326 | // priv->AdRxSignalStrength, priv->AdRxSsThreshold); | 1326 | // priv->AdRxSignalStrength, priv->AdRxSsThreshold); |
| 1327 | 1327 | ||
| 1328 | priv->AdRxSsBeforeSwitched = priv->AdRxSignalStrength; | 1328 | priv->AdRxSsBeforeSwitched = priv->AdRxSignalStrength; |
| 1329 | priv->bAdSwitchedChecking = true; | 1329 | priv->bAdSwitchedChecking = true; |
| 1330 | 1330 | ||
| 1331 | SwitchAntenna(dev); | 1331 | SwitchAntenna(dev); |
| 1332 | } else { | 1332 | } else { |
| 1333 | // Rx signal strength is OK. | 1333 | // Rx signal strength is OK. |
| 1334 | // 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", |
| 1335 | // priv->AdRxSignalStrength, priv->AdRxSsThreshold); | 1335 | // priv->AdRxSignalStrength, priv->AdRxSsThreshold); |
| 1336 | 1336 | ||
| 1337 | priv->bAdSwitchedChecking = false; | 1337 | priv->bAdSwitchedChecking = false; |
| 1338 | // Increase Rx signal strength threshold if necessary. | 1338 | // Increase Rx signal strength threshold if necessary. |
| 1339 | 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 |
| 1340 | 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. |
| 1341 | 1341 | ||
| 1342 | priv->AdRxSsThreshold = (priv->AdRxSsThreshold + priv->AdRxSignalStrength) / 2; | 1342 | priv->AdRxSsThreshold = (priv->AdRxSsThreshold + priv->AdRxSignalStrength) / 2; |
| 1343 | priv->AdRxSsThreshold = (priv->AdRxSsThreshold > priv->AdMaxRxSsThreshold) ? | 1343 | priv->AdRxSsThreshold = (priv->AdRxSsThreshold > priv->AdMaxRxSsThreshold) ? |
| 1344 | priv->AdMaxRxSsThreshold: priv->AdRxSsThreshold;//+by amy 080312 | 1344 | priv->AdMaxRxSsThreshold: priv->AdRxSsThreshold;//+by amy 080312 |
| 1345 | } | 1345 | } |
| 1346 | 1346 | ||
| 1347 | // Reduce Antenna Diversity checking period if possible. | 1347 | // Reduce Antenna Diversity checking period if possible. |
| 1348 | if( priv->AdCheckPeriod > priv->AdMinCheckPeriod ) | 1348 | if( priv->AdCheckPeriod > priv->AdMinCheckPeriod ) |
| 1349 | priv->AdCheckPeriod /= 2; | 1349 | priv->AdCheckPeriod /= 2; |
| 1350 | } | 1350 | } |
| 1351 | } | 1351 | } |
| 1352 | } | 1352 | } |
| 1353 | //by amy 080312 | 1353 | //by amy 080312 |
