hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/dm.c
....@@ -1,27 +1,5 @@
1
-/******************************************************************************
2
- *
3
- * Copyright(c) 2009-2014 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-2014 Realtek Corporation.*/
253
264 #include "../wifi.h"
275 #include "../base.h"
....@@ -33,124 +11,6 @@
3311 #include "dm.h"
3412 #include "fw.h"
3513 #include "trx.h"
36
-
37
-static const u32 ofdmswing_table[OFDM_TABLE_SIZE] = {
38
- 0x7f8001fe, /* 0, +6.0dB */
39
- 0x788001e2, /* 1, +5.5dB */
40
- 0x71c001c7, /* 2, +5.0dB */
41
- 0x6b8001ae, /* 3, +4.5dB */
42
- 0x65400195, /* 4, +4.0dB */
43
- 0x5fc0017f, /* 5, +3.5dB */
44
- 0x5a400169, /* 6, +3.0dB */
45
- 0x55400155, /* 7, +2.5dB */
46
- 0x50800142, /* 8, +2.0dB */
47
- 0x4c000130, /* 9, +1.5dB */
48
- 0x47c0011f, /* 10, +1.0dB */
49
- 0x43c0010f, /* 11, +0.5dB */
50
- 0x40000100, /* 12, +0dB */
51
- 0x3c8000f2, /* 13, -0.5dB */
52
- 0x390000e4, /* 14, -1.0dB */
53
- 0x35c000d7, /* 15, -1.5dB */
54
- 0x32c000cb, /* 16, -2.0dB */
55
- 0x300000c0, /* 17, -2.5dB */
56
- 0x2d4000b5, /* 18, -3.0dB */
57
- 0x2ac000ab, /* 19, -3.5dB */
58
- 0x288000a2, /* 20, -4.0dB */
59
- 0x26000098, /* 21, -4.5dB */
60
- 0x24000090, /* 22, -5.0dB */
61
- 0x22000088, /* 23, -5.5dB */
62
- 0x20000080, /* 24, -6.0dB */
63
- 0x1e400079, /* 25, -6.5dB */
64
- 0x1c800072, /* 26, -7.0dB */
65
- 0x1b00006c, /* 27. -7.5dB */
66
- 0x19800066, /* 28, -8.0dB */
67
- 0x18000060, /* 29, -8.5dB */
68
- 0x16c0005b, /* 30, -9.0dB */
69
- 0x15800056, /* 31, -9.5dB */
70
- 0x14400051, /* 32, -10.0dB */
71
- 0x1300004c, /* 33, -10.5dB */
72
- 0x12000048, /* 34, -11.0dB */
73
- 0x11000044, /* 35, -11.5dB */
74
- 0x10000040, /* 36, -12.0dB */
75
- 0x0f00003c, /* 37, -12.5dB */
76
- 0x0e400039, /* 38, -13.0dB */
77
- 0x0d800036, /* 39, -13.5dB */
78
- 0x0cc00033, /* 40, -14.0dB */
79
- 0x0c000030, /* 41, -14.5dB */
80
- 0x0b40002d, /* 42, -15.0dB */
81
-};
82
-
83
-static const u8 cckswing_table_ch1ch13[CCK_TABLE_SIZE][8] = {
84
- {0x36, 0x35, 0x2e, 0x25, 0x1c, 0x12, 0x09, 0x04}, /* 0, +0dB */
85
- {0x33, 0x32, 0x2b, 0x23, 0x1a, 0x11, 0x08, 0x04}, /* 1, -0.5dB */
86
- {0x30, 0x2f, 0x29, 0x21, 0x19, 0x10, 0x08, 0x03}, /* 2, -1.0dB */
87
- {0x2d, 0x2d, 0x27, 0x1f, 0x18, 0x0f, 0x08, 0x03}, /* 3, -1.5dB */
88
- {0x2b, 0x2a, 0x25, 0x1e, 0x16, 0x0e, 0x07, 0x03}, /* 4, -2.0dB */
89
- {0x28, 0x28, 0x22, 0x1c, 0x15, 0x0d, 0x07, 0x03}, /* 5, -2.5dB */
90
- {0x26, 0x25, 0x21, 0x1b, 0x14, 0x0d, 0x06, 0x03}, /* 6, -3.0dB */
91
- {0x24, 0x23, 0x1f, 0x19, 0x13, 0x0c, 0x06, 0x03}, /* 7, -3.5dB */
92
- {0x22, 0x21, 0x1d, 0x18, 0x11, 0x0b, 0x06, 0x02}, /* 8, -4.0dB */
93
- {0x20, 0x20, 0x1b, 0x16, 0x11, 0x08, 0x05, 0x02}, /* 9, -4.5dB */
94
- {0x1f, 0x1e, 0x1a, 0x15, 0x10, 0x0a, 0x05, 0x02}, /* 10, -5.0dB */
95
- {0x1d, 0x1c, 0x18, 0x14, 0x0f, 0x0a, 0x05, 0x02}, /* 11, -5.5dB */
96
- {0x1b, 0x1a, 0x17, 0x13, 0x0e, 0x09, 0x04, 0x02}, /* 12, -6.0dB */
97
- {0x1a, 0x19, 0x16, 0x12, 0x0d, 0x09, 0x04, 0x02}, /* 13, -6.5dB */
98
- {0x18, 0x17, 0x15, 0x11, 0x0c, 0x08, 0x04, 0x02}, /* 14, -7.0dB */
99
- {0x17, 0x16, 0x13, 0x10, 0x0c, 0x08, 0x04, 0x02}, /* 15, -7.5dB */
100
- {0x16, 0x15, 0x12, 0x0f, 0x0b, 0x07, 0x04, 0x01}, /* 16, -8.0dB */
101
- {0x14, 0x14, 0x11, 0x0e, 0x0b, 0x07, 0x03, 0x02}, /* 17, -8.5dB */
102
- {0x13, 0x13, 0x10, 0x0d, 0x0a, 0x06, 0x03, 0x01}, /* 18, -9.0dB */
103
- {0x12, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 19, -9.5dB */
104
- {0x11, 0x11, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x01}, /* 20, -10.0dB */
105
- {0x10, 0x10, 0x0e, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 21, -10.5dB */
106
- {0x0f, 0x0f, 0x0d, 0x0b, 0x08, 0x05, 0x03, 0x01}, /* 22, -11.0dB */
107
- {0x0e, 0x0e, 0x0c, 0x0a, 0x08, 0x05, 0x02, 0x01}, /* 23, -11.5dB */
108
- {0x0d, 0x0d, 0x0c, 0x0a, 0x07, 0x05, 0x02, 0x01}, /* 24, -12.0dB */
109
- {0x0d, 0x0c, 0x0b, 0x09, 0x07, 0x04, 0x02, 0x01}, /* 25, -12.5dB */
110
- {0x0c, 0x0c, 0x0a, 0x09, 0x06, 0x04, 0x02, 0x01}, /* 26, -13.0dB */
111
- {0x0b, 0x0b, 0x0a, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 27, -13.5dB */
112
- {0x0b, 0x0a, 0x09, 0x08, 0x06, 0x04, 0x02, 0x01}, /* 28, -14.0dB */
113
- {0x0a, 0x0a, 0x09, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 29, -14.5dB */
114
- {0x0a, 0x09, 0x08, 0x07, 0x05, 0x03, 0x02, 0x01}, /* 30, -15.0dB */
115
- {0x09, 0x09, 0x08, 0x06, 0x05, 0x03, 0x01, 0x01}, /* 31, -15.5dB */
116
- {0x09, 0x08, 0x07, 0x06, 0x04, 0x03, 0x01, 0x01} /* 32, -16.0dB */
117
-};
118
-
119
-static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = {
120
- {0x36, 0x35, 0x2e, 0x1b, 0x00, 0x00, 0x00, 0x00}, /* 0, +0dB */
121
- {0x33, 0x32, 0x2b, 0x19, 0x00, 0x00, 0x00, 0x00}, /* 1, -0.5dB */
122
- {0x30, 0x2f, 0x29, 0x18, 0x00, 0x00, 0x00, 0x00}, /* 2, -1.0dB */
123
- {0x2d, 0x2d, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00}, /* 3, -1.5dB */
124
- {0x2b, 0x2a, 0x25, 0x15, 0x00, 0x00, 0x00, 0x00}, /* 4, -2.0dB */
125
- {0x28, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00}, /* 5, -2.5dB */
126
- {0x26, 0x25, 0x21, 0x13, 0x00, 0x00, 0x00, 0x00}, /* 6, -3.0dB */
127
- {0x24, 0x23, 0x1f, 0x12, 0x00, 0x00, 0x00, 0x00}, /* 7, -3.5dB */
128
- {0x22, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x00, 0x00}, /* 8, -4.0dB */
129
- {0x20, 0x20, 0x1b, 0x10, 0x00, 0x00, 0x00, 0x00}, /* 9, -4.5dB */
130
- {0x1f, 0x1e, 0x1a, 0x0f, 0x00, 0x00, 0x00, 0x00}, /* 10, -5.0dB */
131
- {0x1d, 0x1c, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 11, -5.5dB */
132
- {0x1b, 0x1a, 0x17, 0x0e, 0x00, 0x00, 0x00, 0x00}, /* 12, -6.0dB */
133
- {0x1a, 0x19, 0x16, 0x0d, 0x00, 0x00, 0x00, 0x00}, /* 13, -6.5dB */
134
- {0x18, 0x17, 0x15, 0x0c, 0x00, 0x00, 0x00, 0x00}, /* 14, -7.0dB */
135
- {0x17, 0x16, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 15, -7.5dB */
136
- {0x16, 0x15, 0x12, 0x0b, 0x00, 0x00, 0x00, 0x00}, /* 16, -8.0dB */
137
- {0x14, 0x14, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 17, -8.5dB */
138
- {0x13, 0x13, 0x10, 0x0a, 0x00, 0x00, 0x00, 0x00}, /* 18, -9.0dB */
139
- {0x12, 0x12, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 19, -9.5dB */
140
- {0x11, 0x11, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00}, /* 20, -10.0dB */
141
- {0x10, 0x10, 0x0e, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 21, -10.5dB */
142
- {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00}, /* 22, -11.0dB */
143
- {0x0e, 0x0e, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 23, -11.5dB */
144
- {0x0d, 0x0d, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00}, /* 24, -12.0dB */
145
- {0x0d, 0x0c, 0x0b, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 25, -12.5dB */
146
- {0x0c, 0x0c, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 26, -13.0dB */
147
- {0x0b, 0x0b, 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00}, /* 27, -13.5dB */
148
- {0x0b, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 28, -14.0dB */
149
- {0x0a, 0x0a, 0x09, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 29, -14.5dB */
150
- {0x0a, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 30, -15.0dB */
151
- {0x09, 0x09, 0x08, 0x05, 0x00, 0x00, 0x00, 0x00}, /* 31, -15.5dB */
152
- {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB */
153
-};
15414
15515 static void rtl92ee_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw)
15616 {
....@@ -226,16 +86,16 @@
22686 rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(15) | BIT(14), 0);
22787 rtl_set_bbreg(hw, DM_REG_CCK_FA_RST_11N, BIT(15) | BIT(14), 2);
22888
229
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
230
- "cnt_parity_fail = %d, cnt_rate_illegal = %d, cnt_crc8_fail = %d, cnt_mcs_fail = %d\n",
231
- falsealm_cnt->cnt_parity_fail,
232
- falsealm_cnt->cnt_rate_illegal,
233
- falsealm_cnt->cnt_crc8_fail, falsealm_cnt->cnt_mcs_fail);
89
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
90
+ "cnt_parity_fail = %d, cnt_rate_illegal = %d, cnt_crc8_fail = %d, cnt_mcs_fail = %d\n",
91
+ falsealm_cnt->cnt_parity_fail,
92
+ falsealm_cnt->cnt_rate_illegal,
93
+ falsealm_cnt->cnt_crc8_fail, falsealm_cnt->cnt_mcs_fail);
23494
235
- RT_TRACE(rtlpriv, COMP_DIG, DBG_TRACE,
236
- "cnt_ofdm_fail = %x, cnt_cck_fail = %x, cnt_all = %x\n",
237
- falsealm_cnt->cnt_ofdm_fail,
238
- falsealm_cnt->cnt_cck_fail, falsealm_cnt->cnt_all);
95
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_TRACE,
96
+ "cnt_ofdm_fail = %x, cnt_cck_fail = %x, cnt_all = %x\n",
97
+ falsealm_cnt->cnt_ofdm_fail,
98
+ falsealm_cnt->cnt_cck_fail, falsealm_cnt->cnt_all);
23999 }
240100
241101 static void rtl92ee_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw)
....@@ -314,7 +174,7 @@
314174 } else {
315175 dm_dig->rx_gain_max = dm_dig_max;
316176 dig_min_0 = dm_dig_min;
317
- RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "no link\n");
177
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD, "no link\n");
318178 }
319179
320180 if (rtlpriv->falsealm_cnt.cnt_all > 10000) {
....@@ -474,34 +334,34 @@
474334 if ((mac->link_state < MAC80211_LINKED) &&
475335 (rtlpriv->dm.entry_min_undec_sm_pwdb == 0)) {
476336 rtl_dm_dig->min_undec_pwdb_for_dm = 0;
477
- RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
478
- "Not connected to any\n");
337
+ rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
338
+ "Not connected to any\n");
479339 }
480340 if (mac->link_state >= MAC80211_LINKED) {
481341 if (mac->opmode == NL80211_IFTYPE_AP ||
482342 mac->opmode == NL80211_IFTYPE_ADHOC) {
483343 rtl_dm_dig->min_undec_pwdb_for_dm =
484344 rtlpriv->dm.entry_min_undec_sm_pwdb;
485
- RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
486
- "AP Client PWDB = 0x%lx\n",
487
- rtlpriv->dm.entry_min_undec_sm_pwdb);
345
+ rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
346
+ "AP Client PWDB = 0x%lx\n",
347
+ rtlpriv->dm.entry_min_undec_sm_pwdb);
488348 } else {
489349 rtl_dm_dig->min_undec_pwdb_for_dm =
490350 rtlpriv->dm.undec_sm_pwdb;
491
- RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
492
- "STA Default Port PWDB = 0x%x\n",
493
- rtl_dm_dig->min_undec_pwdb_for_dm);
351
+ rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
352
+ "STA Default Port PWDB = 0x%x\n",
353
+ rtl_dm_dig->min_undec_pwdb_for_dm);
494354 }
495355 } else {
496356 rtl_dm_dig->min_undec_pwdb_for_dm =
497357 rtlpriv->dm.entry_min_undec_sm_pwdb;
498
- RT_TRACE(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
499
- "AP Ext Port or disconnect PWDB = 0x%x\n",
500
- rtl_dm_dig->min_undec_pwdb_for_dm);
358
+ rtl_dbg(rtlpriv, COMP_BB_POWERSAVING, DBG_LOUD,
359
+ "AP Ext Port or disconnect PWDB = 0x%x\n",
360
+ rtl_dm_dig->min_undec_pwdb_for_dm);
501361 }
502
- RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD,
503
- "MinUndecoratedPWDBForDM =%d\n",
504
- rtl_dm_dig->min_undec_pwdb_for_dm);
362
+ rtl_dbg(rtlpriv, COMP_DIG, DBG_LOUD,
363
+ "MinUndecoratedPWDBForDM =%d\n",
364
+ rtl_dm_dig->min_undec_pwdb_for_dm);
505365 }
506366
507367 static void rtl92ee_dm_check_rssi_monitor(struct ieee80211_hw *hw)
....@@ -827,8 +687,8 @@
827687 if (rtlpriv->cfg->ops->get_btc_status()) {
828688 if (!rtlpriv->btcoexist.btc_ops->
829689 btc_is_bt_disabled(rtlpriv)) {
830
- RT_TRACE(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
831
- "odm_DynamicATCSwitch(): Disable CFO tracking for BT!!\n");
690
+ rtl_dbg(rtlpriv, COMP_BT_COEXIST, DBG_LOUD,
691
+ "odm_DynamicATCSwitch(): Disable CFO tracking for BT!!\n");
832692 return;
833693 }
834694 }
....@@ -858,11 +718,11 @@
858718 (rtldm->cfo_ave_pre - cfo_ave) :
859719 (cfo_ave - rtldm->cfo_ave_pre);
860720
861
- if (cfo_ave_diff > 20 && rtldm->large_cfo_hit == 0) {
862
- rtldm->large_cfo_hit = 1;
721
+ if (cfo_ave_diff > 20 && !rtldm->large_cfo_hit) {
722
+ rtldm->large_cfo_hit = true;
863723 return;
864724 }
865
- rtldm->large_cfo_hit = 0;
725
+ rtldm->large_cfo_hit = false;
866726
867727 rtldm->cfo_ave_pre = cfo_ave;
868728
....@@ -982,8 +842,8 @@
982842 low_rssithresh_for_ra += go_up_gap;
983843 break;
984844 default:
985
- RT_TRACE(rtlpriv, COMP_RATR, DBG_DMESG,
986
- "wrong rssi level setting %d !\n", *ratr_state);
845
+ rtl_dbg(rtlpriv, COMP_RATR, DBG_DMESG,
846
+ "wrong rssi level setting %d !\n", *ratr_state);
987847 break;
988848 }
989849
....@@ -1012,14 +872,14 @@
1012872 struct ieee80211_sta *sta = NULL;
1013873
1014874 if (is_hal_stop(rtlhal)) {
1015
- RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD,
1016
- "driver is going to unload\n");
875
+ rtl_dbg(rtlpriv, COMP_RATE, DBG_LOUD,
876
+ "driver is going to unload\n");
1017877 return;
1018878 }
1019879
1020880 if (!rtlpriv->dm.useramask) {
1021
- RT_TRACE(rtlpriv, COMP_RATE, DBG_LOUD,
1022
- "driver does not control rate adaptive mask\n");
881
+ rtl_dbg(rtlpriv, COMP_RATE, DBG_LOUD,
882
+ "driver does not control rate adaptive mask\n");
1023883 return;
1024884 }
1025885