aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi/rtl8723be/dm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8723be/dm.c')
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8723be/dm.c243
1 files changed, 122 insertions, 121 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c
index 13d53a1df789..dd7eb4371f49 100644
--- a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c
+++ b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c
@@ -32,7 +32,6 @@
32#include "dm.h" 32#include "dm.h"
33#include "../rtl8723com/dm_common.h" 33#include "../rtl8723com/dm_common.h"
34#include "fw.h" 34#include "fw.h"
35#include "../rtl8723com/fw_common.h"
36#include "trx.h" 35#include "trx.h"
37#include "../btcoexist/rtl_btc.h" 36#include "../btcoexist/rtl_btc.h"
38 37
@@ -209,7 +208,7 @@ void rtl8723be_dm_txpower_track_adjust(struct ieee80211_hw *hw, u8 type,
209 pwr_val = TXPWRTRACK_MAX_IDX; 208 pwr_val = TXPWRTRACK_MAX_IDX;
210 209
211 *poutwrite_val = pwr_val | (pwr_val << 8) | 210 *poutwrite_val = pwr_val | (pwr_val << 8) |
212 (pwr_val << 16) | (pwr_val << 24); 211 (pwr_val << 16) | (pwr_val << 24);
213} 212}
214 213
215static void rtl8723be_dm_diginit(struct ieee80211_hw *hw) 214static void rtl8723be_dm_diginit(struct ieee80211_hw *hw)
@@ -218,8 +217,7 @@ static void rtl8723be_dm_diginit(struct ieee80211_hw *hw)
218 struct dig_t *dm_digtable = &rtlpriv->dm_digtable; 217 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
219 218
220 dm_digtable->dig_enable_flag = true; 219 dm_digtable->dig_enable_flag = true;
221 dm_digtable->cur_igvalue = rtl_get_bbreg(hw, 220 dm_digtable->cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f);
222 ROFDM0_XAAGCCORE1, 0x7f);
223 dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; 221 dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW;
224 dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; 222 dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH;
225 dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; 223 dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW;
@@ -234,8 +232,8 @@ static void rtl8723be_dm_diginit(struct ieee80211_hw *hw)
234 dm_digtable->forbidden_igi = DM_DIG_MIN; 232 dm_digtable->forbidden_igi = DM_DIG_MIN;
235 dm_digtable->large_fa_hit = 0; 233 dm_digtable->large_fa_hit = 0;
236 dm_digtable->recover_cnt = 0; 234 dm_digtable->recover_cnt = 0;
237 dm_digtable->dig_min_0 = DM_DIG_MIN; 235 dm_digtable->dig_dynamic_min = DM_DIG_MIN;
238 dm_digtable->dig_min_1 = DM_DIG_MIN; 236 dm_digtable->dig_dynamic_min_1 = DM_DIG_MIN;
239 dm_digtable->media_connect_0 = false; 237 dm_digtable->media_connect_0 = false;
240 dm_digtable->media_connect_1 = false; 238 dm_digtable->media_connect_1 = false;
241 rtlpriv->dm.dm_initialgain_enable = true; 239 rtlpriv->dm.dm_initialgain_enable = true;
@@ -245,18 +243,18 @@ static void rtl8723be_dm_diginit(struct ieee80211_hw *hw)
245void rtl8723be_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw) 243void rtl8723be_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw)
246{ 244{
247 struct rtl_priv *rtlpriv = rtl_priv(hw); 245 struct rtl_priv *rtlpriv = rtl_priv(hw);
248 struct rate_adaptive *ra = &(rtlpriv->ra); 246 struct rate_adaptive *p_ra = &rtlpriv->ra;
249 247
250 ra->ratr_state = DM_RATR_STA_INIT; 248 p_ra->ratr_state = DM_RATR_STA_INIT;
251 ra->pre_ratr_state = DM_RATR_STA_INIT; 249 p_ra->pre_ratr_state = DM_RATR_STA_INIT;
252 250
253 if (rtlpriv->dm.dm_type == DM_TYPE_BYDRIVER) 251 if (rtlpriv->dm.dm_type == DM_TYPE_BYDRIVER)
254 rtlpriv->dm.useramask = true; 252 rtlpriv->dm.useramask = true;
255 else 253 else
256 rtlpriv->dm.useramask = false; 254 rtlpriv->dm.useramask = false;
257 255
258 ra->high_rssi_thresh_for_ra = 50; 256 p_ra->high_rssi_thresh_for_ra = 50;
259 ra->low_rssi_thresh_for_ra40m = 20; 257 p_ra->low_rssi_thresh_for_ra40m = 20;
260} 258}
261 259
262static void rtl8723be_dm_init_txpower_tracking(struct ieee80211_hw *hw) 260static void rtl8723be_dm_init_txpower_tracking(struct ieee80211_hw *hw)
@@ -279,7 +277,7 @@ static void rtl8723be_dm_init_txpower_tracking(struct ieee80211_hw *hw)
279 277
280 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 278 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
281 " rtlpriv->dm.txpower_tracking = %d\n", 279 " rtlpriv->dm.txpower_tracking = %d\n",
282 rtlpriv->dm.txpower_tracking); 280 rtlpriv->dm.txpower_tracking);
283} 281}
284 282
285static void rtl8723be_dm_init_dynamic_atc_switch(struct ieee80211_hw *hw) 283static void rtl8723be_dm_init_dynamic_atc_switch(struct ieee80211_hw *hw)
@@ -287,6 +285,7 @@ static void rtl8723be_dm_init_dynamic_atc_switch(struct ieee80211_hw *hw)
287 struct rtl_priv *rtlpriv = rtl_priv(hw); 285 struct rtl_priv *rtlpriv = rtl_priv(hw);
288 286
289 rtlpriv->dm.crystal_cap = rtlpriv->efuse.crystalcap; 287 rtlpriv->dm.crystal_cap = rtlpriv->efuse.crystalcap;
288
290 rtlpriv->dm.atc_status = rtl_get_bbreg(hw, ROFDM1_CFOTRACKING, 0x800); 289 rtlpriv->dm.atc_status = rtl_get_bbreg(hw, ROFDM1_CFOTRACKING, 0x800);
291 rtlpriv->dm.cfo_threshold = CFO_THRESHOLD_XTAL; 290 rtlpriv->dm.cfo_threshold = CFO_THRESHOLD_XTAL;
292} 291}
@@ -308,7 +307,7 @@ void rtl8723be_dm_init(struct ieee80211_hw *hw)
308static void rtl8723be_dm_find_minimum_rssi(struct ieee80211_hw *hw) 307static void rtl8723be_dm_find_minimum_rssi(struct ieee80211_hw *hw)
309{ 308{
310 struct rtl_priv *rtlpriv = rtl_priv(hw); 309 struct rtl_priv *rtlpriv = rtl_priv(hw);
311 struct dig_t *rtl_dm_dig = &(rtlpriv->dm_digtable); 310 struct dig_t *rtl_dm_dig = &rtlpriv->dm_digtable;
312 struct rtl_mac *mac = rtl_mac(rtlpriv); 311 struct rtl_mac *mac = rtl_mac(rtlpriv);
313 312
314 /* Determine the minimum RSSI */ 313 /* Determine the minimum RSSI */
@@ -325,20 +324,20 @@ static void rtl8723be_dm_find_minimum_rssi(struct ieee80211_hw *hw)
325 rtlpriv->dm.entry_min_undec_sm_pwdb; 324 rtlpriv->dm.entry_min_undec_sm_pwdb;
326 RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, 325 RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
327 "AP Client PWDB = 0x%lx\n", 326 "AP Client PWDB = 0x%lx\n",
328 rtlpriv->dm.entry_min_undec_sm_pwdb); 327 rtlpriv->dm.entry_min_undec_sm_pwdb);
329 } else { 328 } else {
330 rtl_dm_dig->min_undec_pwdb_for_dm = 329 rtl_dm_dig->min_undec_pwdb_for_dm =
331 rtlpriv->dm.undec_sm_pwdb; 330 rtlpriv->dm.undec_sm_pwdb;
332 RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, 331 RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
333 "STA Default Port PWDB = 0x%x\n", 332 "STA Default Port PWDB = 0x%x\n",
334 rtl_dm_dig->min_undec_pwdb_for_dm); 333 rtl_dm_dig->min_undec_pwdb_for_dm);
335 } 334 }
336 } else { 335 } else {
337 rtl_dm_dig->min_undec_pwdb_for_dm = 336 rtl_dm_dig->min_undec_pwdb_for_dm =
338 rtlpriv->dm.entry_min_undec_sm_pwdb; 337 rtlpriv->dm.entry_min_undec_sm_pwdb;
339 RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD, 338 RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
340 "AP Ext Port or disconnet PWDB = 0x%x\n", 339 "AP Ext Port or disconnet PWDB = 0x%x\n",
341 rtl_dm_dig->min_undec_pwdb_for_dm); 340 rtl_dm_dig->min_undec_pwdb_for_dm);
342 } 341 }
343 RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "MinUndecoratedPWDBForDM =%d\n", 342 RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "MinUndecoratedPWDBForDM =%d\n",
344 rtl_dm_dig->min_undec_pwdb_for_dm); 343 rtl_dm_dig->min_undec_pwdb_for_dm);
@@ -347,6 +346,7 @@ static void rtl8723be_dm_find_minimum_rssi(struct ieee80211_hw *hw)
347static void rtl8723be_dm_check_rssi_monitor(struct ieee80211_hw *hw) 346static void rtl8723be_dm_check_rssi_monitor(struct ieee80211_hw *hw)
348{ 347{
349 struct rtl_priv *rtlpriv = rtl_priv(hw); 348 struct rtl_priv *rtlpriv = rtl_priv(hw);
349 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
350 struct rtl_sta_info *drv_priv; 350 struct rtl_sta_info *drv_priv;
351 u8 h2c_parameter[3] = { 0 }; 351 u8 h2c_parameter[3] = { 0 };
352 long tmp_entry_max_pwdb = 0, tmp_entry_min_pwdb = 0xff; 352 long tmp_entry_max_pwdb = 0, tmp_entry_min_pwdb = 0xff;
@@ -367,69 +367,78 @@ static void rtl8723be_dm_check_rssi_monitor(struct ieee80211_hw *hw)
367 367
368 /* If associated entry is found */ 368 /* If associated entry is found */
369 if (tmp_entry_max_pwdb != 0) { 369 if (tmp_entry_max_pwdb != 0) {
370 rtlpriv->dm.entry_max_undec_sm_pwdb = tmp_entry_max_pwdb; 370 rtlpriv->dm.entry_max_undec_sm_pwdb =
371 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 371 tmp_entry_max_pwdb;
372 "EntryMaxPWDB = 0x%lx(%ld)\n", 372 RTPRINT(rtlpriv, FDM, DM_PWDB,
373 "EntryMaxPWDB = 0x%lx(%ld)\n",
373 tmp_entry_max_pwdb, tmp_entry_max_pwdb); 374 tmp_entry_max_pwdb, tmp_entry_max_pwdb);
374 } else { 375 } else {
375 rtlpriv->dm.entry_max_undec_sm_pwdb = 0; 376 rtlpriv->dm.entry_max_undec_sm_pwdb = 0;
376 } 377 }
377 /* If associated entry is found */ 378 /* If associated entry is found */
378 if (tmp_entry_min_pwdb != 0xff) { 379 if (tmp_entry_min_pwdb != 0xff) {
379 rtlpriv->dm.entry_min_undec_sm_pwdb = tmp_entry_min_pwdb; 380 rtlpriv->dm.entry_min_undec_sm_pwdb =
380 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 381 tmp_entry_min_pwdb;
381 "EntryMinPWDB = 0x%lx(%ld)\n", 382 RTPRINT(rtlpriv, FDM, DM_PWDB,
383 "EntryMinPWDB = 0x%lx(%ld)\n",
382 tmp_entry_min_pwdb, tmp_entry_min_pwdb); 384 tmp_entry_min_pwdb, tmp_entry_min_pwdb);
383 } else { 385 } else {
384 rtlpriv->dm.entry_min_undec_sm_pwdb = 0; 386 rtlpriv->dm.entry_min_undec_sm_pwdb = 0;
385 } 387 }
386 /* Indicate Rx signal strength to FW. */ 388 /* Indicate Rx signal strength to FW. */
387 if (rtlpriv->dm.useramask) { 389 if (rtlpriv->dm.useramask) {
388 h2c_parameter[2] = (u8) (rtlpriv->dm.undec_sm_pwdb & 0xFF); 390 h2c_parameter[2] =
391 (u8)(rtlpriv->dm.undec_sm_pwdb & 0xFF);
389 h2c_parameter[1] = 0x20; 392 h2c_parameter[1] = 0x20;
390 h2c_parameter[0] = 0; 393 h2c_parameter[0] = 0;
391 rtl8723be_fill_h2c_cmd(hw, H2C_RSSI_REPORT, 3, h2c_parameter); 394 rtl8723be_fill_h2c_cmd(hw, H2C_RSSIBE_REPORT, 3, h2c_parameter);
392 } else { 395 } else {
393 rtl_write_byte(rtlpriv, 0x4fe, rtlpriv->dm.undec_sm_pwdb); 396 rtl_write_byte(rtlpriv, 0x4fe,
397 rtlpriv->dm.undec_sm_pwdb);
394 } 398 }
395 rtl8723be_dm_find_minimum_rssi(hw); 399 rtl8723be_dm_find_minimum_rssi(hw);
396 rtlpriv->dm_digtable.rssi_val_min = 400 dm_digtable->rssi_val_min =
397 rtlpriv->dm_digtable.min_undec_pwdb_for_dm; 401 rtlpriv->dm_digtable.min_undec_pwdb_for_dm;
398} 402}
399 403
400void rtl8723be_dm_write_dig(struct ieee80211_hw *hw, u8 current_igi) 404void rtl8723be_dm_write_dig(struct ieee80211_hw *hw, u8 current_igi)
401{ 405{
402 struct rtl_priv *rtlpriv = rtl_priv(hw); 406 struct rtl_priv *rtlpriv = rtl_priv(hw);
407 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
403 408
404 if (rtlpriv->dm_digtable.cur_igvalue != current_igi) { 409 if (dm_digtable->stop_dig)
410 return;
411
412 if (dm_digtable->cur_igvalue != current_igi) {
405 rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, current_igi); 413 rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f, current_igi);
406 if (rtlpriv->phy.rf_type != RF_1T1R) 414 if (rtlpriv->phy.rf_type != RF_1T1R)
407 rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1, 0x7f, current_igi); 415 rtl_set_bbreg(hw, ROFDM0_XBAGCCORE1,
416 0x7f, current_igi);
408 } 417 }
409 rtlpriv->dm_digtable.pre_igvalue = rtlpriv->dm_digtable.cur_igvalue; 418 dm_digtable->pre_igvalue = dm_digtable->cur_igvalue;
410 rtlpriv->dm_digtable.cur_igvalue = current_igi; 419 dm_digtable->cur_igvalue = current_igi;
411} 420}
412 421
413static void rtl8723be_dm_dig(struct ieee80211_hw *hw) 422static void rtl8723be_dm_dig(struct ieee80211_hw *hw)
414{ 423{
415 struct rtl_priv *rtlpriv = rtl_priv(hw); 424 struct rtl_priv *rtlpriv = rtl_priv(hw);
425 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
416 struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); 426 struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
417 struct dig_t *dm_digtable = &(rtlpriv->dm_digtable);
418 u8 dig_dynamic_min, dig_maxofmin; 427 u8 dig_dynamic_min, dig_maxofmin;
419 bool firstconnect, firstdisconnect; 428 bool bfirstconnect, bfirstdisconnect;
420 u8 dm_dig_max, dm_dig_min; 429 u8 dm_dig_max, dm_dig_min;
421 u8 current_igi = dm_digtable->cur_igvalue; 430 u8 current_igi = dm_digtable->cur_igvalue;
422 u8 offset; 431 u8 offset;
423 432
424 /* AP, BT */ 433 /* AP,BT */
425 if (mac->act_scanning) 434 if (mac->act_scanning)
426 return; 435 return;
427 436
428 dig_dynamic_min = dm_digtable->dig_min_0; 437 dig_dynamic_min = dm_digtable->dig_dynamic_min;
429 firstconnect = (mac->link_state >= MAC80211_LINKED) && 438 bfirstconnect = (mac->link_state >= MAC80211_LINKED) &&
430 !dm_digtable->media_connect_0; 439 !dm_digtable->media_connect_0;
431 firstdisconnect = (mac->link_state < MAC80211_LINKED) && 440 bfirstdisconnect = (mac->link_state < MAC80211_LINKED) &&
432 dm_digtable->media_connect_0; 441 (dm_digtable->media_connect_0);
433 442
434 dm_dig_max = 0x5a; 443 dm_dig_max = 0x5a;
435 dm_dig_min = DM_DIG_MIN; 444 dm_dig_min = DM_DIG_MIN;
@@ -457,6 +466,7 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw)
457 } else { 466 } else {
458 dig_dynamic_min = dm_dig_min; 467 dig_dynamic_min = dm_dig_min;
459 } 468 }
469
460 } else { 470 } else {
461 dm_digtable->rx_gain_max = dm_dig_max; 471 dm_digtable->rx_gain_max = dm_dig_max;
462 dig_dynamic_min = dm_dig_min; 472 dig_dynamic_min = dm_dig_min;
@@ -506,7 +516,7 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw)
506 dm_digtable->rx_gain_min = dm_digtable->rx_gain_max; 516 dm_digtable->rx_gain_min = dm_digtable->rx_gain_max;
507 517
508 if (mac->link_state >= MAC80211_LINKED) { 518 if (mac->link_state >= MAC80211_LINKED) {
509 if (firstconnect) { 519 if (bfirstconnect) {
510 if (dm_digtable->rssi_val_min <= dig_maxofmin) 520 if (dm_digtable->rssi_val_min <= dig_maxofmin)
511 current_igi = dm_digtable->rssi_val_min; 521 current_igi = dm_digtable->rssi_val_min;
512 else 522 else
@@ -522,7 +532,7 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw)
522 current_igi -= 2; 532 current_igi -= 2;
523 } 533 }
524 } else { 534 } else {
525 if (firstdisconnect) { 535 if (bfirstdisconnect) {
526 current_igi = dm_digtable->rx_gain_min; 536 current_igi = dm_digtable->rx_gain_min;
527 } else { 537 } else {
528 if (rtlpriv->falsealm_cnt.cnt_all > 10000) 538 if (rtlpriv->falsealm_cnt.cnt_all > 10000)
@@ -542,14 +552,15 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw)
542 rtl8723be_dm_write_dig(hw, current_igi); 552 rtl8723be_dm_write_dig(hw, current_igi);
543 dm_digtable->media_connect_0 = 553 dm_digtable->media_connect_0 =
544 ((mac->link_state >= MAC80211_LINKED) ? true : false); 554 ((mac->link_state >= MAC80211_LINKED) ? true : false);
545 dm_digtable->dig_min_0 = dig_dynamic_min; 555 dm_digtable->dig_dynamic_min = dig_dynamic_min;
546} 556}
547 557
548static void rtl8723be_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) 558static void rtl8723be_dm_false_alarm_counter_statistics(
559 struct ieee80211_hw *hw)
549{ 560{
550 u32 ret_value; 561 u32 ret_value;
551 struct rtl_priv *rtlpriv = rtl_priv(hw); 562 struct rtl_priv *rtlpriv = rtl_priv(hw);
552 struct false_alarm_statistics *falsealm_cnt = &(rtlpriv->falsealm_cnt); 563 struct false_alarm_statistics *falsealm_cnt = &rtlpriv->falsealm_cnt;
553 564
554 rtl_set_bbreg(hw, DM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1); 565 rtl_set_bbreg(hw, DM_REG_OFDM_FA_HOLDC_11N, BIT(31), 1);
555 rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTD_11N, BIT(31), 1); 566 rtl_set_bbreg(hw, DM_REG_OFDM_FA_RSTD_11N, BIT(31), 1);
@@ -615,16 +626,14 @@ static void rtl8723be_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw)
615 rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(15) | BIT(14), 2); 626 rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(15) | BIT(14), 2);
616 627
617 RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, 628 RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
618 "cnt_parity_fail = %d, cnt_rate_illegal = %d, " 629 "cnt_parity_fail = %d, cnt_rate_illegal = %d, cnt_crc8_fail = %d, cnt_mcs_fail = %d\n",
619 "cnt_crc8_fail = %d, cnt_mcs_fail = %d\n",
620 falsealm_cnt->cnt_parity_fail, 630 falsealm_cnt->cnt_parity_fail,
621 falsealm_cnt->cnt_rate_illegal, 631 falsealm_cnt->cnt_rate_illegal,
622 falsealm_cnt->cnt_crc8_fail, 632 falsealm_cnt->cnt_crc8_fail,
623 falsealm_cnt->cnt_mcs_fail); 633 falsealm_cnt->cnt_mcs_fail);
624 634
625 RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, 635 RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
626 "cnt_ofdm_fail = %x, cnt_cck_fail = %x," 636 "cnt_ofdm_fail = %x, cnt_cck_fail = %x, cnt_all = %x\n",
627 " cnt_all = %x\n",
628 falsealm_cnt->cnt_ofdm_fail, 637 falsealm_cnt->cnt_ofdm_fail,
629 falsealm_cnt->cnt_cck_fail, 638 falsealm_cnt->cnt_cck_fail,
630 falsealm_cnt->cnt_all); 639 falsealm_cnt->cnt_all);
@@ -690,7 +699,7 @@ static void rtl8723be_dm_tx_power_track_set_power(struct ieee80211_hw *hw,
690 u8 rfpath, u8 idx) 699 u8 rfpath, u8 idx)
691{ 700{
692 struct rtl_priv *rtlpriv = rtl_priv(hw); 701 struct rtl_priv *rtlpriv = rtl_priv(hw);
693 struct rtl_phy *rtlphy = &(rtlpriv->phy); 702 struct rtl_phy *rtlphy = &rtlpriv->phy;
694 struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw)); 703 struct rtl_dm *rtldm = rtl_dm(rtl_priv(hw));
695 u8 swing_idx_ofdm_limit = 36; 704 u8 swing_idx_ofdm_limit = 36;
696 705
@@ -762,7 +771,8 @@ static void rtl8723be_dm_tx_power_track_set_power(struct ieee80211_hw *hw,
762 } 771 }
763} 772}
764 773
765static void txpwr_track_cb_therm(struct ieee80211_hw *hw) 774static void rtl8723be_dm_txpower_tracking_callback_thermalmeter(
775 struct ieee80211_hw *hw)
766{ 776{
767 struct rtl_priv *rtlpriv = rtl_priv(hw); 777 struct rtl_priv *rtlpriv = rtl_priv(hw);
768 struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); 778 struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw));
@@ -773,30 +783,29 @@ static void txpwr_track_cb_therm(struct ieee80211_hw *hw)
773 int i = 0; 783 int i = 0;
774 784
775 u8 ofdm_min_index = 6; 785 u8 ofdm_min_index = 6;
776 u8 index = 0; 786 u8 index_for_channel = 0;
777 787
778 char delta_swing_table_idx_tup_a[] = { 788 char delta_swing_table_idx_tup_a[TXSCALE_TABLE_SIZE] = {
779 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 789 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5,
780 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10, 790 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 10,
781 10, 11, 11, 12, 12, 13, 14, 15}; 791 10, 11, 11, 12, 12, 13, 14, 15};
782 char delta_swing_table_idx_tdown_a[] = { 792 char delta_swing_table_idx_tdown_a[TXSCALE_TABLE_SIZE] = {
783 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5, 793 0, 0, 1, 2, 2, 2, 3, 3, 3, 4, 5,
784 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9, 794 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 9,
785 9, 10, 10, 11, 12, 13, 14, 15}; 795 9, 10, 10, 11, 12, 13, 14, 15};
786 796
787 /*Initilization ( 7 steps in total)*/ 797 /*Initilization ( 7 steps in total )*/
788 rtlpriv->dm.txpower_trackinginit = true; 798 rtlpriv->dm.txpower_trackinginit = true;
789 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 799 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
790 "rtl8723be_dm_txpower_tracking" 800 "rtl8723be_dm_txpower_tracking_callback_thermalmeter\n");
791 "_callback_thermalmeter\n");
792 801
793 thermalvalue = (u8)rtl_get_rfreg(hw, RF90_PATH_A, RF_T_METER, 0xfc00); 802 thermalvalue = (u8)rtl_get_rfreg(hw,
803 RF90_PATH_A, RF_T_METER, 0xfc00);
794 if (!rtlpriv->dm.txpower_track_control || thermalvalue == 0 || 804 if (!rtlpriv->dm.txpower_track_control || thermalvalue == 0 ||
795 rtlefuse->eeprom_thermalmeter == 0xFF) 805 rtlefuse->eeprom_thermalmeter == 0xFF)
796 return; 806 return;
797 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 807 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
798 "Readback Thermal Meter = 0x%x pre thermal meter 0x%x " 808 "Readback Thermal Meter = 0x%x pre thermal meter 0x%x eeprom_thermalmeter 0x%x\n",
799 "eeprom_thermalmeter 0x%x\n",
800 thermalvalue, rtldm->thermalvalue, 809 thermalvalue, rtldm->thermalvalue,
801 rtlefuse->eeprom_thermalmeter); 810 rtlefuse->eeprom_thermalmeter);
802 /*3 Initialize ThermalValues of RFCalibrateInfo*/ 811 /*3 Initialize ThermalValues of RFCalibrateInfo*/
@@ -833,9 +842,7 @@ static void txpwr_track_cb_therm(struct ieee80211_hw *hw)
833 (rtlpriv->dm.thermalvalue_iqk - thermalvalue); 842 (rtlpriv->dm.thermalvalue_iqk - thermalvalue);
834 843
835 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 844 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
836 "Readback Thermal Meter = 0x%x pre thermal meter 0x%x " 845 "Readback Thermal Meter = 0x%x pre thermal meter 0x%x eeprom_thermalmeter 0x%x delta 0x%x delta_lck 0x%x delta_iqk 0x%x\n",
837 "eeprom_thermalmeter 0x%x delta 0x%x "
838 "delta_lck 0x%x delta_iqk 0x%x\n",
839 thermalvalue, rtlpriv->dm.thermalvalue, 846 thermalvalue, rtlpriv->dm.thermalvalue,
840 rtlefuse->eeprom_thermalmeter, delta, delta_lck, delta_iqk); 847 rtlefuse->eeprom_thermalmeter, delta, delta_lck, delta_iqk);
841 /* 6 If necessary, do LCK.*/ 848 /* 6 If necessary, do LCK.*/
@@ -905,10 +912,10 @@ static void txpwr_track_cb_therm(struct ieee80211_hw *hw)
905 rtldm->done_txpower = true; 912 rtldm->done_txpower = true;
906 if (thermalvalue > rtlefuse->eeprom_thermalmeter) 913 if (thermalvalue > rtlefuse->eeprom_thermalmeter)
907 rtl8723be_dm_tx_power_track_set_power(hw, BBSWING, 0, 914 rtl8723be_dm_tx_power_track_set_power(hw, BBSWING, 0,
908 index); 915 index_for_channel);
909 else 916 else
910 rtl8723be_dm_tx_power_track_set_power(hw, BBSWING, 0, 917 rtl8723be_dm_tx_power_track_set_power(hw, BBSWING, 0,
911 index); 918 index_for_channel);
912 919
913 rtldm->swing_idx_cck_base = rtldm->swing_idx_cck; 920 rtldm->swing_idx_cck_base = rtldm->swing_idx_cck;
914 rtldm->swing_idx_ofdm_base[RF90_PATH_A] = 921 rtldm->swing_idx_ofdm_base[RF90_PATH_A] =
@@ -923,6 +930,7 @@ static void txpwr_track_cb_therm(struct ieee80211_hw *hw)
923 930
924 rtldm->txpowercount = 0; 931 rtldm->txpowercount = 0;
925 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "end\n"); 932 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, "end\n");
933
926} 934}
927 935
928void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw) 936void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw)
@@ -943,7 +951,7 @@ void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw)
943 } else { 951 } else {
944 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 952 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
945 "Schedule TxPowerTracking !!\n"); 953 "Schedule TxPowerTracking !!\n");
946 txpwr_track_cb_therm(hw); 954 rtl8723be_dm_txpower_tracking_callback_thermalmeter(hw);
947 tm_trigger = 0; 955 tm_trigger = 0;
948 } 956 }
949} 957}
@@ -953,11 +961,11 @@ static void rtl8723be_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw)
953 struct rtl_priv *rtlpriv = rtl_priv(hw); 961 struct rtl_priv *rtlpriv = rtl_priv(hw);
954 struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); 962 struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
955 struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); 963 struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
956 struct rate_adaptive *ra = &(rtlpriv->ra); 964 struct rate_adaptive *p_ra = &rtlpriv->ra;
957 struct ieee80211_sta *sta = NULL; 965 u32 low_rssithresh_for_ra = p_ra->low2high_rssi_thresh_for_ra40m;
958 u32 low_rssithresh_for_ra = ra->low2high_rssi_thresh_for_ra40m; 966 u32 high_rssithresh_for_ra = p_ra->high_rssi_thresh_for_ra;
959 u32 high_rssithresh_for_ra = ra->high_rssi_thresh_for_ra;
960 u8 go_up_gap = 5; 967 u8 go_up_gap = 5;
968 struct ieee80211_sta *sta = NULL;
961 969
962 if (is_hal_stop(rtlhal)) { 970 if (is_hal_stop(rtlhal)) {
963 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, 971 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD,
@@ -972,8 +980,8 @@ static void rtl8723be_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw)
972 } 980 }
973 981
974 if (mac->link_state == MAC80211_LINKED && 982 if (mac->link_state == MAC80211_LINKED &&
975 mac->opmode == NL80211_IFTYPE_STATION) { 983 mac->opmode == NL80211_IFTYPE_STATION) {
976 switch (ra->pre_ratr_state) { 984 switch (p_ra->pre_ratr_state) {
977 case DM_RATR_STA_MIDDLE: 985 case DM_RATR_STA_MIDDLE:
978 high_rssithresh_for_ra += go_up_gap; 986 high_rssithresh_for_ra += go_up_gap;
979 break; 987 break;
@@ -987,31 +995,31 @@ static void rtl8723be_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw)
987 995
988 if (rtlpriv->dm.undec_sm_pwdb > 996 if (rtlpriv->dm.undec_sm_pwdb >
989 (long)high_rssithresh_for_ra) 997 (long)high_rssithresh_for_ra)
990 ra->ratr_state = DM_RATR_STA_HIGH; 998 p_ra->ratr_state = DM_RATR_STA_HIGH;
991 else if (rtlpriv->dm.undec_sm_pwdb > 999 else if (rtlpriv->dm.undec_sm_pwdb >
992 (long)low_rssithresh_for_ra) 1000 (long)low_rssithresh_for_ra)
993 ra->ratr_state = DM_RATR_STA_MIDDLE; 1001 p_ra->ratr_state = DM_RATR_STA_MIDDLE;
994 else 1002 else
995 ra->ratr_state = DM_RATR_STA_LOW; 1003 p_ra->ratr_state = DM_RATR_STA_LOW;
996 1004
997 if (ra->pre_ratr_state != ra->ratr_state) { 1005 if (p_ra->pre_ratr_state != p_ra->ratr_state) {
998 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, 1006 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD,
999 "RSSI = %ld\n", 1007 "RSSI = %ld\n",
1000 rtlpriv->dm.undec_sm_pwdb); 1008 rtlpriv->dm.undec_sm_pwdb);
1001 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, 1009 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD,
1002 "RSSI_LEVEL = %d\n", ra->ratr_state); 1010 "RSSI_LEVEL = %d\n", p_ra->ratr_state);
1003 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD, 1011 RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD,
1004 "PreState = %d, CurState = %d\n", 1012 "PreState = %d, CurState = %d\n",
1005 ra->pre_ratr_state, ra->ratr_state); 1013 p_ra->pre_ratr_state, p_ra->ratr_state);
1006 1014
1007 rcu_read_lock(); 1015 rcu_read_lock();
1008 sta = rtl_find_sta(hw, mac->bssid); 1016 sta = rtl_find_sta(hw, mac->bssid);
1009 if (sta) 1017 if (sta)
1010 rtlpriv->cfg->ops->update_rate_tbl(hw, sta, 1018 rtlpriv->cfg->ops->update_rate_tbl(hw, sta,
1011 ra->ratr_state); 1019 p_ra->ratr_state);
1012 rcu_read_unlock(); 1020 rcu_read_unlock();
1013 1021
1014 ra->pre_ratr_state = ra->ratr_state; 1022 p_ra->pre_ratr_state = p_ra->ratr_state;
1015 } 1023 }
1016 } 1024 }
1017} 1025}
@@ -1020,10 +1028,6 @@ static bool rtl8723be_dm_is_edca_turbo_disable(struct ieee80211_hw *hw)
1020{ 1028{
1021 struct rtl_priv *rtlpriv = rtl_priv(hw); 1029 struct rtl_priv *rtlpriv = rtl_priv(hw);
1022 1030
1023 if (rtlpriv->cfg->ops->get_btc_status()) {
1024 if (rtlpriv->btcoexist.btc_ops->btc_is_disable_edca_turbo(rtlpriv))
1025 return true;
1026 }
1027 if (rtlpriv->mac80211.mode == WIRELESS_MODE_B) 1031 if (rtlpriv->mac80211.mode == WIRELESS_MODE_B)
1028 return true; 1032 return true;
1029 1033
@@ -1034,6 +1038,7 @@ static void rtl8723be_dm_check_edca_turbo(struct ieee80211_hw *hw)
1034{ 1038{
1035 struct rtl_priv *rtlpriv = rtl_priv(hw); 1039 struct rtl_priv *rtlpriv = rtl_priv(hw);
1036 struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); 1040 struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
1041
1037 static u64 last_txok_cnt; 1042 static u64 last_txok_cnt;
1038 static u64 last_rxok_cnt; 1043 static u64 last_rxok_cnt;
1039 u64 cur_txok_cnt = 0; 1044 u64 cur_txok_cnt = 0;
@@ -1042,22 +1047,22 @@ static void rtl8723be_dm_check_edca_turbo(struct ieee80211_hw *hw)
1042 u32 edca_be_dl = 0x6ea42b;/*not sure*/ 1047 u32 edca_be_dl = 0x6ea42b;/*not sure*/
1043 u32 edca_be = 0x5ea42b; 1048 u32 edca_be = 0x5ea42b;
1044 u32 iot_peer = 0; 1049 u32 iot_peer = 0;
1045 bool is_cur_rdlstate; 1050 bool b_is_cur_rdlstate;
1046 bool last_is_cur_rdlstate = false; 1051 bool b_last_is_cur_rdlstate = false;
1047 bool bias_on_rx = false; 1052 bool b_bias_on_rx = false;
1048 bool edca_turbo_on = false; 1053 bool b_edca_turbo_on = false;
1049 1054
1050 last_is_cur_rdlstate = rtlpriv->dm.is_cur_rdlstate; 1055 b_last_is_cur_rdlstate = rtlpriv->dm.is_cur_rdlstate;
1051 1056
1052 cur_txok_cnt = rtlpriv->stats.txbytesunicast - last_txok_cnt; 1057 cur_txok_cnt = rtlpriv->stats.txbytesunicast - last_txok_cnt;
1053 cur_rxok_cnt = rtlpriv->stats.rxbytesunicast - last_rxok_cnt; 1058 cur_rxok_cnt = rtlpriv->stats.rxbytesunicast - last_rxok_cnt;
1054 1059
1055 iot_peer = rtlpriv->mac80211.vendor; 1060 iot_peer = rtlpriv->mac80211.vendor;
1056 bias_on_rx = (iot_peer == PEER_RAL || iot_peer == PEER_ATH) ? 1061 b_bias_on_rx = (iot_peer == PEER_RAL || iot_peer == PEER_ATH) ?
1057 true : false; 1062 true : false;
1058 edca_turbo_on = ((!rtlpriv->dm.is_any_nonbepkts) && 1063 b_edca_turbo_on = ((!rtlpriv->dm.is_any_nonbepkts) &&
1059 (!rtlpriv->dm.disable_framebursting)) ? 1064 (!rtlpriv->dm.disable_framebursting)) ?
1060 true : false; 1065 true : false;
1061 1066
1062 if ((iot_peer == PEER_CISCO) && 1067 if ((iot_peer == PEER_CISCO) &&
1063 (mac->mode == WIRELESS_MODE_N_24G)) { 1068 (mac->mode == WIRELESS_MODE_N_24G)) {
@@ -1067,23 +1072,23 @@ static void rtl8723be_dm_check_edca_turbo(struct ieee80211_hw *hw)
1067 if (rtl8723be_dm_is_edca_turbo_disable(hw)) 1072 if (rtl8723be_dm_is_edca_turbo_disable(hw))
1068 goto exit; 1073 goto exit;
1069 1074
1070 if (edca_turbo_on) { 1075 if (b_edca_turbo_on) {
1071 if (bias_on_rx) 1076 if (b_bias_on_rx)
1072 is_cur_rdlstate = (cur_txok_cnt > cur_rxok_cnt * 4) ? 1077 b_is_cur_rdlstate = (cur_txok_cnt > cur_rxok_cnt * 4) ?
1073 false : true; 1078 false : true;
1074 else 1079 else
1075 is_cur_rdlstate = (cur_rxok_cnt > cur_txok_cnt * 4) ? 1080 b_is_cur_rdlstate = (cur_rxok_cnt > cur_txok_cnt * 4) ?
1076 true : false; 1081 true : false;
1077 1082
1078 edca_be = (is_cur_rdlstate) ? edca_be_dl : edca_be_ul; 1083 edca_be = (b_is_cur_rdlstate) ? edca_be_dl : edca_be_ul;
1079 rtl_write_dword(rtlpriv, REG_EDCA_BE_PARAM, edca_be); 1084 rtl_write_dword(rtlpriv, REG_EDCA_BE_PARAM, edca_be);
1080 rtlpriv->dm.is_cur_rdlstate = is_cur_rdlstate; 1085 rtlpriv->dm.is_cur_rdlstate = b_is_cur_rdlstate;
1081 rtlpriv->dm.current_turbo_edca = true; 1086 rtlpriv->dm.current_turbo_edca = true;
1082 } else { 1087 } else {
1083 if (rtlpriv->dm.current_turbo_edca) { 1088 if (rtlpriv->dm.current_turbo_edca) {
1084 u8 tmp = AC0_BE; 1089 u8 tmp = AC0_BE;
1085 rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AC_PARAM, 1090 rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_AC_PARAM,
1086 &tmp); 1091 (u8 *)(&tmp));
1087 } 1092 }
1088 rtlpriv->dm.current_turbo_edca = false; 1093 rtlpriv->dm.current_turbo_edca = false;
1089 } 1094 }
@@ -1097,13 +1102,14 @@ exit:
1097static void rtl8723be_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) 1102static void rtl8723be_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw)
1098{ 1103{
1099 struct rtl_priv *rtlpriv = rtl_priv(hw); 1104 struct rtl_priv *rtlpriv = rtl_priv(hw);
1105 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
1100 u8 cur_cck_cca_thresh; 1106 u8 cur_cck_cca_thresh;
1101 1107
1102 if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) { 1108 if (rtlpriv->mac80211.link_state >= MAC80211_LINKED) {
1103 if (rtlpriv->dm_digtable.rssi_val_min > 25) { 1109 if (dm_digtable->rssi_val_min > 25) {
1104 cur_cck_cca_thresh = 0xcd; 1110 cur_cck_cca_thresh = 0xcd;
1105 } else if ((rtlpriv->dm_digtable.rssi_val_min <= 25) && 1111 } else if ((dm_digtable->rssi_val_min <= 25) &&
1106 (rtlpriv->dm_digtable.rssi_val_min > 10)) { 1112 (dm_digtable->rssi_val_min > 10)) {
1107 cur_cck_cca_thresh = 0x83; 1113 cur_cck_cca_thresh = 0x83;
1108 } else { 1114 } else {
1109 if (rtlpriv->falsealm_cnt.cnt_cck_fail > 1000) 1115 if (rtlpriv->falsealm_cnt.cnt_cck_fail > 1000)
@@ -1118,14 +1124,13 @@ static void rtl8723be_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw)
1118 cur_cck_cca_thresh = 0x40; 1124 cur_cck_cca_thresh = 0x40;
1119 } 1125 }
1120 1126
1121 if (rtlpriv->dm_digtable.cur_cck_cca_thres != cur_cck_cca_thresh) 1127 if (dm_digtable->cur_cck_cca_thres != cur_cck_cca_thresh)
1122 rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, cur_cck_cca_thresh); 1128 rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, cur_cck_cca_thresh);
1123 1129
1124 rtlpriv->dm_digtable.pre_cck_cca_thres = rtlpriv->dm_digtable.cur_cck_cca_thres; 1130 dm_digtable->pre_cck_cca_thres = dm_digtable->cur_cck_cca_thres;
1125 rtlpriv->dm_digtable.cur_cck_cca_thres = cur_cck_cca_thresh; 1131 dm_digtable->cur_cck_cca_thres = cur_cck_cca_thresh;
1126 RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE, 1132 RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
1127 "CCK cca thresh hold =%x\n", 1133 "CCK cca thresh hold =%x\n", dm_digtable->cur_cck_cca_thres);
1128 rtlpriv->dm_digtable.cur_cck_cca_thres);
1129} 1134}
1130 1135
1131static void rtl8723be_dm_dynamic_edcca(struct ieee80211_hw *hw) 1136static void rtl8723be_dm_dynamic_edcca(struct ieee80211_hw *hw)
@@ -1173,8 +1178,7 @@ static void rtl8723be_dm_dynamic_atc_switch(struct ieee80211_hw *hw)
1173 if (rtlpriv->cfg->ops->get_btc_status()) { 1178 if (rtlpriv->cfg->ops->get_btc_status()) {
1174 if (!rtlpriv->btcoexist.btc_ops->btc_is_bt_disabled(rtlpriv)) { 1179 if (!rtlpriv->btcoexist.btc_ops->btc_is_bt_disabled(rtlpriv)) {
1175 RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD, 1180 RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
1176 "odm_DynamicATCSwitch(): Disable" 1181 "odm_DynamicATCSwitch(): Disable CFO tracking for BT!!\n");
1177 " CFO tracking for BT!!\n");
1178 return; 1182 return;
1179 } 1183 }
1180 } 1184 }
@@ -1207,9 +1211,8 @@ static void rtl8723be_dm_dynamic_atc_switch(struct ieee80211_hw *hw)
1207 if (cfo_ave_diff > 20 && rtldm->large_cfo_hit == 0) { 1211 if (cfo_ave_diff > 20 && rtldm->large_cfo_hit == 0) {
1208 rtldm->large_cfo_hit = 1; 1212 rtldm->large_cfo_hit = 1;
1209 return; 1213 return;
1210 } else { 1214 } else
1211 rtldm->large_cfo_hit = 0; 1215 rtldm->large_cfo_hit = 0;
1212 }
1213 1216
1214 rtldm->cfo_ave_pre = cfo_ave; 1217 rtldm->cfo_ave_pre = cfo_ave;
1215 1218
@@ -1263,20 +1266,20 @@ static void rtl8723be_dm_dynamic_atc_switch(struct ieee80211_hw *hw)
1263static void rtl8723be_dm_common_info_self_update(struct ieee80211_hw *hw) 1266static void rtl8723be_dm_common_info_self_update(struct ieee80211_hw *hw)
1264{ 1267{
1265 struct rtl_priv *rtlpriv = rtl_priv(hw); 1268 struct rtl_priv *rtlpriv = rtl_priv(hw);
1266 struct rtl_sta_info *drv_priv;
1267 u8 cnt = 0; 1269 u8 cnt = 0;
1270 struct rtl_sta_info *drv_priv;
1268 1271
1269 rtlpriv->dm.one_entry_only = false; 1272 rtlpriv->dm.one_entry_only = false;
1270 1273
1271 if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_STATION && 1274 if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_STATION &&
1272 rtlpriv->mac80211.link_state >= MAC80211_LINKED) { 1275 rtlpriv->mac80211.link_state >= MAC80211_LINKED) {
1273 rtlpriv->dm.one_entry_only = true; 1276 rtlpriv->dm.one_entry_only = true;
1274 return; 1277 return;
1275 } 1278 }
1276 1279
1277 if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_AP || 1280 if (rtlpriv->mac80211.opmode == NL80211_IFTYPE_AP ||
1278 rtlpriv->mac80211.opmode == NL80211_IFTYPE_ADHOC || 1281 rtlpriv->mac80211.opmode == NL80211_IFTYPE_ADHOC ||
1279 rtlpriv->mac80211.opmode == NL80211_IFTYPE_MESH_POINT) { 1282 rtlpriv->mac80211.opmode == NL80211_IFTYPE_MESH_POINT) {
1280 spin_lock_bh(&rtlpriv->locks.entry_list_lock); 1283 spin_lock_bh(&rtlpriv->locks.entry_list_lock);
1281 list_for_each_entry(drv_priv, &rtlpriv->entry_list, list) { 1284 list_for_each_entry(drv_priv, &rtlpriv->entry_list, list) {
1282 cnt++; 1285 cnt++;
@@ -1305,8 +1308,8 @@ void rtl8723be_dm_watchdog(struct ieee80211_hw *hw)
1305 fw_ps_awake = false; 1308 fw_ps_awake = false;
1306 1309
1307 if ((ppsc->rfpwr_state == ERFON) && 1310 if ((ppsc->rfpwr_state == ERFON) &&
1308 ((!fw_current_inpsmode) && fw_ps_awake) && 1311 ((!fw_current_inpsmode) && fw_ps_awake) &&
1309 (!ppsc->rfchange_inprogress)) { 1312 (!ppsc->rfchange_inprogress)) {
1310 rtl8723be_dm_common_info_self_update(hw); 1313 rtl8723be_dm_common_info_self_update(hw);
1311 rtl8723be_dm_false_alarm_counter_statistics(hw); 1314 rtl8723be_dm_false_alarm_counter_statistics(hw);
1312 rtl8723be_dm_check_rssi_monitor(hw); 1315 rtl8723be_dm_check_rssi_monitor(hw);
@@ -1318,8 +1321,6 @@ void rtl8723be_dm_watchdog(struct ieee80211_hw *hw)
1318 rtl8723be_dm_dynamic_atc_switch(hw); 1321 rtl8723be_dm_dynamic_atc_switch(hw);
1319 rtl8723be_dm_check_txpower_tracking(hw); 1322 rtl8723be_dm_check_txpower_tracking(hw);
1320 rtl8723be_dm_dynamic_txpower(hw); 1323 rtl8723be_dm_dynamic_txpower(hw);
1321 if (rtlpriv->cfg->ops->get_btc_status())
1322 rtlpriv->btcoexist.btc_ops->btc_periodical(rtlpriv);
1323 } 1324 }
1324 rtlpriv->dm.dbginfo.num_qry_beacon_pkt = 0; 1325 rtlpriv->dm.dbginfo.num_qry_beacon_pkt = 0;
1325} 1326}