forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/dm.c
....@@ -1,27 +1,5 @@
1
-/******************************************************************************
2
- *
3
- * Copyright(c) 2009-2012 Realtek Corporation.
4
- *
5
- * This program is free software; you can redistribute it and/or modify it
6
- * under the terms of version 2 of the GNU General Public License as
7
- * published by the Free Software Foundation.
8
- *
9
- * This program is distributed in the hope that it will be useful, but WITHOUT
10
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
- * more details.
13
- *
14
- * The full GNU General Public License is included in this distribution in the
15
- * file called LICENSE.
16
- *
17
- * Contact Information:
18
- * wlanfae <wlanfae@realtek.com>
19
- * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20
- * Hsinchu 300, Taiwan.
21
- *
22
- * Larry Finger <Larry.Finger@lwfinger.net>
23
- *
24
- *****************************************************************************/
1
+// SPDX-License-Identifier: GPL-2.0
2
+/* Copyright(c) 2009-2012 Realtek Corporation.*/
253
264 #include "../wifi.h"
275 #include "../base.h"
....@@ -35,123 +13,17 @@
3513 #include "fw.h"
3614 #include "hal_btc.h"
3715
38
-static const u32 ofdmswing_table[OFDM_TABLE_SIZE] = {
39
- 0x7f8001fe,
40
- 0x788001e2,
41
- 0x71c001c7,
42
- 0x6b8001ae,
43
- 0x65400195,
44
- 0x5fc0017f,
45
- 0x5a400169,
46
- 0x55400155,
47
- 0x50800142,
48
- 0x4c000130,
49
- 0x47c0011f,
50
- 0x43c0010f,
51
- 0x40000100,
52
- 0x3c8000f2,
53
- 0x390000e4,
54
- 0x35c000d7,
55
- 0x32c000cb,
56
- 0x300000c0,
57
- 0x2d4000b5,
58
- 0x2ac000ab,
59
- 0x288000a2,
60
- 0x26000098,
61
- 0x24000090,
62
- 0x22000088,
63
- 0x20000080,
64
- 0x1e400079,
65
- 0x1c800072,
66
- 0x1b00006c,
67
- 0x19800066,
68
- 0x18000060,
69
- 0x16c0005b,
70
- 0x15800056,
71
- 0x14400051,
72
- 0x1300004c,
73
- 0x12000048,
74
- 0x11000044,
75
- 0x10000040,
76
-};
77
-
78
-static const u8 cckswing_table_ch1ch13[CCK_TABLE_SIZE][8] = {
79
- {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04},
80
- {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04},
81
- {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03},
82
- {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03},
83
- {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03},
84
- {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03},
85
- {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03},
86
- {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03},
87
- {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02},
88
- {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02},
89
- {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02},
90
- {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02},
91
- {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02},
92
- {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02},
93
- {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02},
94
- {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02},
95
- {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01},
96
- {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02},
97
- {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01},
98
- {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01},
99
- {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01},
100
- {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01},
101
- {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01},
102
- {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01},
103
- {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01},
104
- {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01},
105
- {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01},
106
- {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01},
107
- {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01},
108
- {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01},
109
- {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01},
110
- {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01},
111
- {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01}
112
-};
113
-
114
-static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = {
115
- {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00},
116
- {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00},
117
- {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00},
118
- {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00},
119
- {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00},
120
- {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00},
121
- {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00},
122
- {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00},
123
- {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00},
124
- {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00},
125
- {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00},
126
- {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00},
127
- {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00},
128
- {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00},
129
- {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00},
130
- {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00},
131
- {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00},
132
- {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00},
133
- {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00},
134
- {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00},
135
- {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00},
136
- {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00},
137
- {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00},
138
- {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00},
139
- {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00},
140
- {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00},
141
- {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00},
142
- {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00},
143
- {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00},
144
- {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00},
145
- {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00},
146
- {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00},
147
- {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00}
148
-};
149
-
15016 static u8 rtl8723e_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw)
15117 {
15218 struct rtl_priv *rtlpriv = rtl_priv(hw);
15319 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
20
+ struct rtl_mac *mac = rtl_mac(rtlpriv);
15421 long rssi_val_min = 0;
22
+
23
+ if (mac->link_state == MAC80211_LINKED &&
24
+ mac->opmode == NL80211_IFTYPE_STATION &&
25
+ rtlpriv->link_info.bcn_rx_inperiod == 0)
26
+ return 0;
15527
15628 if ((dm_digtable->curmultista_cstate == DIG_MULTISTA_CONNECT) &&
15729 (dm_digtable->cursta_cstate == DIG_STA_CONNECT)) {
....@@ -210,16 +82,16 @@
21082 rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, 0x0000c000, 0);
21183 rtl_set_bbreg(hw, RCCK0_FALSEALARMREPORT, 0x0000c000, 2);
21284
213
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
214
- "cnt_parity_fail = %d, cnt_rate_illegal = %d, cnt_crc8_fail = %d, cnt_mcs_fail = %d\n",
215
- falsealm_cnt->cnt_parity_fail,
216
- falsealm_cnt->cnt_rate_illegal,
217
- falsealm_cnt->cnt_crc8_fail, falsealm_cnt->cnt_mcs_fail);
85
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
86
+ "cnt_parity_fail = %d, cnt_rate_illegal = %d, cnt_crc8_fail = %d, cnt_mcs_fail = %d\n",
87
+ falsealm_cnt->cnt_parity_fail,
88
+ falsealm_cnt->cnt_rate_illegal,
89
+ falsealm_cnt->cnt_crc8_fail, falsealm_cnt->cnt_mcs_fail);
21890
219
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
220
- "cnt_ofdm_fail = %x, cnt_cck_fail = %x, cnt_all = %x\n",
221
- falsealm_cnt->cnt_ofdm_fail,
222
- falsealm_cnt->cnt_cck_fail, falsealm_cnt->cnt_all);
91
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
92
+ "cnt_ofdm_fail = %x, cnt_cck_fail = %x, cnt_all = %x\n",
93
+ falsealm_cnt->cnt_ofdm_fail,
94
+ falsealm_cnt->cnt_cck_fail, falsealm_cnt->cnt_all);
22395 }
22496
22597 static void rtl92c_dm_ctrl_initgain_by_fa(struct ieee80211_hw *hw)
....@@ -278,9 +150,9 @@
278150 dm_digtable->cur_igvalue = dm_digtable->rssi_val_min + 10 -
279151 dm_digtable->back_val;
280152
281
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
282
- "rssi_val_min = %x back_val %x\n",
283
- dm_digtable->rssi_val_min, dm_digtable->back_val);
153
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
154
+ "rssi_val_min = %x back_val %x\n",
155
+ dm_digtable->rssi_val_min, dm_digtable->back_val);
284156
285157 rtl8723e_dm_write_dig(hw);
286158 }
....@@ -329,10 +201,10 @@
329201 rtl8723e_dm_write_dig(hw);
330202 }
331203
332
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
333
- "curmultista_cstate = %x dig_ext_port_stage %x\n",
334
- dm_digtable->curmultista_cstate,
335
- dm_digtable->dig_ext_port_stage);
204
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
205
+ "curmultista_cstate = %x dig_ext_port_stage %x\n",
206
+ dm_digtable->curmultista_cstate,
207
+ dm_digtable->dig_ext_port_stage);
336208 }
337209
338210 static void rtl8723e_dm_initial_gain_sta(struct ieee80211_hw *hw)
....@@ -340,10 +212,10 @@
340212 struct rtl_priv *rtlpriv = rtl_priv(hw);
341213 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
342214
343
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
344
- "presta_cstate = %x, cursta_cstate = %x\n",
345
- dm_digtable->presta_cstate,
346
- dm_digtable->cursta_cstate);
215
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
216
+ "presta_cstate = %x, cursta_cstate = %x\n",
217
+ dm_digtable->presta_cstate,
218
+ dm_digtable->cursta_cstate);
347219
348220 if (dm_digtable->presta_cstate == dm_digtable->cursta_cstate ||
349221 dm_digtable->cursta_cstate == DIG_STA_BEFORE_CONNECT ||
....@@ -417,13 +289,15 @@
417289 } else {
418290 rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0xcd);
419291 rtl_set_bbreg(hw, RCCK0_SYSTEM, MASKBYTE1, 0x47);
292
+ dm_digtable->pre_cck_fa_state = 0;
293
+ dm_digtable->cur_cck_fa_state = 0;
420294
421295 }
422296 dm_digtable->pre_cck_pd_state = dm_digtable->cur_cck_pd_state;
423297 }
424298
425
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
426
- "CCKPDStage=%x\n", dm_digtable->cur_cck_pd_state);
299
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
300
+ "CCKPDStage=%x\n", dm_digtable->cur_cck_pd_state);
427301
428302 }
429303
....@@ -480,8 +354,8 @@
480354
481355 if ((mac->link_state < MAC80211_LINKED) &&
482356 (rtlpriv->dm.entry_min_undec_sm_pwdb == 0)) {
483
- RT_TRACE(rtlpriv, COMP_POWER, DBG_TRACE,
484
- "Not connected to any\n");
357
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_TRACE,
358
+ "Not connected to any\n");
485359
486360 rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL;
487361
....@@ -493,47 +367,47 @@
493367 if (mac->opmode == NL80211_IFTYPE_ADHOC) {
494368 undec_sm_pwdb =
495369 rtlpriv->dm.entry_min_undec_sm_pwdb;
496
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
497
- "AP Client PWDB = 0x%lx\n",
498
- undec_sm_pwdb);
370
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD,
371
+ "AP Client PWDB = 0x%lx\n",
372
+ undec_sm_pwdb);
499373 } else {
500374 undec_sm_pwdb =
501375 rtlpriv->dm.undec_sm_pwdb;
502
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
503
- "STA Default Port PWDB = 0x%lx\n",
504
- undec_sm_pwdb);
376
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD,
377
+ "STA Default Port PWDB = 0x%lx\n",
378
+ undec_sm_pwdb);
505379 }
506380 } else {
507381 undec_sm_pwdb =
508382 rtlpriv->dm.entry_min_undec_sm_pwdb;
509383
510
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
511
- "AP Ext Port PWDB = 0x%lx\n",
512
- undec_sm_pwdb);
384
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD,
385
+ "AP Ext Port PWDB = 0x%lx\n",
386
+ undec_sm_pwdb);
513387 }
514388
515389 if (undec_sm_pwdb >= TX_POWER_NEAR_FIELD_THRESH_LVL2) {
516390 rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_LEVEL1;
517
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
518
- "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x0)\n");
391
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD,
392
+ "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x0)\n");
519393 } else if ((undec_sm_pwdb <
520394 (TX_POWER_NEAR_FIELD_THRESH_LVL2 - 3)) &&
521395 (undec_sm_pwdb >=
522396 TX_POWER_NEAR_FIELD_THRESH_LVL1)) {
523397 rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_LEVEL1;
524
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
525
- "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x10)\n");
398
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD,
399
+ "TXHIGHPWRLEVEL_LEVEL1 (TxPwr=0x10)\n");
526400 } else if (undec_sm_pwdb <
527401 (TX_POWER_NEAR_FIELD_THRESH_LVL1 - 5)) {
528402 rtlpriv->dm.dynamic_txhighpower_lvl = TXHIGHPWRLEVEL_NORMAL;
529
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
530
- "TXHIGHPWRLEVEL_NORMAL\n");
403
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD,
404
+ "TXHIGHPWRLEVEL_NORMAL\n");
531405 }
532406
533407 if (rtlpriv->dm.dynamic_txhighpower_lvl != rtlpriv->dm.last_dtp_lvl) {
534
- RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD,
535
- "PHY_SetTxPowerLevel8192S() Channel = %d\n",
536
- rtlphy->current_channel);
408
+ rtl_dbg(rtlpriv, COMP_POWER, DBG_LOUD,
409
+ "PHY_SetTxPowerLevel8192S() Channel = %d\n",
410
+ rtlphy->current_channel);
537411 rtl8723e_phy_set_txpower_level(hw, rtlphy->current_channel);
538412 }
539413
....@@ -545,10 +419,10 @@
545419 struct rtl_priv *rtlpriv = rtl_priv(hw);
546420 struct dig_t *dm_digtable = &rtlpriv->dm_digtable;
547421
548
- RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD,
549
- "cur_igvalue = 0x%x, pre_igvalue = 0x%x, back_val = %d\n",
550
- dm_digtable->cur_igvalue, dm_digtable->pre_igvalue,
551
- dm_digtable->back_val);
422
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD,
423
+ "cur_igvalue = 0x%x, pre_igvalue = 0x%x, back_val = %d\n",
424
+ dm_digtable->cur_igvalue, dm_digtable->pre_igvalue,
425
+ dm_digtable->back_val);
552426
553427 if (dm_digtable->pre_igvalue != dm_digtable->cur_igvalue) {
554428 rtl_set_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f,
....@@ -647,9 +521,9 @@
647521 rtlpriv->dm.txpower_tracking = true;
648522 rtlpriv->dm.txpower_trackinginit = false;
649523
650
- RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
651
- "pMgntInfo->txpower_tracking = %d\n",
652
- rtlpriv->dm.txpower_tracking);
524
+ rtl_dbg(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
525
+ "pMgntInfo->txpower_tracking = %d\n",
526
+ rtlpriv->dm.txpower_tracking);
653527 }
654528
655529 static void rtl8723e_dm_initialize_txpower_tracking(struct ieee80211_hw *hw)
....@@ -665,7 +539,7 @@
665539 void rtl8723e_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw)
666540 {
667541 struct rtl_priv *rtlpriv = rtl_priv(hw);
668
- struct rate_adaptive *p_ra = &(rtlpriv->ra);
542
+ struct rate_adaptive *p_ra = &rtlpriv->ra;
669543
670544 p_ra->ratr_state = DM_RATR_STA_INIT;
671545 p_ra->pre_ratr_state = DM_RATR_STA_INIT;
....@@ -675,6 +549,89 @@
675549 else
676550 rtlpriv->dm.useramask = false;
677551
552
+}
553
+
554
+static void rtl8723e_dm_refresh_rate_adaptive_mask(struct ieee80211_hw *hw)
555
+{
556
+ struct rtl_priv *rtlpriv = rtl_priv(hw);
557
+ struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
558
+ struct rtl_mac *mac = rtl_mac(rtl_priv(hw));
559
+ struct rate_adaptive *p_ra = &rtlpriv->ra;
560
+ u32 low_rssithresh_for_ra, high_rssithresh_for_ra;
561
+ struct ieee80211_sta *sta = NULL;
562
+
563
+ if (is_hal_stop(rtlhal)) {
564
+ rtl_dbg(rtlpriv, COMP_RATE, DBG_LOUD,
565
+ " driver is going to unload\n");
566
+ return;
567
+ }
568
+
569
+ if (!rtlpriv->dm.useramask) {
570
+ rtl_dbg(rtlpriv, COMP_RATE, DBG_LOUD,
571
+ " driver does not control rate adaptive mask\n");
572
+ return;
573
+ }
574
+
575
+ if (mac->link_state == MAC80211_LINKED &&
576
+ mac->opmode == NL80211_IFTYPE_STATION) {
577
+ switch (p_ra->pre_ratr_state) {
578
+ case DM_RATR_STA_HIGH:
579
+ high_rssithresh_for_ra = 50;
580
+ low_rssithresh_for_ra = 20;
581
+ break;
582
+ case DM_RATR_STA_MIDDLE:
583
+ high_rssithresh_for_ra = 55;
584
+ low_rssithresh_for_ra = 20;
585
+ break;
586
+ case DM_RATR_STA_LOW:
587
+ high_rssithresh_for_ra = 60;
588
+ low_rssithresh_for_ra = 25;
589
+ break;
590
+ default:
591
+ high_rssithresh_for_ra = 50;
592
+ low_rssithresh_for_ra = 20;
593
+ break;
594
+ }
595
+
596
+ if (rtlpriv->link_info.bcn_rx_inperiod == 0)
597
+ switch (p_ra->pre_ratr_state) {
598
+ case DM_RATR_STA_HIGH:
599
+ default:
600
+ p_ra->ratr_state = DM_RATR_STA_MIDDLE;
601
+ break;
602
+ case DM_RATR_STA_MIDDLE:
603
+ case DM_RATR_STA_LOW:
604
+ p_ra->ratr_state = DM_RATR_STA_LOW;
605
+ break;
606
+ }
607
+ else if (rtlpriv->dm.undec_sm_pwdb > high_rssithresh_for_ra)
608
+ p_ra->ratr_state = DM_RATR_STA_HIGH;
609
+ else if (rtlpriv->dm.undec_sm_pwdb > low_rssithresh_for_ra)
610
+ p_ra->ratr_state = DM_RATR_STA_MIDDLE;
611
+ else
612
+ p_ra->ratr_state = DM_RATR_STA_LOW;
613
+
614
+ if (p_ra->pre_ratr_state != p_ra->ratr_state) {
615
+ rtl_dbg(rtlpriv, COMP_RATE, DBG_LOUD,
616
+ "RSSI = %ld\n",
617
+ rtlpriv->dm.undec_sm_pwdb);
618
+ rtl_dbg(rtlpriv, COMP_RATE, DBG_LOUD,
619
+ "RSSI_LEVEL = %d\n", p_ra->ratr_state);
620
+ rtl_dbg(rtlpriv, COMP_RATE, DBG_LOUD,
621
+ "PreState = %d, CurState = %d\n",
622
+ p_ra->pre_ratr_state, p_ra->ratr_state);
623
+
624
+ rcu_read_lock();
625
+ sta = rtl_find_sta(hw, mac->bssid);
626
+ if (sta)
627
+ rtlpriv->cfg->ops->update_rate_tbl(hw, sta,
628
+ p_ra->ratr_state,
629
+ true);
630
+ rcu_read_unlock();
631
+
632
+ p_ra->pre_ratr_state = p_ra->ratr_state;
633
+ }
634
+ }
678635 }
679636
680637 void rtl8723e_dm_rf_saving(struct ieee80211_hw *hw, u8 bforce_in_normal)
....@@ -759,31 +716,31 @@
759716 if (((mac->link_state == MAC80211_NOLINK)) &&
760717 (rtlpriv->dm.entry_min_undec_sm_pwdb == 0)) {
761718 dm_pstable->rssi_val_min = 0;
762
- RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD,
763
- "Not connected to any\n");
719
+ rtl_dbg(rtlpriv, DBG_LOUD, DBG_LOUD,
720
+ "Not connected to any\n");
764721 }
765722
766723 if (mac->link_state == MAC80211_LINKED) {
767724 if (mac->opmode == NL80211_IFTYPE_ADHOC) {
768725 dm_pstable->rssi_val_min =
769726 rtlpriv->dm.entry_min_undec_sm_pwdb;
770
- RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD,
771
- "AP Client PWDB = 0x%lx\n",
772
- dm_pstable->rssi_val_min);
727
+ rtl_dbg(rtlpriv, DBG_LOUD, DBG_LOUD,
728
+ "AP Client PWDB = 0x%lx\n",
729
+ dm_pstable->rssi_val_min);
773730 } else {
774731 dm_pstable->rssi_val_min =
775732 rtlpriv->dm.undec_sm_pwdb;
776
- RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD,
777
- "STA Default Port PWDB = 0x%lx\n",
778
- dm_pstable->rssi_val_min);
733
+ rtl_dbg(rtlpriv, DBG_LOUD, DBG_LOUD,
734
+ "STA Default Port PWDB = 0x%lx\n",
735
+ dm_pstable->rssi_val_min);
779736 }
780737 } else {
781738 dm_pstable->rssi_val_min =
782739 rtlpriv->dm.entry_min_undec_sm_pwdb;
783740
784
- RT_TRACE(rtlpriv, DBG_LOUD, DBG_LOUD,
785
- "AP Ext Port PWDB = 0x%lx\n",
786
- dm_pstable->rssi_val_min);
741
+ rtl_dbg(rtlpriv, DBG_LOUD, DBG_LOUD,
742
+ "AP Ext Port PWDB = 0x%lx\n",
743
+ dm_pstable->rssi_val_min);
787744 }
788745
789746 rtl8723e_dm_rf_saving(hw, false);
....@@ -826,7 +783,7 @@
826783 rtl8723e_dm_dynamic_bb_powersaving(hw);
827784 rtl8723e_dm_dynamic_txpower(hw);
828785 rtl8723e_dm_check_txpower_tracking(hw);
829
- /* rtl92c_dm_refresh_rate_adaptive_mask(hw); */
786
+ rtl8723e_dm_refresh_rate_adaptive_mask(hw);
830787 rtl8723e_dm_bt_coexist(hw);
831788 rtl8723e_dm_check_edca_turbo(hw);
832789 }
....@@ -863,21 +820,21 @@
863820 struct rtl_priv *rtlpriv = rtl_priv(hw);
864821 u8 tmp_byte = 0;
865822 if (!rtlpriv->btcoexist.bt_coexistence) {
866
- RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
867
- "[DM]{BT], BT not exist!!\n");
823
+ rtl_dbg(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
824
+ "[DM]{BT], BT not exist!!\n");
868825 return;
869826 }
870827
871828 if (!rtlpriv->btcoexist.init_set) {
872
- RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
873
- "[DM][BT], rtl8723e_dm_bt_coexist()\n");
829
+ rtl_dbg(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
830
+ "[DM][BT], %s\n", __func__);
874831 rtl8723e_dm_init_bt_coexist(hw);
875832 }
876833
877834 tmp_byte = rtl_read_byte(rtlpriv, 0x40);
878
- RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
879
- "[DM][BT], 0x40 is 0x%x\n", tmp_byte);
880
- RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_DMESG,
881
- "[DM][BT], bt_dm_coexist start\n");
835
+ rtl_dbg(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
836
+ "[DM][BT], 0x40 is 0x%x\n", tmp_byte);
837
+ rtl_dbg(rtlpriv, COMP_BT_COEXIST, DBG_DMESG,
838
+ "[DM][BT], bt_dm_coexist start\n");
882839 rtl8723e_dm_bt_coexist_8723(hw);
883840 }