.. | .. |
---|
1 | | -/****************************************************************************** |
---|
2 | | - * |
---|
3 | | - * Copyright(c) 2009-2012 Realtek Corporation. All rights reserved. |
---|
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.*/ |
---|
25 | 3 | |
---|
26 | 4 | #include "../wifi.h" |
---|
27 | 5 | #include "../pci.h" |
---|
.. | .. |
---|
45 | 23 | #define LINK_Q ui_link_quality |
---|
46 | 24 | #define RX_EVM rx_evm_percentage |
---|
47 | 25 | #define RX_SIGQ rx_mimo_sig_qual |
---|
48 | | - |
---|
49 | 26 | |
---|
50 | 27 | void rtl92c_read_chip_version(struct ieee80211_hw *hw) |
---|
51 | 28 | { |
---|
.. | .. |
---|
114 | 91 | versionid = "UNKNOWN"; |
---|
115 | 92 | break; |
---|
116 | 93 | } |
---|
117 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
---|
118 | | - "Chip Version ID: %s\n", versionid); |
---|
| 94 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_TRACE, |
---|
| 95 | + "Chip Version ID: %s\n", versionid); |
---|
119 | 96 | |
---|
120 | 97 | if (IS_92C_SERIAL(rtlhal->version)) |
---|
121 | 98 | rtlphy->rf_type = |
---|
122 | 99 | (IS_92C_1T2R(rtlhal->version)) ? RF_1T2R : RF_2T2R; |
---|
123 | 100 | else |
---|
124 | 101 | rtlphy->rf_type = RF_1T1R; |
---|
125 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, |
---|
126 | | - "Chip RF Type: %s\n", |
---|
127 | | - rtlphy->rf_type == RF_2T2R ? "RF_2T2R" : "RF_1T1R"); |
---|
| 102 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_LOUD, |
---|
| 103 | + "Chip RF Type: %s\n", |
---|
| 104 | + rtlphy->rf_type == RF_2T2R ? "RF_2T2R" : "RF_1T1R"); |
---|
128 | 105 | if (get_rf_type(rtlphy) == RF_1T1R) |
---|
129 | 106 | rtlpriv->dm.rfpath_rxenable[0] = true; |
---|
130 | 107 | else |
---|
131 | 108 | rtlpriv->dm.rfpath_rxenable[0] = |
---|
132 | 109 | rtlpriv->dm.rfpath_rxenable[1] = true; |
---|
133 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "VersionID = 0x%4x\n", |
---|
134 | | - rtlhal->version); |
---|
| 110 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_LOUD, "VersionID = 0x%4x\n", |
---|
| 111 | + rtlhal->version); |
---|
135 | 112 | } |
---|
136 | 113 | |
---|
137 | 114 | /** |
---|
.. | .. |
---|
165 | 142 | } while (++count); |
---|
166 | 143 | return status; |
---|
167 | 144 | } |
---|
| 145 | + |
---|
168 | 146 | /** |
---|
169 | 147 | * rtl92c_init_LLT_table - Init LLT table |
---|
170 | 148 | * @io: io callback |
---|
.. | .. |
---|
180 | 158 | |
---|
181 | 159 | for (i = 0; i < (boundary - 1); i++) { |
---|
182 | 160 | rst = rtl92c_llt_write(hw, i , i + 1); |
---|
183 | | - if (true != rst) { |
---|
| 161 | + if (!rst) { |
---|
184 | 162 | pr_err("===> %s #1 fail\n", __func__); |
---|
185 | 163 | return rst; |
---|
186 | 164 | } |
---|
187 | 165 | } |
---|
188 | 166 | /* end of list */ |
---|
189 | 167 | rst = rtl92c_llt_write(hw, (boundary - 1), 0xFF); |
---|
190 | | - if (true != rst) { |
---|
| 168 | + if (!rst) { |
---|
191 | 169 | pr_err("===> %s #2 fail\n", __func__); |
---|
192 | 170 | return rst; |
---|
193 | 171 | } |
---|
.. | .. |
---|
198 | 176 | */ |
---|
199 | 177 | for (i = boundary; i < LLT_LAST_ENTRY_OF_TX_PKT_BUFFER; i++) { |
---|
200 | 178 | rst = rtl92c_llt_write(hw, i, (i + 1)); |
---|
201 | | - if (true != rst) { |
---|
| 179 | + if (!rst) { |
---|
202 | 180 | pr_err("===> %s #3 fail\n", __func__); |
---|
203 | 181 | return rst; |
---|
204 | 182 | } |
---|
205 | 183 | } |
---|
206 | 184 | /* Let last entry point to the start entry of ring buffer */ |
---|
207 | 185 | rst = rtl92c_llt_write(hw, LLT_LAST_ENTRY_OF_TX_PKT_BUFFER, boundary); |
---|
208 | | - if (true != rst) { |
---|
| 186 | + if (!rst) { |
---|
209 | 187 | pr_err("===> %s #4 fail\n", __func__); |
---|
210 | 188 | return rst; |
---|
211 | 189 | } |
---|
212 | 190 | return rst; |
---|
213 | 191 | } |
---|
| 192 | + |
---|
214 | 193 | void rtl92c_set_key(struct ieee80211_hw *hw, u32 key_index, |
---|
215 | 194 | u8 *p_macaddr, bool is_group, u8 enc_algo, |
---|
216 | 195 | bool is_wepkey, bool clear_all) |
---|
.. | .. |
---|
236 | 215 | u8 cam_offset = 0; |
---|
237 | 216 | u8 clear_number = 5; |
---|
238 | 217 | |
---|
239 | | - RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, "clear_all\n"); |
---|
| 218 | + rtl_dbg(rtlpriv, COMP_SEC, DBG_DMESG, "clear_all\n"); |
---|
240 | 219 | for (idx = 0; idx < clear_number; idx++) { |
---|
241 | 220 | rtl_cam_mark_invalid(hw, cam_offset + idx); |
---|
242 | 221 | rtl_cam_empty_entry(hw, cam_offset + idx); |
---|
.. | .. |
---|
290 | 269 | } |
---|
291 | 270 | } |
---|
292 | 271 | if (rtlpriv->sec.key_len[key_index] == 0) { |
---|
293 | | - RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
294 | | - "delete one entry\n"); |
---|
| 272 | + rtl_dbg(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
| 273 | + "delete one entry\n"); |
---|
295 | 274 | if (mac->opmode == NL80211_IFTYPE_AP || |
---|
296 | 275 | mac->opmode == NL80211_IFTYPE_MESH_POINT) |
---|
297 | 276 | rtl_cam_del_entry(hw, p_macaddr); |
---|
298 | 277 | rtl_cam_delete_one_entry(hw, p_macaddr, entry_id); |
---|
299 | 278 | } else { |
---|
300 | | - RT_TRACE(rtlpriv, COMP_SEC, DBG_LOUD, |
---|
301 | | - "The insert KEY length is %d\n", |
---|
| 279 | + rtl_dbg(rtlpriv, COMP_SEC, DBG_LOUD, |
---|
| 280 | + "The insert KEY length is %d\n", |
---|
302 | 281 | rtlpriv->sec.key_len[PAIRWISE_KEYIDX]); |
---|
303 | | - RT_TRACE(rtlpriv, COMP_SEC, DBG_LOUD, |
---|
304 | | - "The insert KEY is %x %x\n", |
---|
305 | | - rtlpriv->sec.key_buf[0][0], |
---|
306 | | - rtlpriv->sec.key_buf[0][1]); |
---|
307 | | - RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
308 | | - "add one entry\n"); |
---|
| 282 | + rtl_dbg(rtlpriv, COMP_SEC, DBG_LOUD, |
---|
| 283 | + "The insert KEY is %x %x\n", |
---|
| 284 | + rtlpriv->sec.key_buf[0][0], |
---|
| 285 | + rtlpriv->sec.key_buf[0][1]); |
---|
| 286 | + rtl_dbg(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
| 287 | + "add one entry\n"); |
---|
309 | 288 | if (is_pairwise) { |
---|
310 | 289 | RT_PRINT_DATA(rtlpriv, COMP_SEC, DBG_LOUD, |
---|
311 | 290 | "Pairwise Key content", |
---|
312 | 291 | rtlpriv->sec.pairwise_key, |
---|
313 | 292 | rtlpriv->sec. |
---|
314 | 293 | key_len[PAIRWISE_KEYIDX]); |
---|
315 | | - RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
316 | | - "set Pairwise key\n"); |
---|
| 294 | + rtl_dbg(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
| 295 | + "set Pairwise key\n"); |
---|
317 | 296 | |
---|
318 | 297 | rtl_cam_add_one_entry(hw, macaddr, key_index, |
---|
319 | 298 | entry_id, enc_algo, |
---|
.. | .. |
---|
321 | 300 | rtlpriv->sec. |
---|
322 | 301 | key_buf[key_index]); |
---|
323 | 302 | } else { |
---|
324 | | - RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
325 | | - "set group key\n"); |
---|
| 303 | + rtl_dbg(rtlpriv, COMP_SEC, DBG_DMESG, |
---|
| 304 | + "set group key\n"); |
---|
326 | 305 | if (mac->opmode == NL80211_IFTYPE_ADHOC) { |
---|
327 | 306 | rtl_cam_add_one_entry(hw, |
---|
328 | 307 | rtlefuse->dev_addr, |
---|
.. | .. |
---|
392 | 371 | void rtl92c_init_driver_info_size(struct ieee80211_hw *hw, u8 size) |
---|
393 | 372 | { |
---|
394 | 373 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
---|
| 374 | + |
---|
395 | 375 | rtl_write_byte(rtlpriv, REG_RX_DRVINFO_SZ, size); |
---|
396 | 376 | } |
---|
397 | 377 | |
---|
.. | .. |
---|
403 | 383 | switch (type) { |
---|
404 | 384 | case NL80211_IFTYPE_UNSPECIFIED: |
---|
405 | 385 | value = NT_NO_LINK; |
---|
406 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
407 | | - "Set Network type to NO LINK!\n"); |
---|
| 386 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
| 387 | + "Set Network type to NO LINK!\n"); |
---|
408 | 388 | break; |
---|
409 | 389 | case NL80211_IFTYPE_ADHOC: |
---|
410 | 390 | value = NT_LINK_AD_HOC; |
---|
411 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
412 | | - "Set Network type to Ad Hoc!\n"); |
---|
| 391 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
| 392 | + "Set Network type to Ad Hoc!\n"); |
---|
413 | 393 | break; |
---|
414 | 394 | case NL80211_IFTYPE_STATION: |
---|
415 | 395 | value = NT_LINK_AP; |
---|
416 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
417 | | - "Set Network type to STA!\n"); |
---|
| 396 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
| 397 | + "Set Network type to STA!\n"); |
---|
418 | 398 | break; |
---|
419 | 399 | case NL80211_IFTYPE_AP: |
---|
420 | 400 | value = NT_AS_AP; |
---|
421 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
422 | | - "Set Network type to AP!\n"); |
---|
| 401 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
| 402 | + "Set Network type to AP!\n"); |
---|
423 | 403 | break; |
---|
424 | 404 | default: |
---|
425 | | - RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
426 | | - "Network type %d not supported!\n", type); |
---|
| 405 | + rtl_dbg(rtlpriv, COMP_INIT, DBG_DMESG, |
---|
| 406 | + "Network type %d not supported!\n", type); |
---|
427 | 407 | return -EOPNOTSUPP; |
---|
428 | 408 | } |
---|
429 | 409 | rtl_write_byte(rtlpriv, MSR, value); |
---|
.. | .. |
---|
587 | 567 | |
---|
588 | 568 | /*==============================================================*/ |
---|
589 | 569 | |
---|
590 | | -static u8 _rtl92c_query_rxpwrpercentage(s8 antpower) |
---|
591 | | -{ |
---|
592 | | - if ((antpower <= -100) || (antpower >= 20)) |
---|
593 | | - return 0; |
---|
594 | | - else if (antpower >= 0) |
---|
595 | | - return 100; |
---|
596 | | - else |
---|
597 | | - return 100 + antpower; |
---|
598 | | -} |
---|
599 | | - |
---|
600 | | -static u8 _rtl92c_evm_db_to_percentage(s8 value) |
---|
601 | | -{ |
---|
602 | | - s8 ret_val; |
---|
603 | | - |
---|
604 | | - ret_val = value; |
---|
605 | | - if (ret_val >= 0) |
---|
606 | | - ret_val = 0; |
---|
607 | | - if (ret_val <= -33) |
---|
608 | | - ret_val = -33; |
---|
609 | | - ret_val = 0 - ret_val; |
---|
610 | | - ret_val *= 3; |
---|
611 | | - if (ret_val == 99) |
---|
612 | | - ret_val = 100; |
---|
613 | | - return ret_val; |
---|
614 | | -} |
---|
615 | | - |
---|
616 | | -static long _rtl92c_signal_scale_mapping(struct ieee80211_hw *hw, |
---|
617 | | - long currsig) |
---|
618 | | -{ |
---|
619 | | - long retsig; |
---|
620 | | - |
---|
621 | | - if (currsig >= 61 && currsig <= 100) |
---|
622 | | - retsig = 90 + ((currsig - 60) / 4); |
---|
623 | | - else if (currsig >= 41 && currsig <= 60) |
---|
624 | | - retsig = 78 + ((currsig - 40) / 2); |
---|
625 | | - else if (currsig >= 31 && currsig <= 40) |
---|
626 | | - retsig = 66 + (currsig - 30); |
---|
627 | | - else if (currsig >= 21 && currsig <= 30) |
---|
628 | | - retsig = 54 + (currsig - 20); |
---|
629 | | - else if (currsig >= 5 && currsig <= 20) |
---|
630 | | - retsig = 42 + (((currsig - 5) * 2) / 3); |
---|
631 | | - else if (currsig == 4) |
---|
632 | | - retsig = 36; |
---|
633 | | - else if (currsig == 3) |
---|
634 | | - retsig = 27; |
---|
635 | | - else if (currsig == 2) |
---|
636 | | - retsig = 18; |
---|
637 | | - else if (currsig == 1) |
---|
638 | | - retsig = 9; |
---|
639 | | - else |
---|
640 | | - retsig = currsig; |
---|
641 | | - return retsig; |
---|
642 | | -} |
---|
643 | | - |
---|
644 | 570 | static void _rtl92c_query_rxphystatus(struct ieee80211_hw *hw, |
---|
645 | 571 | struct rtl_stats *pstats, |
---|
646 | 572 | struct rx_desc_92c *p_desc, |
---|
.. | .. |
---|
658 | 584 | u32 rssi, total_rssi = 0; |
---|
659 | 585 | bool in_powersavemode = false; |
---|
660 | 586 | bool is_cck_rate; |
---|
661 | | - u8 *pdesc = (u8 *)p_desc; |
---|
| 587 | + __le32 *pdesc = (__le32 *)p_desc; |
---|
662 | 588 | |
---|
663 | 589 | is_cck_rate = RX_HAL_IS_CCK_RATE(p_desc->rxmcs); |
---|
664 | 590 | pstats->packet_matchbssid = packet_match_bssid; |
---|
.. | .. |
---|
669 | 595 | pstats->RX_SIGQ[1] = -1; |
---|
670 | 596 | if (is_cck_rate) { |
---|
671 | 597 | u8 report, cck_highpwr; |
---|
| 598 | + |
---|
672 | 599 | cck_buf = (struct phy_sts_cck_8192s_t *)p_drvinfo; |
---|
673 | 600 | if (!in_powersavemode) |
---|
674 | 601 | cck_highpwr = rtlphy->cck_high_power; |
---|
.. | .. |
---|
676 | 603 | cck_highpwr = false; |
---|
677 | 604 | if (!cck_highpwr) { |
---|
678 | 605 | u8 cck_agc_rpt = cck_buf->cck_agc_rpt; |
---|
| 606 | + |
---|
679 | 607 | report = cck_buf->cck_agc_rpt & 0xc0; |
---|
680 | 608 | report = report >> 6; |
---|
681 | 609 | switch (report) { |
---|
.. | .. |
---|
694 | 622 | } |
---|
695 | 623 | } else { |
---|
696 | 624 | u8 cck_agc_rpt = cck_buf->cck_agc_rpt; |
---|
| 625 | + |
---|
697 | 626 | report = p_drvinfo->cfosho[0] & 0x60; |
---|
698 | 627 | report = report >> 5; |
---|
699 | 628 | switch (report) { |
---|
.. | .. |
---|
711 | 640 | break; |
---|
712 | 641 | } |
---|
713 | 642 | } |
---|
714 | | - pwdb_all = _rtl92c_query_rxpwrpercentage(rx_pwr_all); |
---|
| 643 | + pwdb_all = rtl_query_rxpwrpercentage(rx_pwr_all); |
---|
715 | 644 | pstats->rx_pwdb_all = pwdb_all; |
---|
716 | 645 | pstats->recvsignalpower = rx_pwr_all; |
---|
717 | 646 | if (packet_match_bssid) { |
---|
718 | 647 | u8 sq; |
---|
| 648 | + |
---|
719 | 649 | if (pstats->rx_pwdb_all > 40) |
---|
720 | 650 | sq = 100; |
---|
721 | 651 | else { |
---|
.. | .. |
---|
739 | 669 | rf_rx_num++; |
---|
740 | 670 | rx_pwr[i] = |
---|
741 | 671 | ((p_drvinfo->gain_trsw[i] & 0x3f) * 2) - 110; |
---|
742 | | - rssi = _rtl92c_query_rxpwrpercentage(rx_pwr[i]); |
---|
| 672 | + rssi = rtl_query_rxpwrpercentage(rx_pwr[i]); |
---|
743 | 673 | total_rssi += rssi; |
---|
744 | 674 | rtlpriv->stats.rx_snr_db[i] = |
---|
745 | 675 | (long)(p_drvinfo->rxsnr[i] / 2); |
---|
.. | .. |
---|
748 | 678 | pstats->rx_mimo_signalstrength[i] = (u8) rssi; |
---|
749 | 679 | } |
---|
750 | 680 | rx_pwr_all = ((p_drvinfo->pwdb_all >> 1) & 0x7f) - 110; |
---|
751 | | - pwdb_all = _rtl92c_query_rxpwrpercentage(rx_pwr_all); |
---|
| 681 | + pwdb_all = rtl_query_rxpwrpercentage(rx_pwr_all); |
---|
752 | 682 | pstats->rx_pwdb_all = pwdb_all; |
---|
753 | 683 | pstats->rxpower = rx_pwr_all; |
---|
754 | 684 | pstats->recvsignalpower = rx_pwr_all; |
---|
755 | | - if (GET_RX_DESC_RX_MCS(pdesc) && |
---|
756 | | - GET_RX_DESC_RX_MCS(pdesc) >= DESC_RATEMCS8 && |
---|
757 | | - GET_RX_DESC_RX_MCS(pdesc) <= DESC_RATEMCS15) |
---|
| 685 | + if (get_rx_desc_rx_mcs(pdesc) && |
---|
| 686 | + get_rx_desc_rx_mcs(pdesc) >= DESC_RATEMCS8 && |
---|
| 687 | + get_rx_desc_rx_mcs(pdesc) <= DESC_RATEMCS15) |
---|
758 | 688 | max_spatial_stream = 2; |
---|
759 | 689 | else |
---|
760 | 690 | max_spatial_stream = 1; |
---|
761 | 691 | for (i = 0; i < max_spatial_stream; i++) { |
---|
762 | | - evm = _rtl92c_evm_db_to_percentage(p_drvinfo->rxevm[i]); |
---|
| 692 | + evm = rtl_evm_db_to_percentage(p_drvinfo->rxevm[i]); |
---|
763 | 693 | if (packet_match_bssid) { |
---|
764 | 694 | if (i == 0) |
---|
765 | 695 | pstats->signalquality = |
---|
.. | .. |
---|
771 | 701 | } |
---|
772 | 702 | if (is_cck_rate) |
---|
773 | 703 | pstats->signalstrength = |
---|
774 | | - (u8) (_rtl92c_signal_scale_mapping(hw, pwdb_all)); |
---|
| 704 | + (u8)(rtl_signal_scale_mapping(hw, pwdb_all)); |
---|
775 | 705 | else if (rf_rx_num != 0) |
---|
776 | 706 | pstats->signalstrength = |
---|
777 | | - (u8) (_rtl92c_signal_scale_mapping |
---|
778 | | - (hw, total_rssi /= rf_rx_num)); |
---|
| 707 | + (u8)(rtl_signal_scale_mapping(hw, total_rssi /= rf_rx_num)); |
---|
779 | 708 | } |
---|
780 | 709 | |
---|
781 | 710 | void rtl92c_translate_rx_signal_stuff(struct ieee80211_hw *hw, |
---|