diff options
author | David S. Miller <davem@davemloft.net> | 2015-06-23 04:03:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-06-23 04:03:18 -0400 |
commit | fa433354f042105fc7a299253f904bb48dae0950 (patch) | |
tree | 7dc747d4f994713699a37080b0774f8315a1e1ef /drivers/net/wireless/rtlwifi | |
parent | 10ea5165e44ec8467e393a84ecfbf5732605d504 (diff) | |
parent | 40b503c76481aecf811a29a14a80c13b429b5e14 (diff) |
Merge tag 'wireless-drivers-next-for-davem-2015-06-18' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says:
====================
Major changes:
mwifiex:
* enhancements for AP mode: support verbose information in station
dump command and also information about AP link.
* enable power save by default
brcmfmac:
* fix module reload issue for PCIe
* improving msgbuf protocol for PCIe devices
* rework .get_station() cfg80211 callback operation
* determine interface combinations upon device feature support
ath9k:
* ath9k_htc: add support of channel switch
wil6210:
* add modparam for bcast ring size
* support hidden SSID
* add per-MCS Rx stats
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/rtlwifi')
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8188ee/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 51 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/mac.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/phy.c | 28 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/rf.c | 22 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192de/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8723be/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8821ae/dm.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/wifi.h | 1 |
14 files changed, 63 insertions, 111 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c index d930c1f78721..ce4da9d79fbd 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c | |||
@@ -1123,23 +1123,22 @@ static void rtl88e_dm_init_txpower_tracking(struct ieee80211_hw *hw) | |||
1123 | void rtl88e_dm_check_txpower_tracking(struct ieee80211_hw *hw) | 1123 | void rtl88e_dm_check_txpower_tracking(struct ieee80211_hw *hw) |
1124 | { | 1124 | { |
1125 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1125 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1126 | static u8 tm_trigger; | ||
1127 | 1126 | ||
1128 | if (!rtlpriv->dm.txpower_tracking) | 1127 | if (!rtlpriv->dm.txpower_tracking) |
1129 | return; | 1128 | return; |
1130 | 1129 | ||
1131 | if (!tm_trigger) { | 1130 | if (!rtlpriv->dm.tm_trigger) { |
1132 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17)|BIT(16), | 1131 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17)|BIT(16), |
1133 | 0x03); | 1132 | 0x03); |
1134 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1133 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1135 | "Trigger 88E Thermal Meter!!\n"); | 1134 | "Trigger 88E Thermal Meter!!\n"); |
1136 | tm_trigger = 1; | 1135 | rtlpriv->dm.tm_trigger = 1; |
1137 | return; | 1136 | return; |
1138 | } else { | 1137 | } else { |
1139 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1138 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1140 | "Schedule TxPowerTracking !!\n"); | 1139 | "Schedule TxPowerTracking !!\n"); |
1141 | dm_txpower_track_cb_therm(hw); | 1140 | dm_txpower_track_cb_therm(hw); |
1142 | tm_trigger = 0; | 1141 | rtlpriv->dm.tm_trigger = 0; |
1143 | } | 1142 | } |
1144 | } | 1143 | } |
1145 | 1144 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c index f5ee67cda73a..0aca6f47487c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c +++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | |||
@@ -1169,23 +1169,22 @@ static void rtl92c_dm_check_txpower_tracking_thermal_meter( | |||
1169 | struct ieee80211_hw *hw) | 1169 | struct ieee80211_hw *hw) |
1170 | { | 1170 | { |
1171 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1171 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1172 | static u8 tm_trigger; | ||
1173 | 1172 | ||
1174 | if (!rtlpriv->dm.txpower_tracking) | 1173 | if (!rtlpriv->dm.txpower_tracking) |
1175 | return; | 1174 | return; |
1176 | 1175 | ||
1177 | if (!tm_trigger) { | 1176 | if (!rtlpriv->dm.tm_trigger) { |
1178 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, RFREG_OFFSET_MASK, | 1177 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, RFREG_OFFSET_MASK, |
1179 | 0x60); | 1178 | 0x60); |
1180 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1179 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1181 | "Trigger 92S Thermal Meter!!\n"); | 1180 | "Trigger 92S Thermal Meter!!\n"); |
1182 | tm_trigger = 1; | 1181 | rtlpriv->dm.tm_trigger = 1; |
1183 | return; | 1182 | return; |
1184 | } else { | 1183 | } else { |
1185 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1184 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1186 | "Schedule TxPowerTracking direct call!!\n"); | 1185 | "Schedule TxPowerTracking direct call!!\n"); |
1187 | rtl92c_dm_txpower_tracking_directcall(hw); | 1186 | rtl92c_dm_txpower_tracking_directcall(hw); |
1188 | tm_trigger = 0; | 1187 | rtlpriv->dm.tm_trigger = 0; |
1189 | } | 1188 | } |
1190 | } | 1189 | } |
1191 | 1190 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c index 29983bc96a89..14b819ea8b71 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c +++ b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c | |||
@@ -233,13 +233,14 @@ int rtl92c_download_fw(struct ieee80211_hw *hw) | |||
233 | pfwheader = (struct rtl92c_firmware_header *)rtlhal->pfirmware; | 233 | pfwheader = (struct rtl92c_firmware_header *)rtlhal->pfirmware; |
234 | pfwdata = (u8 *)rtlhal->pfirmware; | 234 | pfwdata = (u8 *)rtlhal->pfirmware; |
235 | fwsize = rtlhal->fwsize; | 235 | fwsize = rtlhal->fwsize; |
236 | |||
237 | if (IS_FW_HEADER_EXIST(pfwheader)) { | 236 | if (IS_FW_HEADER_EXIST(pfwheader)) { |
238 | RT_TRACE(rtlpriv, COMP_FW, DBG_DMESG, | 237 | RT_TRACE(rtlpriv, COMP_FW, DBG_DMESG, |
239 | "Firmware Version(%d), Signature(%#x),Size(%d)\n", | 238 | "Firmware Version(%d), Signature(%#x),Size(%d)\n", |
240 | pfwheader->version, pfwheader->signature, | 239 | pfwheader->version, pfwheader->signature, |
241 | (int)sizeof(struct rtl92c_firmware_header)); | 240 | (int)sizeof(struct rtl92c_firmware_header)); |
242 | 241 | ||
242 | rtlhal->fw_version = pfwheader->version; | ||
243 | rtlhal->fw_subversion = pfwheader->subversion; | ||
243 | pfwdata = pfwdata + sizeof(struct rtl92c_firmware_header); | 244 | pfwdata = pfwdata + sizeof(struct rtl92c_firmware_header); |
244 | fwsize = fwsize - sizeof(struct rtl92c_firmware_header); | 245 | fwsize = fwsize - sizeof(struct rtl92c_firmware_header); |
245 | } | 246 | } |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c index 189859617db8..767358a553fb 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | |||
@@ -840,6 +840,26 @@ static void _rtl92cu_init_wmac_setting(struct ieee80211_hw *hw) | |||
840 | rtl92c_set_data_filter(hw, value16); | 840 | rtl92c_set_data_filter(hw, value16); |
841 | } | 841 | } |
842 | 842 | ||
843 | static void _rtl92cu_init_beacon_parameters(struct ieee80211_hw *hw) | ||
844 | { | ||
845 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
846 | struct rtl_hal *rtlhal = rtl_hal(rtlpriv); | ||
847 | |||
848 | rtl_write_word(rtlpriv, REG_BCN_CTRL, 0x1010); | ||
849 | |||
850 | /* TODO: Remove these magic number */ | ||
851 | rtl_write_word(rtlpriv, REG_TBTT_PROHIBIT, 0x6404); | ||
852 | rtl_write_byte(rtlpriv, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME); | ||
853 | rtl_write_byte(rtlpriv, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME); | ||
854 | /* Change beacon AIFS to the largest number | ||
855 | * beacause test chip does not contension before sending beacon. | ||
856 | */ | ||
857 | if (IS_NORMAL_CHIP(rtlhal->version)) | ||
858 | rtl_write_word(rtlpriv, REG_BCNTCFG, 0x660F); | ||
859 | else | ||
860 | rtl_write_word(rtlpriv, REG_BCNTCFG, 0x66FF); | ||
861 | } | ||
862 | |||
843 | static int _rtl92cu_init_mac(struct ieee80211_hw *hw) | 863 | static int _rtl92cu_init_mac(struct ieee80211_hw *hw) |
844 | { | 864 | { |
845 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 865 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -887,7 +907,7 @@ static int _rtl92cu_init_mac(struct ieee80211_hw *hw) | |||
887 | _rtl92cu_init_usb_aggregation(hw); | 907 | _rtl92cu_init_usb_aggregation(hw); |
888 | rtlpriv->cfg->ops->set_bw_mode(hw, NL80211_CHAN_HT20); | 908 | rtlpriv->cfg->ops->set_bw_mode(hw, NL80211_CHAN_HT20); |
889 | rtl92c_set_min_space(hw, IS_92C_SERIAL(rtlhal->version)); | 909 | rtl92c_set_min_space(hw, IS_92C_SERIAL(rtlhal->version)); |
890 | rtl92c_init_beacon_parameters(hw, rtlhal->version); | 910 | _rtl92cu_init_beacon_parameters(hw); |
891 | rtl92c_init_ampdu_aggregation(hw); | 911 | rtl92c_init_ampdu_aggregation(hw); |
892 | rtl92c_init_beacon_max_error(hw); | 912 | rtl92c_init_beacon_max_error(hw); |
893 | return err; | 913 | return err; |
@@ -987,7 +1007,6 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw) | |||
987 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | 1007 | struct rtl_phy *rtlphy = &(rtlpriv->phy); |
988 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); | 1008 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); |
989 | int err = 0; | 1009 | int err = 0; |
990 | static bool iqk_initialized; | ||
991 | unsigned long flags; | 1010 | unsigned long flags; |
992 | 1011 | ||
993 | /* As this function can take a very long time (up to 350 ms) | 1012 | /* As this function can take a very long time (up to 350 ms) |
@@ -1038,11 +1057,11 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw) | |||
1038 | rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr); | 1057 | rtlpriv->cfg->ops->set_hw_reg(hw, HW_VAR_ETHER_ADDR, mac->mac_addr); |
1039 | if (ppsc->rfpwr_state == ERFON) { | 1058 | if (ppsc->rfpwr_state == ERFON) { |
1040 | rtl92c_phy_set_rfpath_switch(hw, 1); | 1059 | rtl92c_phy_set_rfpath_switch(hw, 1); |
1041 | if (iqk_initialized) { | 1060 | if (rtlphy->iqk_initialized) { |
1042 | rtl92c_phy_iq_calibrate(hw, true); | 1061 | rtl92c_phy_iq_calibrate(hw, true); |
1043 | } else { | 1062 | } else { |
1044 | rtl92c_phy_iq_calibrate(hw, false); | 1063 | rtl92c_phy_iq_calibrate(hw, false); |
1045 | iqk_initialized = true; | 1064 | rtlphy->iqk_initialized = true; |
1046 | } | 1065 | } |
1047 | rtl92c_dm_check_txpower_tracking(hw); | 1066 | rtl92c_dm_check_txpower_tracking(hw); |
1048 | rtl92c_phy_lc_calibrate(hw); | 1067 | rtl92c_phy_lc_calibrate(hw); |
@@ -1391,6 +1410,9 @@ void rtl92cu_card_disable(struct ieee80211_hw *hw) | |||
1391 | _CardDisableHWSM(hw); | 1410 | _CardDisableHWSM(hw); |
1392 | else | 1411 | else |
1393 | _CardDisableWithoutHWSM(hw); | 1412 | _CardDisableWithoutHWSM(hw); |
1413 | |||
1414 | /* after power off we should do iqk again */ | ||
1415 | rtlpriv->phy.iqk_initialized = false; | ||
1394 | } | 1416 | } |
1395 | 1417 | ||
1396 | void rtl92cu_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid) | 1418 | void rtl92cu_set_check_bssid(struct ieee80211_hw *hw, bool check_bssid) |
@@ -1451,25 +1473,6 @@ int rtl92cu_set_network_type(struct ieee80211_hw *hw, enum nl80211_iftype type) | |||
1451 | return 0; | 1473 | return 0; |
1452 | } | 1474 | } |
1453 | 1475 | ||
1454 | static void _InitBeaconParameters(struct ieee80211_hw *hw) | ||
1455 | { | ||
1456 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
1457 | struct rtl_hal *rtlhal = rtl_hal(rtlpriv); | ||
1458 | |||
1459 | rtl_write_word(rtlpriv, REG_BCN_CTRL, 0x1010); | ||
1460 | |||
1461 | /* TODO: Remove these magic number */ | ||
1462 | rtl_write_word(rtlpriv, REG_TBTT_PROHIBIT, 0x6404); | ||
1463 | rtl_write_byte(rtlpriv, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME); | ||
1464 | rtl_write_byte(rtlpriv, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME); | ||
1465 | /* Change beacon AIFS to the largest number | ||
1466 | * beacause test chip does not contension before sending beacon. */ | ||
1467 | if (IS_NORMAL_CHIP(rtlhal->version)) | ||
1468 | rtl_write_word(rtlpriv, REG_BCNTCFG, 0x660F); | ||
1469 | else | ||
1470 | rtl_write_word(rtlpriv, REG_BCNTCFG, 0x66FF); | ||
1471 | } | ||
1472 | |||
1473 | static void _beacon_function_enable(struct ieee80211_hw *hw) | 1476 | static void _beacon_function_enable(struct ieee80211_hw *hw) |
1474 | { | 1477 | { |
1475 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1478 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -1490,7 +1493,7 @@ void rtl92cu_set_beacon_related_registers(struct ieee80211_hw *hw) | |||
1490 | atim_window = 2; /*FIX MERGE */ | 1493 | atim_window = 2; /*FIX MERGE */ |
1491 | rtl_write_word(rtlpriv, REG_ATIMWND, atim_window); | 1494 | rtl_write_word(rtlpriv, REG_ATIMWND, atim_window); |
1492 | rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); | 1495 | rtl_write_word(rtlpriv, REG_BCN_INTERVAL, bcn_interval); |
1493 | _InitBeaconParameters(hw); | 1496 | _rtl92cu_init_beacon_parameters(hw); |
1494 | rtl_write_byte(rtlpriv, REG_SLOT, 0x09); | 1497 | rtl_write_byte(rtlpriv, REG_SLOT, 0x09); |
1495 | /* | 1498 | /* |
1496 | * Force beacon frame transmission even after receiving beacon frame | 1499 | * Force beacon frame transmission even after receiving beacon frame |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c index f3db6bc8596a..490a7cf7c702 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | |||
@@ -641,21 +641,6 @@ void rtl92c_init_retry_function(struct ieee80211_hw *hw) | |||
641 | rtl_write_byte(rtlpriv, REG_ACKTO, 0x40); | 641 | rtl_write_byte(rtlpriv, REG_ACKTO, 0x40); |
642 | } | 642 | } |
643 | 643 | ||
644 | void rtl92c_init_beacon_parameters(struct ieee80211_hw *hw, | ||
645 | enum version_8192c version) | ||
646 | { | ||
647 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
648 | struct rtl_hal *rtlhal = rtl_hal(rtlpriv); | ||
649 | |||
650 | rtl_write_word(rtlpriv, REG_TBTT_PROHIBIT, 0x6404);/* ms */ | ||
651 | rtl_write_byte(rtlpriv, REG_DRVERLYINT, DRIVER_EARLY_INT_TIME);/*ms*/ | ||
652 | rtl_write_byte(rtlpriv, REG_BCNDMATIM, BCN_DMA_ATIME_INT_TIME); | ||
653 | if (IS_NORMAL_CHIP(rtlhal->version)) | ||
654 | rtl_write_word(rtlpriv, REG_BCNTCFG, 0x660F); | ||
655 | else | ||
656 | rtl_write_word(rtlpriv, REG_BCNTCFG, 0x66FF); | ||
657 | } | ||
658 | |||
659 | void rtl92c_disable_fast_edca(struct ieee80211_hw *hw) | 644 | void rtl92c_disable_fast_edca(struct ieee80211_hw *hw) |
660 | { | 645 | { |
661 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 646 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.h b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.h index 58548e8f2c41..e34f0f14ccd7 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.h +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.h | |||
@@ -70,9 +70,6 @@ void rtl92c_init_beacon_max_error(struct ieee80211_hw *hw); | |||
70 | void rtl92c_init_rdg_setting(struct ieee80211_hw *hw); | 70 | void rtl92c_init_rdg_setting(struct ieee80211_hw *hw); |
71 | void rtl92c_init_retry_function(struct ieee80211_hw *hw); | 71 | void rtl92c_init_retry_function(struct ieee80211_hw *hw); |
72 | 72 | ||
73 | void rtl92c_init_beacon_parameters(struct ieee80211_hw *hw, | ||
74 | enum version_8192c version); | ||
75 | |||
76 | void rtl92c_disable_fast_edca(struct ieee80211_hw *hw); | 73 | void rtl92c_disable_fast_edca(struct ieee80211_hw *hw); |
77 | void rtl92c_set_min_space(struct ieee80211_hw *hw, bool is2T); | 74 | void rtl92c_set_min_space(struct ieee80211_hw *hw, bool is2T); |
78 | 75 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c b/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c index 12f6d474b492..c972fa50926d 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/phy.c | |||
@@ -108,13 +108,8 @@ void rtl92cu_phy_set_rf_reg(struct ieee80211_hw *hw, | |||
108 | bool rtl92cu_phy_mac_config(struct ieee80211_hw *hw) | 108 | bool rtl92cu_phy_mac_config(struct ieee80211_hw *hw) |
109 | { | 109 | { |
110 | bool rtstatus; | 110 | bool rtstatus; |
111 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
112 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | ||
113 | bool is92c = IS_92C_SERIAL(rtlhal->version); | ||
114 | 111 | ||
115 | rtstatus = _rtl92cu_phy_config_mac_with_headerfile(hw); | 112 | rtstatus = _rtl92cu_phy_config_mac_with_headerfile(hw); |
116 | if (is92c && IS_HARDWARE_TYPE_8192CE(rtlhal)) | ||
117 | rtl_write_byte(rtlpriv, 0x14, 0x71); | ||
118 | return rtstatus; | 113 | return rtstatus; |
119 | } | 114 | } |
120 | 115 | ||
@@ -122,7 +117,6 @@ bool rtl92cu_phy_bb_config(struct ieee80211_hw *hw) | |||
122 | { | 117 | { |
123 | bool rtstatus = true; | 118 | bool rtstatus = true; |
124 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 119 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
125 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | ||
126 | u16 regval; | 120 | u16 regval; |
127 | u32 regval32; | 121 | u32 regval32; |
128 | u8 b_reg_hwparafile = 1; | 122 | u8 b_reg_hwparafile = 1; |
@@ -134,17 +128,11 @@ bool rtl92cu_phy_bb_config(struct ieee80211_hw *hw) | |||
134 | rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL, 0x83); | 128 | rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL, 0x83); |
135 | rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL + 1, 0xdb); | 129 | rtl_write_byte(rtlpriv, REG_AFE_PLL_CTRL + 1, 0xdb); |
136 | rtl_write_byte(rtlpriv, REG_RF_CTRL, RF_EN | RF_RSTB | RF_SDMRSTB); | 130 | rtl_write_byte(rtlpriv, REG_RF_CTRL, RF_EN | RF_RSTB | RF_SDMRSTB); |
137 | if (IS_HARDWARE_TYPE_8192CE(rtlhal)) { | 131 | rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, FEN_USBA | FEN_USBD | |
138 | rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, FEN_PPLL | FEN_PCIEA | | 132 | FEN_BB_GLB_RSTn | FEN_BBRSTB); |
139 | FEN_DIO_PCIE | FEN_BB_GLB_RSTn | FEN_BBRSTB); | ||
140 | } else if (IS_HARDWARE_TYPE_8192CU(rtlhal)) { | ||
141 | rtl_write_byte(rtlpriv, REG_SYS_FUNC_EN, FEN_USBA | FEN_USBD | | ||
142 | FEN_BB_GLB_RSTn | FEN_BBRSTB); | ||
143 | } | ||
144 | regval32 = rtl_read_dword(rtlpriv, 0x87c); | 133 | regval32 = rtl_read_dword(rtlpriv, 0x87c); |
145 | rtl_write_dword(rtlpriv, 0x87c, regval32 & (~BIT(31))); | 134 | rtl_write_dword(rtlpriv, 0x87c, regval32 & (~BIT(31))); |
146 | if (IS_HARDWARE_TYPE_8192CU(rtlhal)) | 135 | rtl_write_byte(rtlpriv, REG_LDOHCI12_CTRL, 0x0f); |
147 | rtl_write_byte(rtlpriv, REG_LDOHCI12_CTRL, 0x0f); | ||
148 | rtl_write_byte(rtlpriv, REG_AFE_XTAL_CTRL + 1, 0x80); | 136 | rtl_write_byte(rtlpriv, REG_AFE_XTAL_CTRL + 1, 0x80); |
149 | if (b_reg_hwparafile == 1) | 137 | if (b_reg_hwparafile == 1) |
150 | rtstatus = _rtl92c_phy_bb8192c_config_parafile(hw); | 138 | rtstatus = _rtl92c_phy_bb8192c_config_parafile(hw); |
@@ -162,7 +150,7 @@ bool _rtl92cu_phy_config_mac_with_headerfile(struct ieee80211_hw *hw) | |||
162 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "Read Rtl819XMACPHY_Array\n"); | 150 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "Read Rtl819XMACPHY_Array\n"); |
163 | arraylength = rtlphy->hwparam_tables[MAC_REG].length ; | 151 | arraylength = rtlphy->hwparam_tables[MAC_REG].length ; |
164 | ptrarray = rtlphy->hwparam_tables[MAC_REG].pdata; | 152 | ptrarray = rtlphy->hwparam_tables[MAC_REG].pdata; |
165 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "Img:RTL8192CEMAC_2T_ARRAY\n"); | 153 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "Img:RTL8192CUMAC_2T_ARRAY\n"); |
166 | for (i = 0; i < arraylength; i = i + 2) | 154 | for (i = 0; i < arraylength; i = i + 2) |
167 | rtl_write_byte(rtlpriv, ptrarray[i], (u8) ptrarray[i + 1]); | 155 | rtl_write_byte(rtlpriv, ptrarray[i], (u8) ptrarray[i + 1]); |
168 | return true; | 156 | return true; |
@@ -259,18 +247,18 @@ bool rtl92cu_phy_config_rf_with_headerfile(struct ieee80211_hw *hw, | |||
259 | radiob_arraylen = rtlphy->hwparam_tables[RADIOB_2T].length; | 247 | radiob_arraylen = rtlphy->hwparam_tables[RADIOB_2T].length; |
260 | radiob_array_table = rtlphy->hwparam_tables[RADIOB_2T].pdata; | 248 | radiob_array_table = rtlphy->hwparam_tables[RADIOB_2T].pdata; |
261 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 249 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
262 | "Radio_A:RTL8192CERADIOA_2TARRAY\n"); | 250 | "Radio_A:RTL8192CURADIOA_2TARRAY\n"); |
263 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 251 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
264 | "Radio_B:RTL8192CE_RADIOB_2TARRAY\n"); | 252 | "Radio_B:RTL8192CU_RADIOB_2TARRAY\n"); |
265 | } else { | 253 | } else { |
266 | radioa_arraylen = rtlphy->hwparam_tables[RADIOA_1T].length; | 254 | radioa_arraylen = rtlphy->hwparam_tables[RADIOA_1T].length; |
267 | radioa_array_table = rtlphy->hwparam_tables[RADIOA_1T].pdata; | 255 | radioa_array_table = rtlphy->hwparam_tables[RADIOA_1T].pdata; |
268 | radiob_arraylen = rtlphy->hwparam_tables[RADIOB_1T].length; | 256 | radiob_arraylen = rtlphy->hwparam_tables[RADIOB_1T].length; |
269 | radiob_array_table = rtlphy->hwparam_tables[RADIOB_1T].pdata; | 257 | radiob_array_table = rtlphy->hwparam_tables[RADIOB_1T].pdata; |
270 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 258 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
271 | "Radio_A:RTL8192CE_RADIOA_1TARRAY\n"); | 259 | "Radio_A:RTL8192CU_RADIOA_1TARRAY\n"); |
272 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 260 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
273 | "Radio_B:RTL8192CE_RADIOB_1TARRAY\n"); | 261 | "Radio_B:RTL8192CU_RADIOB_1TARRAY\n"); |
274 | } | 262 | } |
275 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "Radio No %x\n", rfpath); | 263 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "Radio No %x\n", rfpath); |
276 | switch (rfpath) { | 264 | switch (rfpath) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/rf.c b/drivers/net/wireless/rtlwifi/rtl8192cu/rf.c index b878d56d2f4d..5624ade92cc0 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/rf.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/rf.c | |||
@@ -66,7 +66,6 @@ void rtl92cu_phy_rf6052_set_cck_txpower(struct ieee80211_hw *hw, | |||
66 | { | 66 | { |
67 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 67 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
68 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | 68 | struct rtl_phy *rtlphy = &(rtlpriv->phy); |
69 | struct rtl_hal *rtlhal = rtl_hal(rtlpriv); | ||
70 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 69 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
71 | struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); | 70 | struct rtl_efuse *rtlefuse = rtl_efuse(rtl_priv(hw)); |
72 | u32 tx_agc[2] = { 0, 0 }, tmpval = 0; | 71 | u32 tx_agc[2] = { 0, 0 }, tmpval = 0; |
@@ -74,14 +73,8 @@ void rtl92cu_phy_rf6052_set_cck_txpower(struct ieee80211_hw *hw, | |||
74 | u8 idx1, idx2; | 73 | u8 idx1, idx2; |
75 | u8 *ptr; | 74 | u8 *ptr; |
76 | 75 | ||
77 | if (rtlhal->interface == INTF_PCI) { | 76 | if ((rtlefuse->eeprom_regulatory != 0) || (rtlefuse->external_pa)) |
78 | if (rtlefuse->eeprom_regulatory != 0) | 77 | turbo_scanoff = true; |
79 | turbo_scanoff = true; | ||
80 | } else { | ||
81 | if ((rtlefuse->eeprom_regulatory != 0) || | ||
82 | (rtlefuse->external_pa)) | ||
83 | turbo_scanoff = true; | ||
84 | } | ||
85 | if (mac->act_scanning) { | 78 | if (mac->act_scanning) { |
86 | tx_agc[RF90_PATH_A] = 0x3f3f3f3f; | 79 | tx_agc[RF90_PATH_A] = 0x3f3f3f3f; |
87 | tx_agc[RF90_PATH_B] = 0x3f3f3f3f; | 80 | tx_agc[RF90_PATH_B] = 0x3f3f3f3f; |
@@ -90,11 +83,8 @@ void rtl92cu_phy_rf6052_set_cck_txpower(struct ieee80211_hw *hw, | |||
90 | (ppowerlevel[idx1] << 8) | | 83 | (ppowerlevel[idx1] << 8) | |
91 | (ppowerlevel[idx1] << 16) | | 84 | (ppowerlevel[idx1] << 16) | |
92 | (ppowerlevel[idx1] << 24); | 85 | (ppowerlevel[idx1] << 24); |
93 | if (rtlhal->interface == INTF_USB) { | 86 | if (tx_agc[idx1] > 0x20 && rtlefuse->external_pa) |
94 | if (tx_agc[idx1] > 0x20 && | 87 | tx_agc[idx1] = 0x20; |
95 | rtlefuse->external_pa) | ||
96 | tx_agc[idx1] = 0x20; | ||
97 | } | ||
98 | } | 88 | } |
99 | } else { | 89 | } else { |
100 | if (rtlpriv->dm.dynamic_txhighpower_lvl == | 90 | if (rtlpriv->dm.dynamic_txhighpower_lvl == |
@@ -452,9 +442,6 @@ static bool _rtl92c_phy_rf6052_config_parafile(struct ieee80211_hw *hw) | |||
452 | udelay(1); | 442 | udelay(1); |
453 | switch (rfpath) { | 443 | switch (rfpath) { |
454 | case RF90_PATH_A: | 444 | case RF90_PATH_A: |
455 | rtstatus = rtl92cu_phy_config_rf_with_headerfile(hw, | ||
456 | (enum radio_path) rfpath); | ||
457 | break; | ||
458 | case RF90_PATH_B: | 445 | case RF90_PATH_B: |
459 | rtstatus = rtl92cu_phy_config_rf_with_headerfile(hw, | 446 | rtstatus = rtl92cu_phy_config_rf_with_headerfile(hw, |
460 | (enum radio_path) rfpath); | 447 | (enum radio_path) rfpath); |
@@ -483,7 +470,6 @@ static bool _rtl92c_phy_rf6052_config_parafile(struct ieee80211_hw *hw) | |||
483 | } | 470 | } |
484 | } | 471 | } |
485 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "<---\n"); | 472 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "<---\n"); |
486 | return rtstatus; | ||
487 | phy_rf_cfg_fail: | 473 | phy_rf_cfg_fail: |
488 | return rtstatus; | 474 | return rtstatus; |
489 | } | 475 | } |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c index cbead007171f..95880fe4106e 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | |||
@@ -321,7 +321,7 @@ bool rtl92cu_rx_query_desc(struct ieee80211_hw *hw, | |||
321 | stats->rate = (u8) GET_RX_DESC_RX_MCS(pdesc); | 321 | stats->rate = (u8) GET_RX_DESC_RX_MCS(pdesc); |
322 | stats->shortpreamble = (u16) GET_RX_DESC_SPLCP(pdesc); | 322 | stats->shortpreamble = (u16) GET_RX_DESC_SPLCP(pdesc); |
323 | stats->isampdu = (bool) (GET_RX_DESC_PAGGR(pdesc) == 1); | 323 | stats->isampdu = (bool) (GET_RX_DESC_PAGGR(pdesc) == 1); |
324 | stats->isampdu = (bool) ((GET_RX_DESC_PAGGR(pdesc) == 1) | 324 | stats->isfirst_ampdu = (bool)((GET_RX_DESC_PAGGR(pdesc) == 1) |
325 | && (GET_RX_DESC_FAGGR(pdesc) == 1)); | 325 | && (GET_RX_DESC_FAGGR(pdesc) == 1)); |
326 | stats->timestamp_low = GET_RX_DESC_TSFL(pdesc); | 326 | stats->timestamp_low = GET_RX_DESC_TSFL(pdesc); |
327 | stats->rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(pdesc); | 327 | stats->rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(pdesc); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c index a1be5a68edfb..587b8c505a76 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c | |||
@@ -1240,23 +1240,22 @@ static void rtl92d_dm_initialize_txpower_tracking(struct ieee80211_hw *hw) | |||
1240 | void rtl92d_dm_check_txpower_tracking_thermal_meter(struct ieee80211_hw *hw) | 1240 | void rtl92d_dm_check_txpower_tracking_thermal_meter(struct ieee80211_hw *hw) |
1241 | { | 1241 | { |
1242 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1242 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1243 | static u8 tm_trigger; | ||
1244 | 1243 | ||
1245 | if (!rtlpriv->dm.txpower_tracking) | 1244 | if (!rtlpriv->dm.txpower_tracking) |
1246 | return; | 1245 | return; |
1247 | 1246 | ||
1248 | if (!tm_trigger) { | 1247 | if (!rtlpriv->dm.tm_trigger) { |
1249 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | | 1248 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | |
1250 | BIT(16), 0x03); | 1249 | BIT(16), 0x03); |
1251 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1250 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1252 | "Trigger 92S Thermal Meter!!\n"); | 1251 | "Trigger 92S Thermal Meter!!\n"); |
1253 | tm_trigger = 1; | 1252 | rtlpriv->dm.tm_trigger = 1; |
1254 | return; | 1253 | return; |
1255 | } else { | 1254 | } else { |
1256 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1255 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1257 | "Schedule TxPowerTracking direct call!!\n"); | 1256 | "Schedule TxPowerTracking direct call!!\n"); |
1258 | rtl92d_dm_txpower_tracking_callback_thermalmeter(hw); | 1257 | rtl92d_dm_txpower_tracking_callback_thermalmeter(hw); |
1259 | tm_trigger = 0; | 1258 | rtlpriv->dm.tm_trigger = 0; |
1260 | } | 1259 | } |
1261 | } | 1260 | } |
1262 | 1261 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c index 575980b88658..9bae5a92e30f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c | |||
@@ -200,7 +200,6 @@ static void _rtl92s_dm_check_txpowertracking_thermalmeter( | |||
200 | { | 200 | { |
201 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 201 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
202 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | 202 | struct rtl_phy *rtlphy = &(rtlpriv->phy); |
203 | static u8 tm_trigger; | ||
204 | u8 tx_power_checkcnt = 5; | 203 | u8 tx_power_checkcnt = 5; |
205 | 204 | ||
206 | /* 2T2R TP issue */ | 205 | /* 2T2R TP issue */ |
@@ -215,13 +214,13 @@ static void _rtl92s_dm_check_txpowertracking_thermalmeter( | |||
215 | return; | 214 | return; |
216 | } | 215 | } |
217 | 216 | ||
218 | if (!tm_trigger) { | 217 | if (!rtlpriv->dm.tm_trigger) { |
219 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, | 218 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, |
220 | RFREG_OFFSET_MASK, 0x60); | 219 | RFREG_OFFSET_MASK, 0x60); |
221 | tm_trigger = 1; | 220 | rtlpriv->dm.tm_trigger = 1; |
222 | } else { | 221 | } else { |
223 | _rtl92s_dm_txpowertracking_callback_thermalmeter(hw); | 222 | _rtl92s_dm_txpowertracking_callback_thermalmeter(hw); |
224 | tm_trigger = 0; | 223 | rtlpriv->dm.tm_trigger = 0; |
225 | } | 224 | } |
226 | } | 225 | } |
227 | 226 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c index e77c3a46c94a..3a81cdba8ca3 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c | |||
@@ -909,23 +909,22 @@ static void rtl8723be_dm_txpower_tracking_callback_thermalmeter( | |||
909 | void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw) | 909 | void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw) |
910 | { | 910 | { |
911 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 911 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
912 | static u8 tm_trigger; | ||
913 | 912 | ||
914 | if (!rtlpriv->dm.txpower_tracking) | 913 | if (!rtlpriv->dm.txpower_tracking) |
915 | return; | 914 | return; |
916 | 915 | ||
917 | if (!tm_trigger) { | 916 | if (!rtlpriv->dm.tm_trigger) { |
918 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | BIT(16), | 917 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | BIT(16), |
919 | 0x03); | 918 | 0x03); |
920 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 919 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
921 | "Trigger 8723be Thermal Meter!!\n"); | 920 | "Trigger 8723be Thermal Meter!!\n"); |
922 | tm_trigger = 1; | 921 | rtlpriv->dm.tm_trigger = 1; |
923 | return; | 922 | return; |
924 | } else { | 923 | } else { |
925 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 924 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
926 | "Schedule TxPowerTracking !!\n"); | 925 | "Schedule TxPowerTracking !!\n"); |
927 | rtl8723be_dm_txpower_tracking_callback_thermalmeter(hw); | 926 | rtl8723be_dm_txpower_tracking_callback_thermalmeter(hw); |
928 | tm_trigger = 0; | 927 | rtlpriv->dm.tm_trigger = 0; |
929 | } | 928 | } |
930 | } | 929 | } |
931 | 930 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c index 342678d2ed42..b57cfd965196 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c | |||
@@ -1068,20 +1068,18 @@ static void rtl8812ae_dm_check_txpower_tracking_thermalmeter( | |||
1068 | struct ieee80211_hw *hw) | 1068 | struct ieee80211_hw *hw) |
1069 | { | 1069 | { |
1070 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1070 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1071 | static u8 tm_trigger; | ||
1072 | 1071 | ||
1073 | if (!tm_trigger) { | 1072 | if (!rtlpriv->dm.tm_trigger) { |
1074 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, | 1073 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, |
1075 | BIT(17) | BIT(16), 0x03); | 1074 | BIT(17) | BIT(16), 0x03); |
1076 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1075 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1077 | "Trigger 8812 Thermal Meter!!\n"); | 1076 | "Trigger 8812 Thermal Meter!!\n"); |
1078 | tm_trigger = 1; | 1077 | rtlpriv->dm.tm_trigger = 1; |
1079 | return; | 1078 | return; |
1080 | } | 1079 | } |
1081 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 1080 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
1082 | "Schedule TxPowerTracking direct call!!\n"); | 1081 | "Schedule TxPowerTracking direct call!!\n"); |
1083 | rtl8812ae_dm_txpower_tracking_callback_thermalmeter(hw); | 1082 | rtl8812ae_dm_txpower_tracking_callback_thermalmeter(hw); |
1084 | tm_trigger = 0; | ||
1085 | } | 1083 | } |
1086 | 1084 | ||
1087 | static void rtl8821ae_dm_iq_calibrate(struct ieee80211_hw *hw) | 1085 | static void rtl8821ae_dm_iq_calibrate(struct ieee80211_hw *hw) |
@@ -2519,21 +2517,19 @@ void rtl8821ae_dm_txpower_tracking_callback_thermalmeter( | |||
2519 | void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw) | 2517 | void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw) |
2520 | { | 2518 | { |
2521 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 2519 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
2522 | static u8 tm_trigger; | 2520 | if (!rtlpriv->dm.tm_trigger) { |
2523 | |||
2524 | if (!tm_trigger) { | ||
2525 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, BIT(17)|BIT(16), | 2521 | rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, BIT(17)|BIT(16), |
2526 | 0x03); | 2522 | 0x03); |
2527 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 2523 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
2528 | "Trigger 8821ae Thermal Meter!!\n"); | 2524 | "Trigger 8821ae Thermal Meter!!\n"); |
2529 | tm_trigger = 1; | 2525 | rtlpriv->dm.tm_trigger = 1; |
2530 | return; | 2526 | return; |
2531 | } else { | 2527 | } else { |
2532 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, | 2528 | RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, |
2533 | "Schedule TxPowerTracking !!\n"); | 2529 | "Schedule TxPowerTracking !!\n"); |
2534 | 2530 | ||
2535 | rtl8821ae_dm_txpower_tracking_callback_thermalmeter(hw); | 2531 | rtl8821ae_dm_txpower_tracking_callback_thermalmeter(hw); |
2536 | tm_trigger = 0; | 2532 | rtlpriv->dm.tm_trigger = 0; |
2537 | } | 2533 | } |
2538 | } | 2534 | } |
2539 | 2535 | ||
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h index 51572912c53d..2b770b5e2620 100644 --- a/drivers/net/wireless/rtlwifi/wifi.h +++ b/drivers/net/wireless/rtlwifi/wifi.h | |||
@@ -1665,6 +1665,7 @@ struct rtl_dm { | |||
1665 | u8 last_dtp_lvl; | 1665 | u8 last_dtp_lvl; |
1666 | u8 thermalvalue_avg[AVG_THERMAL_NUM]; | 1666 | u8 thermalvalue_avg[AVG_THERMAL_NUM]; |
1667 | u8 thermalvalue_avg_index; | 1667 | u8 thermalvalue_avg_index; |
1668 | u8 tm_trigger; | ||
1668 | bool done_txpower; | 1669 | bool done_txpower; |
1669 | u8 dynamic_txhighpower_lvl; /*Tx high power level */ | 1670 | u8 dynamic_txhighpower_lvl; /*Tx high power level */ |
1670 | u8 dm_flag; /*Indicate each dynamic mechanism's status. */ | 1671 | u8 dm_flag; /*Indicate each dynamic mechanism's status. */ |