diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi')
51 files changed, 591 insertions, 1884 deletions
diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c index 40b6d1d006d7..1d4677460711 100644 --- a/drivers/net/wireless/rtlwifi/base.c +++ b/drivers/net/wireless/rtlwifi/base.c | |||
@@ -867,63 +867,135 @@ static u8 _rtl_get_highest_n_rate(struct ieee80211_hw *hw, | |||
867 | * | 867 | * |
868 | * B/G rate: | 868 | * B/G rate: |
869 | * (rx_status->flag & RX_FLAG_HT) = 0, | 869 | * (rx_status->flag & RX_FLAG_HT) = 0, |
870 | * DESC92_RATE1M-->DESC92_RATE54M ==> idx is 0-->11, | 870 | * DESC_RATE1M-->DESC_RATE54M ==> idx is 0-->11, |
871 | * | 871 | * |
872 | * N rate: | 872 | * N rate: |
873 | * (rx_status->flag & RX_FLAG_HT) = 1, | 873 | * (rx_status->flag & RX_FLAG_HT) = 1, |
874 | * DESC92_RATEMCS0-->DESC92_RATEMCS15 ==> idx is 0-->15 | 874 | * DESC_RATEMCS0-->DESC_RATEMCS15 ==> idx is 0-->15 |
875 | * | 875 | * |
876 | * 5G band:rx_status->band == IEEE80211_BAND_5GHZ | 876 | * 5G band:rx_status->band == IEEE80211_BAND_5GHZ |
877 | * A rate: | 877 | * A rate: |
878 | * (rx_status->flag & RX_FLAG_HT) = 0, | 878 | * (rx_status->flag & RX_FLAG_HT) = 0, |
879 | * DESC92_RATE6M-->DESC92_RATE54M ==> idx is 0-->7, | 879 | * DESC_RATE6M-->DESC_RATE54M ==> idx is 0-->7, |
880 | * | 880 | * |
881 | * N rate: | 881 | * N rate: |
882 | * (rx_status->flag & RX_FLAG_HT) = 1, | 882 | * (rx_status->flag & RX_FLAG_HT) = 1, |
883 | * DESC92_RATEMCS0-->DESC92_RATEMCS15 ==> idx is 0-->15 | 883 | * DESC_RATEMCS0-->DESC_RATEMCS15 ==> idx is 0-->15 |
884 | * | ||
885 | * VHT rates: | ||
886 | * DESC_RATEVHT1SS_MCS0-->DESC_RATEVHT1SS_MCS9 ==> idx is 0-->9 | ||
887 | * DESC_RATEVHT2SS_MCS0-->DESC_RATEVHT2SS_MCS9 ==> idx is 0-->9 | ||
884 | */ | 888 | */ |
885 | int rtlwifi_rate_mapping(struct ieee80211_hw *hw, | 889 | int rtlwifi_rate_mapping(struct ieee80211_hw *hw, bool isht, bool isvht, |
886 | bool isht, u8 desc_rate, bool first_ampdu) | 890 | u8 desc_rate) |
887 | { | 891 | { |
888 | int rate_idx; | 892 | int rate_idx; |
889 | 893 | ||
894 | if (isvht) { | ||
895 | switch (desc_rate) { | ||
896 | case DESC_RATEVHT1SS_MCS0: | ||
897 | rate_idx = 0; | ||
898 | break; | ||
899 | case DESC_RATEVHT1SS_MCS1: | ||
900 | rate_idx = 1; | ||
901 | break; | ||
902 | case DESC_RATEVHT1SS_MCS2: | ||
903 | rate_idx = 2; | ||
904 | break; | ||
905 | case DESC_RATEVHT1SS_MCS3: | ||
906 | rate_idx = 3; | ||
907 | break; | ||
908 | case DESC_RATEVHT1SS_MCS4: | ||
909 | rate_idx = 4; | ||
910 | break; | ||
911 | case DESC_RATEVHT1SS_MCS5: | ||
912 | rate_idx = 5; | ||
913 | break; | ||
914 | case DESC_RATEVHT1SS_MCS6: | ||
915 | rate_idx = 6; | ||
916 | break; | ||
917 | case DESC_RATEVHT1SS_MCS7: | ||
918 | rate_idx = 7; | ||
919 | break; | ||
920 | case DESC_RATEVHT1SS_MCS8: | ||
921 | rate_idx = 8; | ||
922 | break; | ||
923 | case DESC_RATEVHT1SS_MCS9: | ||
924 | rate_idx = 9; | ||
925 | break; | ||
926 | case DESC_RATEVHT2SS_MCS0: | ||
927 | rate_idx = 0; | ||
928 | break; | ||
929 | case DESC_RATEVHT2SS_MCS1: | ||
930 | rate_idx = 1; | ||
931 | break; | ||
932 | case DESC_RATEVHT2SS_MCS2: | ||
933 | rate_idx = 2; | ||
934 | break; | ||
935 | case DESC_RATEVHT2SS_MCS3: | ||
936 | rate_idx = 3; | ||
937 | break; | ||
938 | case DESC_RATEVHT2SS_MCS4: | ||
939 | rate_idx = 4; | ||
940 | break; | ||
941 | case DESC_RATEVHT2SS_MCS5: | ||
942 | rate_idx = 5; | ||
943 | break; | ||
944 | case DESC_RATEVHT2SS_MCS6: | ||
945 | rate_idx = 6; | ||
946 | break; | ||
947 | case DESC_RATEVHT2SS_MCS7: | ||
948 | rate_idx = 7; | ||
949 | break; | ||
950 | case DESC_RATEVHT2SS_MCS8: | ||
951 | rate_idx = 8; | ||
952 | break; | ||
953 | case DESC_RATEVHT2SS_MCS9: | ||
954 | rate_idx = 9; | ||
955 | break; | ||
956 | default: | ||
957 | rate_idx = 0; | ||
958 | break; | ||
959 | } | ||
960 | return rate_idx; | ||
961 | } | ||
890 | if (false == isht) { | 962 | if (false == isht) { |
891 | if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { | 963 | if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { |
892 | switch (desc_rate) { | 964 | switch (desc_rate) { |
893 | case DESC92_RATE1M: | 965 | case DESC_RATE1M: |
894 | rate_idx = 0; | 966 | rate_idx = 0; |
895 | break; | 967 | break; |
896 | case DESC92_RATE2M: | 968 | case DESC_RATE2M: |
897 | rate_idx = 1; | 969 | rate_idx = 1; |
898 | break; | 970 | break; |
899 | case DESC92_RATE5_5M: | 971 | case DESC_RATE5_5M: |
900 | rate_idx = 2; | 972 | rate_idx = 2; |
901 | break; | 973 | break; |
902 | case DESC92_RATE11M: | 974 | case DESC_RATE11M: |
903 | rate_idx = 3; | 975 | rate_idx = 3; |
904 | break; | 976 | break; |
905 | case DESC92_RATE6M: | 977 | case DESC_RATE6M: |
906 | rate_idx = 4; | 978 | rate_idx = 4; |
907 | break; | 979 | break; |
908 | case DESC92_RATE9M: | 980 | case DESC_RATE9M: |
909 | rate_idx = 5; | 981 | rate_idx = 5; |
910 | break; | 982 | break; |
911 | case DESC92_RATE12M: | 983 | case DESC_RATE12M: |
912 | rate_idx = 6; | 984 | rate_idx = 6; |
913 | break; | 985 | break; |
914 | case DESC92_RATE18M: | 986 | case DESC_RATE18M: |
915 | rate_idx = 7; | 987 | rate_idx = 7; |
916 | break; | 988 | break; |
917 | case DESC92_RATE24M: | 989 | case DESC_RATE24M: |
918 | rate_idx = 8; | 990 | rate_idx = 8; |
919 | break; | 991 | break; |
920 | case DESC92_RATE36M: | 992 | case DESC_RATE36M: |
921 | rate_idx = 9; | 993 | rate_idx = 9; |
922 | break; | 994 | break; |
923 | case DESC92_RATE48M: | 995 | case DESC_RATE48M: |
924 | rate_idx = 10; | 996 | rate_idx = 10; |
925 | break; | 997 | break; |
926 | case DESC92_RATE54M: | 998 | case DESC_RATE54M: |
927 | rate_idx = 11; | 999 | rate_idx = 11; |
928 | break; | 1000 | break; |
929 | default: | 1001 | default: |
@@ -932,28 +1004,28 @@ int rtlwifi_rate_mapping(struct ieee80211_hw *hw, | |||
932 | } | 1004 | } |
933 | } else { | 1005 | } else { |
934 | switch (desc_rate) { | 1006 | switch (desc_rate) { |
935 | case DESC92_RATE6M: | 1007 | case DESC_RATE6M: |
936 | rate_idx = 0; | 1008 | rate_idx = 0; |
937 | break; | 1009 | break; |
938 | case DESC92_RATE9M: | 1010 | case DESC_RATE9M: |
939 | rate_idx = 1; | 1011 | rate_idx = 1; |
940 | break; | 1012 | break; |
941 | case DESC92_RATE12M: | 1013 | case DESC_RATE12M: |
942 | rate_idx = 2; | 1014 | rate_idx = 2; |
943 | break; | 1015 | break; |
944 | case DESC92_RATE18M: | 1016 | case DESC_RATE18M: |
945 | rate_idx = 3; | 1017 | rate_idx = 3; |
946 | break; | 1018 | break; |
947 | case DESC92_RATE24M: | 1019 | case DESC_RATE24M: |
948 | rate_idx = 4; | 1020 | rate_idx = 4; |
949 | break; | 1021 | break; |
950 | case DESC92_RATE36M: | 1022 | case DESC_RATE36M: |
951 | rate_idx = 5; | 1023 | rate_idx = 5; |
952 | break; | 1024 | break; |
953 | case DESC92_RATE48M: | 1025 | case DESC_RATE48M: |
954 | rate_idx = 6; | 1026 | rate_idx = 6; |
955 | break; | 1027 | break; |
956 | case DESC92_RATE54M: | 1028 | case DESC_RATE54M: |
957 | rate_idx = 7; | 1029 | rate_idx = 7; |
958 | break; | 1030 | break; |
959 | default: | 1031 | default: |
@@ -963,52 +1035,52 @@ int rtlwifi_rate_mapping(struct ieee80211_hw *hw, | |||
963 | } | 1035 | } |
964 | } else { | 1036 | } else { |
965 | switch (desc_rate) { | 1037 | switch (desc_rate) { |
966 | case DESC92_RATEMCS0: | 1038 | case DESC_RATEMCS0: |
967 | rate_idx = 0; | 1039 | rate_idx = 0; |
968 | break; | 1040 | break; |
969 | case DESC92_RATEMCS1: | 1041 | case DESC_RATEMCS1: |
970 | rate_idx = 1; | 1042 | rate_idx = 1; |
971 | break; | 1043 | break; |
972 | case DESC92_RATEMCS2: | 1044 | case DESC_RATEMCS2: |
973 | rate_idx = 2; | 1045 | rate_idx = 2; |
974 | break; | 1046 | break; |
975 | case DESC92_RATEMCS3: | 1047 | case DESC_RATEMCS3: |
976 | rate_idx = 3; | 1048 | rate_idx = 3; |
977 | break; | 1049 | break; |
978 | case DESC92_RATEMCS4: | 1050 | case DESC_RATEMCS4: |
979 | rate_idx = 4; | 1051 | rate_idx = 4; |
980 | break; | 1052 | break; |
981 | case DESC92_RATEMCS5: | 1053 | case DESC_RATEMCS5: |
982 | rate_idx = 5; | 1054 | rate_idx = 5; |
983 | break; | 1055 | break; |
984 | case DESC92_RATEMCS6: | 1056 | case DESC_RATEMCS6: |
985 | rate_idx = 6; | 1057 | rate_idx = 6; |
986 | break; | 1058 | break; |
987 | case DESC92_RATEMCS7: | 1059 | case DESC_RATEMCS7: |
988 | rate_idx = 7; | 1060 | rate_idx = 7; |
989 | break; | 1061 | break; |
990 | case DESC92_RATEMCS8: | 1062 | case DESC_RATEMCS8: |
991 | rate_idx = 8; | 1063 | rate_idx = 8; |
992 | break; | 1064 | break; |
993 | case DESC92_RATEMCS9: | 1065 | case DESC_RATEMCS9: |
994 | rate_idx = 9; | 1066 | rate_idx = 9; |
995 | break; | 1067 | break; |
996 | case DESC92_RATEMCS10: | 1068 | case DESC_RATEMCS10: |
997 | rate_idx = 10; | 1069 | rate_idx = 10; |
998 | break; | 1070 | break; |
999 | case DESC92_RATEMCS11: | 1071 | case DESC_RATEMCS11: |
1000 | rate_idx = 11; | 1072 | rate_idx = 11; |
1001 | break; | 1073 | break; |
1002 | case DESC92_RATEMCS12: | 1074 | case DESC_RATEMCS12: |
1003 | rate_idx = 12; | 1075 | rate_idx = 12; |
1004 | break; | 1076 | break; |
1005 | case DESC92_RATEMCS13: | 1077 | case DESC_RATEMCS13: |
1006 | rate_idx = 13; | 1078 | rate_idx = 13; |
1007 | break; | 1079 | break; |
1008 | case DESC92_RATEMCS14: | 1080 | case DESC_RATEMCS14: |
1009 | rate_idx = 14; | 1081 | rate_idx = 14; |
1010 | break; | 1082 | break; |
1011 | case DESC92_RATEMCS15: | 1083 | case DESC_RATEMCS15: |
1012 | rate_idx = 15; | 1084 | rate_idx = 15; |
1013 | break; | 1085 | break; |
1014 | default: | 1086 | default: |
diff --git a/drivers/net/wireless/rtlwifi/base.h b/drivers/net/wireless/rtlwifi/base.h index 982f2450feea..c6cb49c3ee32 100644 --- a/drivers/net/wireless/rtlwifi/base.h +++ b/drivers/net/wireless/rtlwifi/base.h | |||
@@ -123,8 +123,8 @@ void rtl_watch_dog_timer_callback(unsigned long data); | |||
123 | void rtl_deinit_deferred_work(struct ieee80211_hw *hw); | 123 | void rtl_deinit_deferred_work(struct ieee80211_hw *hw); |
124 | 124 | ||
125 | bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx); | 125 | bool rtl_action_proc(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx); |
126 | int rtlwifi_rate_mapping(struct ieee80211_hw *hw, | 126 | int rtlwifi_rate_mapping(struct ieee80211_hw *hw, bool isht, |
127 | bool isht, u8 desc_rate, bool first_ampdu); | 127 | bool isvht, u8 desc_rate); |
128 | bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb); | 128 | bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb); |
129 | u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx); | 129 | u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx); |
130 | 130 | ||
diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c index 5fc6f52641bd..eb203163ed05 100644 --- a/drivers/net/wireless/rtlwifi/core.c +++ b/drivers/net/wireless/rtlwifi/core.c | |||
@@ -95,7 +95,8 @@ void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data) | |||
95 | } | 95 | } |
96 | EXPORT_SYMBOL(rtl_bb_delay); | 96 | EXPORT_SYMBOL(rtl_bb_delay); |
97 | 97 | ||
98 | void rtl_fw_cb(const struct firmware *firmware, void *context) | 98 | static void rtl_fw_do_work(const struct firmware *firmware, void *context, |
99 | bool is_wow) | ||
99 | { | 100 | { |
100 | struct ieee80211_hw *hw = context; | 101 | struct ieee80211_hw *hw = context; |
101 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 102 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -125,12 +126,31 @@ found_alt: | |||
125 | release_firmware(firmware); | 126 | release_firmware(firmware); |
126 | return; | 127 | return; |
127 | } | 128 | } |
128 | memcpy(rtlpriv->rtlhal.pfirmware, firmware->data, firmware->size); | 129 | if (!is_wow) { |
130 | memcpy(rtlpriv->rtlhal.pfirmware, firmware->data, | ||
131 | firmware->size); | ||
132 | rtlpriv->rtlhal.fwsize = firmware->size; | ||
133 | } else { | ||
134 | memcpy(rtlpriv->rtlhal.wowlan_firmware, firmware->data, | ||
135 | firmware->size); | ||
136 | rtlpriv->rtlhal.wowlan_fwsize = firmware->size; | ||
137 | } | ||
129 | rtlpriv->rtlhal.fwsize = firmware->size; | 138 | rtlpriv->rtlhal.fwsize = firmware->size; |
130 | release_firmware(firmware); | 139 | release_firmware(firmware); |
131 | } | 140 | } |
141 | |||
142 | void rtl_fw_cb(const struct firmware *firmware, void *context) | ||
143 | { | ||
144 | rtl_fw_do_work(firmware, context, false); | ||
145 | } | ||
132 | EXPORT_SYMBOL(rtl_fw_cb); | 146 | EXPORT_SYMBOL(rtl_fw_cb); |
133 | 147 | ||
148 | void rtl_wowlan_fw_cb(const struct firmware *firmware, void *context) | ||
149 | { | ||
150 | rtl_fw_do_work(firmware, context, true); | ||
151 | } | ||
152 | EXPORT_SYMBOL(rtl_wowlan_fw_cb); | ||
153 | |||
134 | /*mutex for start & stop is must here. */ | 154 | /*mutex for start & stop is must here. */ |
135 | static int rtl_op_start(struct ieee80211_hw *hw) | 155 | static int rtl_op_start(struct ieee80211_hw *hw) |
136 | { | 156 | { |
@@ -1851,3 +1871,40 @@ bool rtl_btc_status_false(void) | |||
1851 | return false; | 1871 | return false; |
1852 | } | 1872 | } |
1853 | EXPORT_SYMBOL_GPL(rtl_btc_status_false); | 1873 | EXPORT_SYMBOL_GPL(rtl_btc_status_false); |
1874 | |||
1875 | void rtl_dm_diginit(struct ieee80211_hw *hw, u32 cur_igvalue) | ||
1876 | { | ||
1877 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
1878 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
1879 | |||
1880 | dm_digtable->dig_enable_flag = true; | ||
1881 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | ||
1882 | dm_digtable->cur_igvalue = cur_igvalue; | ||
1883 | dm_digtable->pre_igvalue = 0; | ||
1884 | dm_digtable->cur_sta_cstate = DIG_STA_DISCONNECT; | ||
1885 | dm_digtable->presta_cstate = DIG_STA_DISCONNECT; | ||
1886 | dm_digtable->curmultista_cstate = DIG_MULTISTA_DISCONNECT; | ||
1887 | dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
1888 | dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
1889 | dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
1890 | dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
1891 | dm_digtable->rx_gain_max = DM_DIG_MAX; | ||
1892 | dm_digtable->rx_gain_min = DM_DIG_MIN; | ||
1893 | dm_digtable->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
1894 | dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX; | ||
1895 | dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN; | ||
1896 | dm_digtable->pre_cck_cca_thres = 0xff; | ||
1897 | dm_digtable->cur_cck_cca_thres = 0x83; | ||
1898 | dm_digtable->forbidden_igi = DM_DIG_MIN; | ||
1899 | dm_digtable->large_fa_hit = 0; | ||
1900 | dm_digtable->recover_cnt = 0; | ||
1901 | dm_digtable->dig_min_0 = 0x25; | ||
1902 | dm_digtable->dig_min_1 = 0x25; | ||
1903 | dm_digtable->media_connect_0 = false; | ||
1904 | dm_digtable->media_connect_1 = false; | ||
1905 | rtlpriv->dm.dm_initialgain_enable = true; | ||
1906 | dm_digtable->bt30_cur_igi = 0x32; | ||
1907 | dm_digtable->pre_cck_pd_state = CCK_PD_STAGE_MAX; | ||
1908 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_LOWRSSI; | ||
1909 | } | ||
1910 | EXPORT_SYMBOL(rtl_dm_diginit); | ||
diff --git a/drivers/net/wireless/rtlwifi/core.h b/drivers/net/wireless/rtlwifi/core.h index 624e1dc16d31..7b64e34f421e 100644 --- a/drivers/net/wireless/rtlwifi/core.h +++ b/drivers/net/wireless/rtlwifi/core.h | |||
@@ -35,13 +35,55 @@ | |||
35 | 35 | ||
36 | #define RTL_SUPPORTED_CTRL_FILTER 0xFF | 36 | #define RTL_SUPPORTED_CTRL_FILTER 0xFF |
37 | 37 | ||
38 | #define DM_DIG_THRESH_HIGH 40 | ||
39 | #define DM_DIG_THRESH_LOW 35 | ||
40 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
41 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
42 | |||
43 | #define DM_DIG_MAX 0x3e | ||
44 | #define DM_DIG_MIN 0x1e | ||
45 | #define DM_DIG_MAX_AP 0x32 | ||
46 | #define DM_DIG_BACKOFF_MAX 12 | ||
47 | #define DM_DIG_BACKOFF_MIN -4 | ||
48 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
49 | |||
50 | enum cck_packet_detection_threshold { | ||
51 | CCK_PD_STAGE_LOWRSSI = 0, | ||
52 | CCK_PD_STAGE_HIGHRSSI = 1, | ||
53 | CCK_FA_STAGE_LOW = 2, | ||
54 | CCK_FA_STAGE_HIGH = 3, | ||
55 | CCK_PD_STAGE_MAX = 4, | ||
56 | }; | ||
57 | |||
58 | enum dm_dig_ext_port_alg_e { | ||
59 | DIG_EXT_PORT_STAGE_0 = 0, | ||
60 | DIG_EXT_PORT_STAGE_1 = 1, | ||
61 | DIG_EXT_PORT_STAGE_2 = 2, | ||
62 | DIG_EXT_PORT_STAGE_3 = 3, | ||
63 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
64 | }; | ||
65 | |||
66 | enum dm_dig_connect_e { | ||
67 | DIG_STA_DISCONNECT, | ||
68 | DIG_STA_CONNECT, | ||
69 | DIG_STA_BEFORE_CONNECT, | ||
70 | DIG_MULTISTA_DISCONNECT, | ||
71 | DIG_MULTISTA_CONNECT, | ||
72 | DIG_AP_DISCONNECT, | ||
73 | DIG_AP_CONNECT, | ||
74 | DIG_AP_ADD_STATION, | ||
75 | DIG_CONNECT_MAX | ||
76 | }; | ||
77 | |||
38 | extern const struct ieee80211_ops rtl_ops; | 78 | extern const struct ieee80211_ops rtl_ops; |
39 | void rtl_fw_cb(const struct firmware *firmware, void *context); | 79 | void rtl_fw_cb(const struct firmware *firmware, void *context); |
80 | void rtl_wowlan_fw_cb(const struct firmware *firmware, void *context); | ||
40 | void rtl_addr_delay(u32 addr); | 81 | void rtl_addr_delay(u32 addr); |
41 | void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr, | 82 | void rtl_rfreg_delay(struct ieee80211_hw *hw, enum radio_path rfpath, u32 addr, |
42 | u32 mask, u32 data); | 83 | u32 mask, u32 data); |
43 | void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data); | 84 | void rtl_bb_delay(struct ieee80211_hw *hw, u32 addr, u32 data); |
44 | bool rtl_cmd_send_packet(struct ieee80211_hw *hw, struct sk_buff *skb); | 85 | bool rtl_cmd_send_packet(struct ieee80211_hw *hw, struct sk_buff *skb); |
45 | bool rtl_btc_status_false(void); | 86 | bool rtl_btc_status_false(void); |
87 | void rtl_dm_diginit(struct ieee80211_hw *hw, u32 cur_igval); | ||
46 | 88 | ||
47 | #endif | 89 | #endif |
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c index 2aa34d9055f0..d930c1f78721 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "../wifi.h" | 26 | #include "../wifi.h" |
27 | #include "../base.h" | 27 | #include "../base.h" |
28 | #include "../pci.h" | 28 | #include "../pci.h" |
29 | #include "../core.h" | ||
29 | #include "reg.h" | 30 | #include "reg.h" |
30 | #include "def.h" | 31 | #include "def.h" |
31 | #include "phy.h" | 32 | #include "phy.h" |
@@ -341,38 +342,6 @@ static void dm_tx_pwr_track_set_pwr(struct ieee80211_hw *hw, | |||
341 | } | 342 | } |
342 | } | 343 | } |
343 | 344 | ||
344 | static void rtl88e_dm_diginit(struct ieee80211_hw *hw) | ||
345 | { | ||
346 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
347 | struct dig_t *dm_dig = &rtlpriv->dm_digtable; | ||
348 | |||
349 | dm_dig->dig_enable_flag = true; | ||
350 | dm_dig->cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f); | ||
351 | dm_dig->pre_igvalue = 0; | ||
352 | dm_dig->cur_sta_cstate = DIG_STA_DISCONNECT; | ||
353 | dm_dig->presta_cstate = DIG_STA_DISCONNECT; | ||
354 | dm_dig->curmultista_cstate = DIG_MULTISTA_DISCONNECT; | ||
355 | dm_dig->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
356 | dm_dig->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
357 | dm_dig->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
358 | dm_dig->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
359 | dm_dig->rx_gain_max = DM_DIG_MAX; | ||
360 | dm_dig->rx_gain_min = DM_DIG_MIN; | ||
361 | dm_dig->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
362 | dm_dig->back_range_max = DM_DIG_BACKOFF_MAX; | ||
363 | dm_dig->back_range_min = DM_DIG_BACKOFF_MIN; | ||
364 | dm_dig->pre_cck_cca_thres = 0xff; | ||
365 | dm_dig->cur_cck_cca_thres = 0x83; | ||
366 | dm_dig->forbidden_igi = DM_DIG_MIN; | ||
367 | dm_dig->large_fa_hit = 0; | ||
368 | dm_dig->recover_cnt = 0; | ||
369 | dm_dig->dig_min_0 = 0x25; | ||
370 | dm_dig->dig_min_1 = 0x25; | ||
371 | dm_dig->media_connect_0 = false; | ||
372 | dm_dig->media_connect_1 = false; | ||
373 | rtlpriv->dm.dm_initialgain_enable = true; | ||
374 | } | ||
375 | |||
376 | static u8 rtl88e_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) | 345 | static u8 rtl88e_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) |
377 | { | 346 | { |
378 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 347 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -1796,9 +1765,10 @@ static void rtl88e_dm_antenna_diversity(struct ieee80211_hw *hw) | |||
1796 | void rtl88e_dm_init(struct ieee80211_hw *hw) | 1765 | void rtl88e_dm_init(struct ieee80211_hw *hw) |
1797 | { | 1766 | { |
1798 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1767 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1768 | u32 cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f); | ||
1799 | 1769 | ||
1800 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; | 1770 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; |
1801 | rtl88e_dm_diginit(hw); | 1771 | rtl_dm_diginit(hw, cur_igvalue); |
1802 | rtl88e_dm_init_dynamic_txpower(hw); | 1772 | rtl88e_dm_init_dynamic_txpower(hw); |
1803 | rtl88e_dm_init_edca_turbo(hw); | 1773 | rtl88e_dm_init_edca_turbo(hw); |
1804 | rtl88e_dm_init_rate_adaptive_mask(hw); | 1774 | rtl88e_dm_init_rate_adaptive_mask(hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.h b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.h index 64f1f3ea9807..071ccee69eae 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.h | |||
@@ -186,28 +186,12 @@ | |||
186 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 186 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
187 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 187 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
188 | 188 | ||
189 | #define DM_DIG_THRESH_HIGH 40 | ||
190 | #define DM_DIG_THRESH_LOW 35 | ||
191 | |||
192 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
193 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
194 | |||
195 | #define DM_DIG_MAX 0x3e | ||
196 | #define DM_DIG_MIN 0x1e | ||
197 | |||
198 | #define DM_DIG_MAX_AP 0x32 | ||
199 | #define DM_DIG_MIN_AP 0x20 | ||
200 | |||
201 | #define DM_DIG_FA_UPPER 0x3e | 189 | #define DM_DIG_FA_UPPER 0x3e |
202 | #define DM_DIG_FA_LOWER 0x1e | 190 | #define DM_DIG_FA_LOWER 0x1e |
203 | #define DM_DIG_FA_TH0 0x200 | 191 | #define DM_DIG_FA_TH0 0x200 |
204 | #define DM_DIG_FA_TH1 0x300 | 192 | #define DM_DIG_FA_TH1 0x300 |
205 | #define DM_DIG_FA_TH2 0x400 | 193 | #define DM_DIG_FA_TH2 0x400 |
206 | 194 | ||
207 | #define DM_DIG_BACKOFF_MAX 12 | ||
208 | #define DM_DIG_BACKOFF_MIN -4 | ||
209 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
210 | |||
211 | #define RXPATHSELECTION_SS_TH_W 30 | 195 | #define RXPATHSELECTION_SS_TH_W 30 |
212 | #define RXPATHSELECTION_DIFF_TH 18 | 196 | #define RXPATHSELECTION_DIFF_TH 18 |
213 | 197 | ||
@@ -262,14 +246,6 @@ enum tag_dynamic_init_gain_operation_type_definition { | |||
262 | DIG_OP_TYPE_MAX | 246 | DIG_OP_TYPE_MAX |
263 | }; | 247 | }; |
264 | 248 | ||
265 | enum tag_cck_packet_detection_threshold_type_definition { | ||
266 | CCK_PD_STAGE_LOWRSSI = 0, | ||
267 | CCK_PD_STAGE_HIGHRSSI = 1, | ||
268 | CCK_FA_STAGE_LOW = 2, | ||
269 | CCK_FA_STAGE_HIGH = 3, | ||
270 | CCK_PD_STAGE_MAX = 4, | ||
271 | }; | ||
272 | |||
273 | enum dm_1r_cca_e { | 249 | enum dm_1r_cca_e { |
274 | CCA_1R = 0, | 250 | CCA_1R = 0, |
275 | CCA_2R = 1, | 251 | CCA_2R = 1, |
@@ -288,23 +264,6 @@ enum dm_sw_ant_switch_e { | |||
288 | ANS_ANTENNA_MAX = 3, | 264 | ANS_ANTENNA_MAX = 3, |
289 | }; | 265 | }; |
290 | 266 | ||
291 | enum dm_dig_ext_port_alg_e { | ||
292 | DIG_EXT_PORT_STAGE_0 = 0, | ||
293 | DIG_EXT_PORT_STAGE_1 = 1, | ||
294 | DIG_EXT_PORT_STAGE_2 = 2, | ||
295 | DIG_EXT_PORT_STAGE_3 = 3, | ||
296 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
297 | }; | ||
298 | |||
299 | enum dm_dig_connect_e { | ||
300 | DIG_STA_DISCONNECT = 0, | ||
301 | DIG_STA_CONNECT = 1, | ||
302 | DIG_STA_BEFORE_CONNECT = 2, | ||
303 | DIG_MULTISTA_DISCONNECT = 3, | ||
304 | DIG_MULTISTA_CONNECT = 4, | ||
305 | DIG_CONNECT_MAX | ||
306 | }; | ||
307 | |||
308 | enum pwr_track_control_method { | 267 | enum pwr_track_control_method { |
309 | BBSWING, | 268 | BBSWING, |
310 | TXAGC | 269 | TXAGC |
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c index df549c96adef..791efbe6b18c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c | |||
@@ -47,164 +47,6 @@ static u8 _rtl88ee_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) | |||
47 | return skb->priority; | 47 | return skb->priority; |
48 | } | 48 | } |
49 | 49 | ||
50 | /* mac80211's rate_idx is like this: | ||
51 | * | ||
52 | * 2.4G band:rx_status->band == IEEE80211_BAND_2GHZ | ||
53 | * | ||
54 | * B/G rate: | ||
55 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
56 | * DESC92C_RATE1M-->DESC92C_RATE54M ==> idx is 0-->11, | ||
57 | * | ||
58 | * N rate: | ||
59 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
60 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
61 | * | ||
62 | * 5G band:rx_status->band == IEEE80211_BAND_5GHZ | ||
63 | * A rate: | ||
64 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
65 | * DESC92C_RATE6M-->DESC92C_RATE54M ==> idx is 0-->7, | ||
66 | * | ||
67 | * N rate: | ||
68 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
69 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
70 | */ | ||
71 | static int _rtl88ee_rate_mapping(struct ieee80211_hw *hw, | ||
72 | bool isht, u8 desc_rate) | ||
73 | { | ||
74 | int rate_idx; | ||
75 | |||
76 | if (!isht) { | ||
77 | if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { | ||
78 | switch (desc_rate) { | ||
79 | case DESC92C_RATE1M: | ||
80 | rate_idx = 0; | ||
81 | break; | ||
82 | case DESC92C_RATE2M: | ||
83 | rate_idx = 1; | ||
84 | break; | ||
85 | case DESC92C_RATE5_5M: | ||
86 | rate_idx = 2; | ||
87 | break; | ||
88 | case DESC92C_RATE11M: | ||
89 | rate_idx = 3; | ||
90 | break; | ||
91 | case DESC92C_RATE6M: | ||
92 | rate_idx = 4; | ||
93 | break; | ||
94 | case DESC92C_RATE9M: | ||
95 | rate_idx = 5; | ||
96 | break; | ||
97 | case DESC92C_RATE12M: | ||
98 | rate_idx = 6; | ||
99 | break; | ||
100 | case DESC92C_RATE18M: | ||
101 | rate_idx = 7; | ||
102 | break; | ||
103 | case DESC92C_RATE24M: | ||
104 | rate_idx = 8; | ||
105 | break; | ||
106 | case DESC92C_RATE36M: | ||
107 | rate_idx = 9; | ||
108 | break; | ||
109 | case DESC92C_RATE48M: | ||
110 | rate_idx = 10; | ||
111 | break; | ||
112 | case DESC92C_RATE54M: | ||
113 | rate_idx = 11; | ||
114 | break; | ||
115 | default: | ||
116 | rate_idx = 0; | ||
117 | break; | ||
118 | } | ||
119 | } else { | ||
120 | switch (desc_rate) { | ||
121 | case DESC92C_RATE6M: | ||
122 | rate_idx = 0; | ||
123 | break; | ||
124 | case DESC92C_RATE9M: | ||
125 | rate_idx = 1; | ||
126 | break; | ||
127 | case DESC92C_RATE12M: | ||
128 | rate_idx = 2; | ||
129 | break; | ||
130 | case DESC92C_RATE18M: | ||
131 | rate_idx = 3; | ||
132 | break; | ||
133 | case DESC92C_RATE24M: | ||
134 | rate_idx = 4; | ||
135 | break; | ||
136 | case DESC92C_RATE36M: | ||
137 | rate_idx = 5; | ||
138 | break; | ||
139 | case DESC92C_RATE48M: | ||
140 | rate_idx = 6; | ||
141 | break; | ||
142 | case DESC92C_RATE54M: | ||
143 | rate_idx = 7; | ||
144 | break; | ||
145 | default: | ||
146 | rate_idx = 0; | ||
147 | break; | ||
148 | } | ||
149 | } | ||
150 | } else { | ||
151 | switch (desc_rate) { | ||
152 | case DESC92C_RATEMCS0: | ||
153 | rate_idx = 0; | ||
154 | break; | ||
155 | case DESC92C_RATEMCS1: | ||
156 | rate_idx = 1; | ||
157 | break; | ||
158 | case DESC92C_RATEMCS2: | ||
159 | rate_idx = 2; | ||
160 | break; | ||
161 | case DESC92C_RATEMCS3: | ||
162 | rate_idx = 3; | ||
163 | break; | ||
164 | case DESC92C_RATEMCS4: | ||
165 | rate_idx = 4; | ||
166 | break; | ||
167 | case DESC92C_RATEMCS5: | ||
168 | rate_idx = 5; | ||
169 | break; | ||
170 | case DESC92C_RATEMCS6: | ||
171 | rate_idx = 6; | ||
172 | break; | ||
173 | case DESC92C_RATEMCS7: | ||
174 | rate_idx = 7; | ||
175 | break; | ||
176 | case DESC92C_RATEMCS8: | ||
177 | rate_idx = 8; | ||
178 | break; | ||
179 | case DESC92C_RATEMCS9: | ||
180 | rate_idx = 9; | ||
181 | break; | ||
182 | case DESC92C_RATEMCS10: | ||
183 | rate_idx = 10; | ||
184 | break; | ||
185 | case DESC92C_RATEMCS11: | ||
186 | rate_idx = 11; | ||
187 | break; | ||
188 | case DESC92C_RATEMCS12: | ||
189 | rate_idx = 12; | ||
190 | break; | ||
191 | case DESC92C_RATEMCS13: | ||
192 | rate_idx = 13; | ||
193 | break; | ||
194 | case DESC92C_RATEMCS14: | ||
195 | rate_idx = 14; | ||
196 | break; | ||
197 | case DESC92C_RATEMCS15: | ||
198 | rate_idx = 15; | ||
199 | break; | ||
200 | default: | ||
201 | rate_idx = 0; | ||
202 | break; | ||
203 | } | ||
204 | } | ||
205 | return rate_idx; | ||
206 | } | ||
207 | |||
208 | static void _rtl88ee_query_rxphystatus(struct ieee80211_hw *hw, | 50 | static void _rtl88ee_query_rxphystatus(struct ieee80211_hw *hw, |
209 | struct rtl_stats *pstatus, u8 *pdesc, | 51 | struct rtl_stats *pstatus, u8 *pdesc, |
210 | struct rx_fwinfo_88e *p_drvinfo, | 52 | struct rx_fwinfo_88e *p_drvinfo, |
@@ -630,8 +472,8 @@ bool rtl88ee_rx_query_desc(struct ieee80211_hw *hw, | |||
630 | * are use (RX_FLAG_HT) | 472 | * are use (RX_FLAG_HT) |
631 | * Notice: this is diff with windows define | 473 | * Notice: this is diff with windows define |
632 | */ | 474 | */ |
633 | rx_status->rate_idx = _rtl88ee_rate_mapping(hw, | 475 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, status->is_ht, |
634 | status->is_ht, status->rate); | 476 | false, status->rate); |
635 | 477 | ||
636 | rx_status->mactime = status->timestamp_low; | 478 | rx_status->mactime = status->timestamp_low; |
637 | if (phystatus == true) { | 479 | if (phystatus == true) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c index f6cb5aedfdd1..f5ee67cda73a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c +++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "phy_common.h" | 32 | #include "phy_common.h" |
33 | #include "../pci.h" | 33 | #include "../pci.h" |
34 | #include "../base.h" | 34 | #include "../base.h" |
35 | #include "../core.h" | ||
35 | 36 | ||
36 | #define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) | 37 | #define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) |
37 | #define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) | 38 | #define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) |
@@ -194,36 +195,6 @@ void dm_savepowerindex(struct ieee80211_hw *hw) | |||
194 | } | 195 | } |
195 | EXPORT_SYMBOL_GPL(dm_savepowerindex); | 196 | EXPORT_SYMBOL_GPL(dm_savepowerindex); |
196 | 197 | ||
197 | static void rtl92c_dm_diginit(struct ieee80211_hw *hw) | ||
198 | { | ||
199 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
200 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
201 | |||
202 | dm_digtable->dig_enable_flag = true; | ||
203 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | ||
204 | dm_digtable->cur_igvalue = 0x20; | ||
205 | dm_digtable->pre_igvalue = 0x0; | ||
206 | dm_digtable->cursta_cstate = DIG_STA_DISCONNECT; | ||
207 | dm_digtable->presta_cstate = DIG_STA_DISCONNECT; | ||
208 | dm_digtable->curmultista_cstate = DIG_MULTISTA_DISCONNECT; | ||
209 | dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
210 | dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
211 | dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
212 | dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
213 | dm_digtable->rx_gain_max = DM_DIG_MAX; | ||
214 | dm_digtable->rx_gain_min = DM_DIG_MIN; | ||
215 | dm_digtable->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
216 | dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX; | ||
217 | dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN; | ||
218 | dm_digtable->pre_cck_pd_state = CCK_PD_STAGE_MAX; | ||
219 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_LowRssi; | ||
220 | |||
221 | dm_digtable->forbidden_igi = DM_DIG_MIN; | ||
222 | dm_digtable->large_fa_hit = 0; | ||
223 | dm_digtable->recover_cnt = 0; | ||
224 | dm_digtable->dig_dynamic_min = 0x25; | ||
225 | } | ||
226 | |||
227 | static u8 rtl92c_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) | 198 | static u8 rtl92c_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) |
228 | { | 199 | { |
229 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 200 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -507,27 +478,27 @@ static void rtl92c_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
507 | if (dm_digtable->rssi_val_min > 100) | 478 | if (dm_digtable->rssi_val_min > 100) |
508 | dm_digtable->rssi_val_min = 100; | 479 | dm_digtable->rssi_val_min = 100; |
509 | 480 | ||
510 | if (dm_digtable->pre_cck_pd_state == CCK_PD_STAGE_LowRssi) { | 481 | if (dm_digtable->pre_cck_pd_state == CCK_PD_STAGE_LOWRSSI) { |
511 | if (dm_digtable->rssi_val_min <= 25) | 482 | if (dm_digtable->rssi_val_min <= 25) |
512 | dm_digtable->cur_cck_pd_state = | 483 | dm_digtable->cur_cck_pd_state = |
513 | CCK_PD_STAGE_LowRssi; | 484 | CCK_PD_STAGE_LOWRSSI; |
514 | else | 485 | else |
515 | dm_digtable->cur_cck_pd_state = | 486 | dm_digtable->cur_cck_pd_state = |
516 | CCK_PD_STAGE_HighRssi; | 487 | CCK_PD_STAGE_HIGHRSSI; |
517 | } else { | 488 | } else { |
518 | if (dm_digtable->rssi_val_min <= 20) | 489 | if (dm_digtable->rssi_val_min <= 20) |
519 | dm_digtable->cur_cck_pd_state = | 490 | dm_digtable->cur_cck_pd_state = |
520 | CCK_PD_STAGE_LowRssi; | 491 | CCK_PD_STAGE_LOWRSSI; |
521 | else | 492 | else |
522 | dm_digtable->cur_cck_pd_state = | 493 | dm_digtable->cur_cck_pd_state = |
523 | CCK_PD_STAGE_HighRssi; | 494 | CCK_PD_STAGE_HIGHRSSI; |
524 | } | 495 | } |
525 | } else { | 496 | } else { |
526 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; | 497 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; |
527 | } | 498 | } |
528 | 499 | ||
529 | if (dm_digtable->pre_cck_pd_state != dm_digtable->cur_cck_pd_state) { | 500 | if (dm_digtable->pre_cck_pd_state != dm_digtable->cur_cck_pd_state) { |
530 | if ((dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LowRssi) || | 501 | if ((dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI) || |
531 | (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_MAX)) | 502 | (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_MAX)) |
532 | rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0x83); | 503 | rtl_set_bbreg(hw, RCCK0_CCA, MASKBYTE2, 0x83); |
533 | else | 504 | else |
@@ -1374,7 +1345,7 @@ void rtl92c_dm_init(struct ieee80211_hw *hw) | |||
1374 | rtlpriv->dm.undec_sm_pwdb = -1; | 1345 | rtlpriv->dm.undec_sm_pwdb = -1; |
1375 | rtlpriv->dm.undec_sm_cck = -1; | 1346 | rtlpriv->dm.undec_sm_cck = -1; |
1376 | rtlpriv->dm.dm_initialgain_enable = true; | 1347 | rtlpriv->dm.dm_initialgain_enable = true; |
1377 | rtl92c_dm_diginit(hw); | 1348 | rtl_dm_diginit(hw, 0x20); |
1378 | 1349 | ||
1379 | rtlpriv->dm.dm_flag |= HAL_DM_HIPWR_DISABLE; | 1350 | rtlpriv->dm.dm_flag |= HAL_DM_HIPWR_DISABLE; |
1380 | rtl92c_dm_init_dynamic_txpower(hw); | 1351 | rtl92c_dm_init_dynamic_txpower(hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h index 4f232a063636..4422e31fedd9 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h +++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.h | |||
@@ -47,25 +47,12 @@ | |||
47 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 47 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
48 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 48 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
49 | 49 | ||
50 | #define DM_DIG_THRESH_HIGH 40 | ||
51 | #define DM_DIG_THRESH_LOW 35 | ||
52 | |||
53 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
54 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
55 | |||
56 | #define DM_DIG_MAX 0x3e | ||
57 | #define DM_DIG_MIN 0x1e | ||
58 | |||
59 | #define DM_DIG_FA_UPPER 0x32 | 50 | #define DM_DIG_FA_UPPER 0x32 |
60 | #define DM_DIG_FA_LOWER 0x20 | 51 | #define DM_DIG_FA_LOWER 0x20 |
61 | #define DM_DIG_FA_TH0 0x20 | 52 | #define DM_DIG_FA_TH0 0x20 |
62 | #define DM_DIG_FA_TH1 0x100 | 53 | #define DM_DIG_FA_TH1 0x100 |
63 | #define DM_DIG_FA_TH2 0x200 | 54 | #define DM_DIG_FA_TH2 0x200 |
64 | 55 | ||
65 | #define DM_DIG_BACKOFF_MAX 12 | ||
66 | #define DM_DIG_BACKOFF_MIN -4 | ||
67 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
68 | |||
69 | #define RXPATHSELECTION_SS_TH_lOW 30 | 56 | #define RXPATHSELECTION_SS_TH_lOW 30 |
70 | #define RXPATHSELECTION_DIFF_TH 18 | 57 | #define RXPATHSELECTION_DIFF_TH 18 |
71 | 58 | ||
@@ -123,14 +110,6 @@ enum tag_dynamic_init_gain_operation_type_definition { | |||
123 | DIG_OP_TYPE_MAX | 110 | DIG_OP_TYPE_MAX |
124 | }; | 111 | }; |
125 | 112 | ||
126 | enum tag_cck_packet_detection_threshold_type_definition { | ||
127 | CCK_PD_STAGE_LowRssi = 0, | ||
128 | CCK_PD_STAGE_HighRssi = 1, | ||
129 | CCK_FA_STAGE_Low = 2, | ||
130 | CCK_FA_STAGE_High = 3, | ||
131 | CCK_PD_STAGE_MAX = 4, | ||
132 | }; | ||
133 | |||
134 | enum dm_1r_cca_e { | 113 | enum dm_1r_cca_e { |
135 | CCA_1R = 0, | 114 | CCA_1R = 0, |
136 | CCA_2R = 1, | 115 | CCA_2R = 1, |
@@ -149,23 +128,6 @@ enum dm_sw_ant_switch_e { | |||
149 | ANS_ANTENNA_MAX = 3, | 128 | ANS_ANTENNA_MAX = 3, |
150 | }; | 129 | }; |
151 | 130 | ||
152 | enum dm_dig_ext_port_alg_e { | ||
153 | DIG_EXT_PORT_STAGE_0 = 0, | ||
154 | DIG_EXT_PORT_STAGE_1 = 1, | ||
155 | DIG_EXT_PORT_STAGE_2 = 2, | ||
156 | DIG_EXT_PORT_STAGE_3 = 3, | ||
157 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
158 | }; | ||
159 | |||
160 | enum dm_dig_connect_e { | ||
161 | DIG_STA_DISCONNECT = 0, | ||
162 | DIG_STA_CONNECT = 1, | ||
163 | DIG_STA_BEFORE_CONNECT = 2, | ||
164 | DIG_MULTISTA_DISCONNECT = 3, | ||
165 | DIG_MULTISTA_CONNECT = 4, | ||
166 | DIG_CONNECT_MAX | ||
167 | }; | ||
168 | |||
169 | void rtl92c_dm_init(struct ieee80211_hw *hw); | 131 | void rtl92c_dm_init(struct ieee80211_hw *hw); |
170 | void rtl92c_dm_watchdog(struct ieee80211_hw *hw); | 132 | void rtl92c_dm_watchdog(struct ieee80211_hw *hw); |
171 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw); | 133 | void rtl92c_dm_write_dig(struct ieee80211_hw *hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.h b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.h index b64ae45dc674..e9f4281f5067 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.h +++ b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.h | |||
@@ -37,6 +37,7 @@ | |||
37 | #define FW_8192C_POLLING_DELAY 5 | 37 | #define FW_8192C_POLLING_DELAY 5 |
38 | #define FW_8192C_POLLING_TIMEOUT_COUNT 100 | 38 | #define FW_8192C_POLLING_TIMEOUT_COUNT 100 |
39 | #define NORMAL_CHIP BIT(4) | 39 | #define NORMAL_CHIP BIT(4) |
40 | #define H2C_92C_KEEP_ALIVE_CTRL 48 | ||
40 | 41 | ||
41 | #define IS_FW_HEADER_EXIST(_pfwhdr) \ | 42 | #define IS_FW_HEADER_EXIST(_pfwhdr) \ |
42 | ((le16_to_cpu(_pfwhdr->signature)&0xFFF0) == 0x92C0 ||\ | 43 | ((le16_to_cpu(_pfwhdr->signature)&0xFFF0) == 0x92C0 ||\ |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/dm.c b/drivers/net/wireless/rtlwifi/rtl8192ce/dm.c index 74f9c083b80d..09898cf2e07a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/dm.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include "../wifi.h" | 30 | #include "../wifi.h" |
31 | #include "../base.h" | 31 | #include "../base.h" |
32 | #include "../pci.h" | 32 | #include "../pci.h" |
33 | #include "../core.h" | ||
33 | #include "reg.h" | 34 | #include "reg.h" |
34 | #include "def.h" | 35 | #include "def.h" |
35 | #include "phy.h" | 36 | #include "phy.h" |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h b/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h index 9c5311c299fd..38ba707015f5 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/dm.h | |||
@@ -42,25 +42,12 @@ | |||
42 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 42 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
43 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 43 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
44 | 44 | ||
45 | #define DM_DIG_THRESH_HIGH 40 | ||
46 | #define DM_DIG_THRESH_LOW 35 | ||
47 | |||
48 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
49 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
50 | |||
51 | #define DM_DIG_MAX 0x3e | ||
52 | #define DM_DIG_MIN 0x1e | ||
53 | |||
54 | #define DM_DIG_FA_UPPER 0x32 | 45 | #define DM_DIG_FA_UPPER 0x32 |
55 | #define DM_DIG_FA_LOWER 0x20 | 46 | #define DM_DIG_FA_LOWER 0x20 |
56 | #define DM_DIG_FA_TH0 0x20 | 47 | #define DM_DIG_FA_TH0 0x20 |
57 | #define DM_DIG_FA_TH1 0x100 | 48 | #define DM_DIG_FA_TH1 0x100 |
58 | #define DM_DIG_FA_TH2 0x200 | 49 | #define DM_DIG_FA_TH2 0x200 |
59 | 50 | ||
60 | #define DM_DIG_BACKOFF_MAX 12 | ||
61 | #define DM_DIG_BACKOFF_MIN -4 | ||
62 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
63 | |||
64 | #define RXPATHSELECTION_SS_TH_lOW 30 | 51 | #define RXPATHSELECTION_SS_TH_lOW 30 |
65 | #define RXPATHSELECTION_DIFF_TH 18 | 52 | #define RXPATHSELECTION_DIFF_TH 18 |
66 | 53 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c index 5c646d5f7bb8..303b299376c9 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | |||
@@ -544,8 +544,13 @@ void rtl92ce_set_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val) | |||
544 | (u8 *)(&fw_current_inps)); | 544 | (u8 *)(&fw_current_inps)); |
545 | } | 545 | } |
546 | break; } | 546 | break; } |
547 | case HW_VAR_KEEP_ALIVE: | 547 | case HW_VAR_KEEP_ALIVE: { |
548 | break; | 548 | u8 array[2]; |
549 | |||
550 | array[0] = 0xff; | ||
551 | array[1] = *((u8 *)val); | ||
552 | rtl92c_fill_h2c_cmd(hw, H2C_92C_KEEP_ALIVE_CTRL, 2, array); | ||
553 | break; } | ||
549 | default: | 554 | default: |
550 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | 555 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, |
551 | "switch case %d not processed\n", variable); | 556 | "switch case %d not processed\n", variable); |
@@ -1156,47 +1161,35 @@ static int _rtl92ce_set_media_status(struct ieee80211_hw *hw, | |||
1156 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1161 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1157 | u8 bt_msr = rtl_read_byte(rtlpriv, MSR); | 1162 | u8 bt_msr = rtl_read_byte(rtlpriv, MSR); |
1158 | enum led_ctl_mode ledaction = LED_CTL_NO_LINK; | 1163 | enum led_ctl_mode ledaction = LED_CTL_NO_LINK; |
1159 | bt_msr &= 0xfc; | 1164 | u8 mode = MSR_NOLINK; |
1160 | 1165 | ||
1161 | if (type == NL80211_IFTYPE_UNSPECIFIED || | 1166 | bt_msr &= 0xfc; |
1162 | type == NL80211_IFTYPE_STATION) { | ||
1163 | _rtl92ce_stop_tx_beacon(hw); | ||
1164 | _rtl92ce_enable_bcn_sub_func(hw); | ||
1165 | } else if (type == NL80211_IFTYPE_ADHOC || type == NL80211_IFTYPE_AP || | ||
1166 | type == NL80211_IFTYPE_MESH_POINT) { | ||
1167 | _rtl92ce_resume_tx_beacon(hw); | ||
1168 | _rtl92ce_disable_bcn_sub_func(hw); | ||
1169 | } else { | ||
1170 | RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, | ||
1171 | "Set HW_VAR_MEDIA_STATUS: No such media status(%x)\n", | ||
1172 | type); | ||
1173 | } | ||
1174 | 1167 | ||
1175 | switch (type) { | 1168 | switch (type) { |
1176 | case NL80211_IFTYPE_UNSPECIFIED: | 1169 | case NL80211_IFTYPE_UNSPECIFIED: |
1177 | bt_msr |= MSR_NOLINK; | 1170 | mode = MSR_NOLINK; |
1178 | ledaction = LED_CTL_LINK; | ||
1179 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 1171 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
1180 | "Set Network type to NO LINK!\n"); | 1172 | "Set Network type to NO LINK!\n"); |
1181 | break; | 1173 | break; |
1182 | case NL80211_IFTYPE_ADHOC: | 1174 | case NL80211_IFTYPE_ADHOC: |
1183 | bt_msr |= MSR_ADHOC; | 1175 | mode = MSR_ADHOC; |
1184 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 1176 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
1185 | "Set Network type to Ad Hoc!\n"); | 1177 | "Set Network type to Ad Hoc!\n"); |
1186 | break; | 1178 | break; |
1187 | case NL80211_IFTYPE_STATION: | 1179 | case NL80211_IFTYPE_STATION: |
1188 | bt_msr |= MSR_INFRA; | 1180 | mode = MSR_INFRA; |
1189 | ledaction = LED_CTL_LINK; | 1181 | ledaction = LED_CTL_LINK; |
1190 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 1182 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
1191 | "Set Network type to STA!\n"); | 1183 | "Set Network type to STA!\n"); |
1192 | break; | 1184 | break; |
1193 | case NL80211_IFTYPE_AP: | 1185 | case NL80211_IFTYPE_AP: |
1194 | bt_msr |= MSR_AP; | 1186 | mode = MSR_AP; |
1187 | ledaction = LED_CTL_LINK; | ||
1195 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 1188 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
1196 | "Set Network type to AP!\n"); | 1189 | "Set Network type to AP!\n"); |
1197 | break; | 1190 | break; |
1198 | case NL80211_IFTYPE_MESH_POINT: | 1191 | case NL80211_IFTYPE_MESH_POINT: |
1199 | bt_msr |= MSR_ADHOC; | 1192 | mode = MSR_ADHOC; |
1200 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, | 1193 | RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, |
1201 | "Set Network type to Mesh Point!\n"); | 1194 | "Set Network type to Mesh Point!\n"); |
1202 | break; | 1195 | break; |
@@ -1207,9 +1200,32 @@ static int _rtl92ce_set_media_status(struct ieee80211_hw *hw, | |||
1207 | 1200 | ||
1208 | } | 1201 | } |
1209 | 1202 | ||
1210 | rtl_write_byte(rtlpriv, (MSR), bt_msr); | 1203 | /* MSR_INFRA == Link in infrastructure network; |
1204 | * MSR_ADHOC == Link in ad hoc network; | ||
1205 | * Therefore, check link state is necessary. | ||
1206 | * | ||
1207 | * MSR_AP == AP mode; link state does not matter here. | ||
1208 | */ | ||
1209 | if (mode != MSR_AP && | ||
1210 | rtlpriv->mac80211.link_state < MAC80211_LINKED) { | ||
1211 | mode = MSR_NOLINK; | ||
1212 | ledaction = LED_CTL_NO_LINK; | ||
1213 | } | ||
1214 | if (mode == MSR_NOLINK || mode == MSR_INFRA) { | ||
1215 | _rtl92ce_stop_tx_beacon(hw); | ||
1216 | _rtl92ce_enable_bcn_sub_func(hw); | ||
1217 | } else if (mode == MSR_ADHOC || mode == MSR_AP) { | ||
1218 | _rtl92ce_resume_tx_beacon(hw); | ||
1219 | _rtl92ce_disable_bcn_sub_func(hw); | ||
1220 | } else { | ||
1221 | RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING, | ||
1222 | "Set HW_VAR_MEDIA_STATUS: No such media status(%x).\n", | ||
1223 | mode); | ||
1224 | } | ||
1225 | rtl_write_byte(rtlpriv, MSR, bt_msr | mode); | ||
1226 | |||
1211 | rtlpriv->cfg->ops->led_control(hw, ledaction); | 1227 | rtlpriv->cfg->ops->led_control(hw, ledaction); |
1212 | if ((bt_msr & MSR_MASK) == MSR_AP) | 1228 | if (mode == MSR_AP) |
1213 | rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x00); | 1229 | rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x00); |
1214 | else | 1230 | else |
1215 | rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x66); | 1231 | rtl_write_byte(rtlpriv, REG_BCNTCFG + 1, 0x66); |
@@ -1833,7 +1849,6 @@ static void rtl92ce_update_hal_rate_table(struct ieee80211_hw *hw, | |||
1833 | u32 ratr_value; | 1849 | u32 ratr_value; |
1834 | u8 ratr_index = 0; | 1850 | u8 ratr_index = 0; |
1835 | u8 nmode = mac->ht_enable; | 1851 | u8 nmode = mac->ht_enable; |
1836 | u8 mimo_ps = IEEE80211_SMPS_OFF; | ||
1837 | u16 shortgi_rate; | 1852 | u16 shortgi_rate; |
1838 | u32 tmp_ratr_value; | 1853 | u32 tmp_ratr_value; |
1839 | u8 curtxbw_40mhz = mac->bw_40; | 1854 | u8 curtxbw_40mhz = mac->bw_40; |
@@ -1842,6 +1857,7 @@ static void rtl92ce_update_hal_rate_table(struct ieee80211_hw *hw, | |||
1842 | u8 curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? | 1857 | u8 curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? |
1843 | 1 : 0; | 1858 | 1 : 0; |
1844 | enum wireless_mode wirelessmode = mac->mode; | 1859 | enum wireless_mode wirelessmode = mac->mode; |
1860 | u32 ratr_mask; | ||
1845 | 1861 | ||
1846 | if (rtlhal->current_bandtype == BAND_ON_5G) | 1862 | if (rtlhal->current_bandtype == BAND_ON_5G) |
1847 | ratr_value = sta->supp_rates[1] << 4; | 1863 | ratr_value = sta->supp_rates[1] << 4; |
@@ -1865,19 +1881,13 @@ static void rtl92ce_update_hal_rate_table(struct ieee80211_hw *hw, | |||
1865 | case WIRELESS_MODE_N_24G: | 1881 | case WIRELESS_MODE_N_24G: |
1866 | case WIRELESS_MODE_N_5G: | 1882 | case WIRELESS_MODE_N_5G: |
1867 | nmode = 1; | 1883 | nmode = 1; |
1868 | if (mimo_ps == IEEE80211_SMPS_STATIC) { | 1884 | if (get_rf_type(rtlphy) == RF_1T2R || |
1869 | ratr_value &= 0x0007F005; | 1885 | get_rf_type(rtlphy) == RF_1T1R) |
1870 | } else { | 1886 | ratr_mask = 0x000ff005; |
1871 | u32 ratr_mask; | 1887 | else |
1872 | 1888 | ratr_mask = 0x0f0ff005; | |
1873 | if (get_rf_type(rtlphy) == RF_1T2R || | ||
1874 | get_rf_type(rtlphy) == RF_1T1R) | ||
1875 | ratr_mask = 0x000ff005; | ||
1876 | else | ||
1877 | ratr_mask = 0x0f0ff005; | ||
1878 | 1889 | ||
1879 | ratr_value &= ratr_mask; | 1890 | ratr_value &= ratr_mask; |
1880 | } | ||
1881 | break; | 1891 | break; |
1882 | default: | 1892 | default: |
1883 | if (rtlphy->rf_type == RF_1T2R) | 1893 | if (rtlphy->rf_type == RF_1T2R) |
@@ -1930,17 +1940,16 @@ static void rtl92ce_update_hal_rate_mask(struct ieee80211_hw *hw, | |||
1930 | struct rtl_sta_info *sta_entry = NULL; | 1940 | struct rtl_sta_info *sta_entry = NULL; |
1931 | u32 ratr_bitmap; | 1941 | u32 ratr_bitmap; |
1932 | u8 ratr_index; | 1942 | u8 ratr_index; |
1933 | u8 curtxbw_40mhz = (sta->bandwidth >= IEEE80211_STA_RX_BW_40) ? 1 : 0; | 1943 | u8 curtxbw_40mhz = (sta->ht_cap.cap & |
1934 | u8 curshortgi_40mhz = curtxbw_40mhz && | 1944 | IEEE80211_HT_CAP_SUP_WIDTH_20_40) ? 1 : 0; |
1935 | (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40) ? | 1945 | u8 curshortgi_40mhz = (sta->ht_cap.cap & |
1936 | 1 : 0; | 1946 | IEEE80211_HT_CAP_SGI_40) ? 1 : 0; |
1937 | u8 curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? | 1947 | u8 curshortgi_20mhz = (sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_20) ? |
1938 | 1 : 0; | 1948 | 1 : 0; |
1939 | enum wireless_mode wirelessmode = 0; | 1949 | enum wireless_mode wirelessmode = 0; |
1940 | bool shortgi = false; | 1950 | bool shortgi = false; |
1941 | u8 rate_mask[5]; | 1951 | u8 rate_mask[5]; |
1942 | u8 macid = 0; | 1952 | u8 macid = 0; |
1943 | u8 mimo_ps = IEEE80211_SMPS_OFF; | ||
1944 | 1953 | ||
1945 | sta_entry = (struct rtl_sta_info *) sta->drv_priv; | 1954 | sta_entry = (struct rtl_sta_info *) sta->drv_priv; |
1946 | wirelessmode = sta_entry->wireless_mode; | 1955 | wirelessmode = sta_entry->wireless_mode; |
@@ -1985,47 +1994,38 @@ static void rtl92ce_update_hal_rate_mask(struct ieee80211_hw *hw, | |||
1985 | case WIRELESS_MODE_N_5G: | 1994 | case WIRELESS_MODE_N_5G: |
1986 | ratr_index = RATR_INX_WIRELESS_NGB; | 1995 | ratr_index = RATR_INX_WIRELESS_NGB; |
1987 | 1996 | ||
1988 | if (mimo_ps == IEEE80211_SMPS_STATIC) { | 1997 | if (rtlphy->rf_type == RF_1T2R || |
1989 | if (rssi_level == 1) | 1998 | rtlphy->rf_type == RF_1T1R) { |
1990 | ratr_bitmap &= 0x00070000; | 1999 | if (curtxbw_40mhz) { |
1991 | else if (rssi_level == 2) | 2000 | if (rssi_level == 1) |
1992 | ratr_bitmap &= 0x0007f000; | 2001 | ratr_bitmap &= 0x000f0000; |
1993 | else | 2002 | else if (rssi_level == 2) |
1994 | ratr_bitmap &= 0x0007f005; | 2003 | ratr_bitmap &= 0x000ff000; |
2004 | else | ||
2005 | ratr_bitmap &= 0x000ff015; | ||
2006 | } else { | ||
2007 | if (rssi_level == 1) | ||
2008 | ratr_bitmap &= 0x000f0000; | ||
2009 | else if (rssi_level == 2) | ||
2010 | ratr_bitmap &= 0x000ff000; | ||
2011 | else | ||
2012 | ratr_bitmap &= 0x000ff005; | ||
2013 | } | ||
1995 | } else { | 2014 | } else { |
1996 | if (rtlphy->rf_type == RF_1T2R || | 2015 | if (curtxbw_40mhz) { |
1997 | rtlphy->rf_type == RF_1T1R) { | 2016 | if (rssi_level == 1) |
1998 | if (curtxbw_40mhz) { | 2017 | ratr_bitmap &= 0x0f0f0000; |
1999 | if (rssi_level == 1) | 2018 | else if (rssi_level == 2) |
2000 | ratr_bitmap &= 0x000f0000; | 2019 | ratr_bitmap &= 0x0f0ff000; |
2001 | else if (rssi_level == 2) | 2020 | else |
2002 | ratr_bitmap &= 0x000ff000; | 2021 | ratr_bitmap &= 0x0f0ff015; |
2003 | else | ||
2004 | ratr_bitmap &= 0x000ff015; | ||
2005 | } else { | ||
2006 | if (rssi_level == 1) | ||
2007 | ratr_bitmap &= 0x000f0000; | ||
2008 | else if (rssi_level == 2) | ||
2009 | ratr_bitmap &= 0x000ff000; | ||
2010 | else | ||
2011 | ratr_bitmap &= 0x000ff005; | ||
2012 | } | ||
2013 | } else { | 2022 | } else { |
2014 | if (curtxbw_40mhz) { | 2023 | if (rssi_level == 1) |
2015 | if (rssi_level == 1) | 2024 | ratr_bitmap &= 0x0f0f0000; |
2016 | ratr_bitmap &= 0x0f0f0000; | 2025 | else if (rssi_level == 2) |
2017 | else if (rssi_level == 2) | 2026 | ratr_bitmap &= 0x0f0ff000; |
2018 | ratr_bitmap &= 0x0f0ff000; | 2027 | else |
2019 | else | 2028 | ratr_bitmap &= 0x0f0ff005; |
2020 | ratr_bitmap &= 0x0f0ff015; | ||
2021 | } else { | ||
2022 | if (rssi_level == 1) | ||
2023 | ratr_bitmap &= 0x0f0f0000; | ||
2024 | else if (rssi_level == 2) | ||
2025 | ratr_bitmap &= 0x0f0ff000; | ||
2026 | else | ||
2027 | ratr_bitmap &= 0x0f0ff005; | ||
2028 | } | ||
2029 | } | 2029 | } |
2030 | } | 2030 | } |
2031 | 2031 | ||
@@ -2058,9 +2058,6 @@ static void rtl92ce_update_hal_rate_mask(struct ieee80211_hw *hw, | |||
2058 | "Rate_index:%x, ratr_val:%x, %5phC\n", | 2058 | "Rate_index:%x, ratr_val:%x, %5phC\n", |
2059 | ratr_index, ratr_bitmap, rate_mask); | 2059 | ratr_index, ratr_bitmap, rate_mask); |
2060 | rtl92c_fill_h2c_cmd(hw, H2C_RA_MASK, 5, rate_mask); | 2060 | rtl92c_fill_h2c_cmd(hw, H2C_RA_MASK, 5, rate_mask); |
2061 | |||
2062 | if (macid != 0) | ||
2063 | sta_entry->ratr_index = ratr_index; | ||
2064 | } | 2061 | } |
2065 | 2062 | ||
2066 | void rtl92ce_update_hal_rate_tbl(struct ieee80211_hw *hw, | 2063 | void rtl92ce_update_hal_rate_tbl(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c b/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c index bc5ca989b915..1ee5a6ae9960 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/phy.c | |||
@@ -518,11 +518,12 @@ static bool _rtl92ce_phy_set_rf_power_state(struct ieee80211_hw *hw, | |||
518 | } | 518 | } |
519 | case ERFSLEEP:{ | 519 | case ERFSLEEP:{ |
520 | if (ppsc->rfpwr_state == ERFOFF) | 520 | if (ppsc->rfpwr_state == ERFOFF) |
521 | return false; | 521 | break; |
522 | for (queue_id = 0, i = 0; | 522 | for (queue_id = 0, i = 0; |
523 | queue_id < RTL_PCI_MAX_TX_QUEUE_COUNT;) { | 523 | queue_id < RTL_PCI_MAX_TX_QUEUE_COUNT;) { |
524 | ring = &pcipriv->dev.tx_ring[queue_id]; | 524 | ring = &pcipriv->dev.tx_ring[queue_id]; |
525 | if (skb_queue_len(&ring->queue) == 0) { | 525 | if (queue_id == BEACON_QUEUE || |
526 | skb_queue_len(&ring->queue) == 0) { | ||
526 | queue_id++; | 527 | queue_id++; |
527 | continue; | 528 | continue; |
528 | } else { | 529 | } else { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c index dd5aa089126a..de6cb6c3a48c 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | |||
@@ -334,21 +334,21 @@ static struct rtl_hal_cfg rtl92ce_hal_cfg = { | |||
334 | .maps[RTL_IMR_ROK] = IMR_ROK, | 334 | .maps[RTL_IMR_ROK] = IMR_ROK, |
335 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), | 335 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), |
336 | 336 | ||
337 | .maps[RTL_RC_CCK_RATE1M] = DESC92_RATE1M, | 337 | .maps[RTL_RC_CCK_RATE1M] = DESC_RATE1M, |
338 | .maps[RTL_RC_CCK_RATE2M] = DESC92_RATE2M, | 338 | .maps[RTL_RC_CCK_RATE2M] = DESC_RATE2M, |
339 | .maps[RTL_RC_CCK_RATE5_5M] = DESC92_RATE5_5M, | 339 | .maps[RTL_RC_CCK_RATE5_5M] = DESC_RATE5_5M, |
340 | .maps[RTL_RC_CCK_RATE11M] = DESC92_RATE11M, | 340 | .maps[RTL_RC_CCK_RATE11M] = DESC_RATE11M, |
341 | .maps[RTL_RC_OFDM_RATE6M] = DESC92_RATE6M, | 341 | .maps[RTL_RC_OFDM_RATE6M] = DESC_RATE6M, |
342 | .maps[RTL_RC_OFDM_RATE9M] = DESC92_RATE9M, | 342 | .maps[RTL_RC_OFDM_RATE9M] = DESC_RATE9M, |
343 | .maps[RTL_RC_OFDM_RATE12M] = DESC92_RATE12M, | 343 | .maps[RTL_RC_OFDM_RATE12M] = DESC_RATE12M, |
344 | .maps[RTL_RC_OFDM_RATE18M] = DESC92_RATE18M, | 344 | .maps[RTL_RC_OFDM_RATE18M] = DESC_RATE18M, |
345 | .maps[RTL_RC_OFDM_RATE24M] = DESC92_RATE24M, | 345 | .maps[RTL_RC_OFDM_RATE24M] = DESC_RATE24M, |
346 | .maps[RTL_RC_OFDM_RATE36M] = DESC92_RATE36M, | 346 | .maps[RTL_RC_OFDM_RATE36M] = DESC_RATE36M, |
347 | .maps[RTL_RC_OFDM_RATE48M] = DESC92_RATE48M, | 347 | .maps[RTL_RC_OFDM_RATE48M] = DESC_RATE48M, |
348 | .maps[RTL_RC_OFDM_RATE54M] = DESC92_RATE54M, | 348 | .maps[RTL_RC_OFDM_RATE54M] = DESC_RATE54M, |
349 | 349 | ||
350 | .maps[RTL_RC_HT_RATEMCS7] = DESC92_RATEMCS7, | 350 | .maps[RTL_RC_HT_RATEMCS7] = DESC_RATEMCS7, |
351 | .maps[RTL_RC_HT_RATEMCS15] = DESC92_RATEMCS15, | 351 | .maps[RTL_RC_HT_RATEMCS15] = DESC_RATEMCS15, |
352 | }; | 352 | }; |
353 | 353 | ||
354 | static const struct pci_device_id rtl92ce_pci_ids[] = { | 354 | static const struct pci_device_id rtl92ce_pci_ids[] = { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c index e88dcd0e0af1..84ddd4d07a1d 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | |||
@@ -257,8 +257,8 @@ static void _rtl92ce_query_rxphystatus(struct ieee80211_hw *hw, | |||
257 | pstats->recvsignalpower = rx_pwr_all; | 257 | pstats->recvsignalpower = rx_pwr_all; |
258 | 258 | ||
259 | /* (3)EVM of HT rate */ | 259 | /* (3)EVM of HT rate */ |
260 | if (pstats->is_ht && pstats->rate >= DESC92_RATEMCS8 && | 260 | if (pstats->is_ht && pstats->rate >= DESC_RATEMCS8 && |
261 | pstats->rate <= DESC92_RATEMCS15) | 261 | pstats->rate <= DESC_RATEMCS15) |
262 | max_spatial_stream = 2; | 262 | max_spatial_stream = 2; |
263 | else | 263 | else |
264 | max_spatial_stream = 1; | 264 | max_spatial_stream = 1; |
@@ -400,9 +400,8 @@ bool rtl92ce_rx_query_desc(struct ieee80211_hw *hw, | |||
400 | * are use (RX_FLAG_HT) | 400 | * are use (RX_FLAG_HT) |
401 | * Notice: this is diff with windows define | 401 | * Notice: this is diff with windows define |
402 | */ | 402 | */ |
403 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, | 403 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, stats->is_ht, |
404 | stats->is_ht, stats->rate, | 404 | false, stats->rate); |
405 | stats->isfirst_ampdu); | ||
406 | 405 | ||
407 | rx_status->mactime = stats->timestamp_low; | 406 | rx_status->mactime = stats->timestamp_low; |
408 | if (phystatus) { | 407 | if (phystatus) { |
@@ -501,7 +500,7 @@ void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw, | |||
501 | SET_TX_DESC_RTS_BW(pdesc, 0); | 500 | SET_TX_DESC_RTS_BW(pdesc, 0); |
502 | SET_TX_DESC_RTS_SC(pdesc, tcb_desc->rts_sc); | 501 | SET_TX_DESC_RTS_SC(pdesc, tcb_desc->rts_sc); |
503 | SET_TX_DESC_RTS_SHORT(pdesc, | 502 | SET_TX_DESC_RTS_SHORT(pdesc, |
504 | ((tcb_desc->rts_rate <= DESC92_RATE54M) ? | 503 | ((tcb_desc->rts_rate <= DESC_RATE54M) ? |
505 | (tcb_desc->rts_use_shortpreamble ? 1 : 0) | 504 | (tcb_desc->rts_use_shortpreamble ? 1 : 0) |
506 | : (tcb_desc->rts_use_shortgi ? 1 : 0))); | 505 | : (tcb_desc->rts_use_shortgi ? 1 : 0))); |
507 | 506 | ||
@@ -624,7 +623,7 @@ void rtl92ce_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
624 | if (firstseg) | 623 | if (firstseg) |
625 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); | 624 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); |
626 | 625 | ||
627 | SET_TX_DESC_TX_RATE(pdesc, DESC92_RATE1M); | 626 | SET_TX_DESC_TX_RATE(pdesc, DESC_RATE1M); |
628 | 627 | ||
629 | SET_TX_DESC_SEQ(pdesc, 0); | 628 | SET_TX_DESC_SEQ(pdesc, 0); |
630 | 629 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c index c2d8ec6afcda..133e395b7401 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | |||
@@ -880,8 +880,8 @@ static void _rtl92c_query_rxphystatus(struct ieee80211_hw *hw, | |||
880 | pstats->rxpower = rx_pwr_all; | 880 | pstats->rxpower = rx_pwr_all; |
881 | pstats->recvsignalpower = rx_pwr_all; | 881 | pstats->recvsignalpower = rx_pwr_all; |
882 | if (GET_RX_DESC_RX_MCS(pdesc) && | 882 | if (GET_RX_DESC_RX_MCS(pdesc) && |
883 | GET_RX_DESC_RX_MCS(pdesc) >= DESC92_RATEMCS8 && | 883 | GET_RX_DESC_RX_MCS(pdesc) >= DESC_RATEMCS8 && |
884 | GET_RX_DESC_RX_MCS(pdesc) <= DESC92_RATEMCS15) | 884 | GET_RX_DESC_RX_MCS(pdesc) <= DESC_RATEMCS15) |
885 | max_spatial_stream = 2; | 885 | max_spatial_stream = 2; |
886 | else | 886 | else |
887 | max_spatial_stream = 1; | 887 | max_spatial_stream = 1; |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c index e06bafee37f9..90a714c189a8 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | |||
@@ -257,20 +257,20 @@ static struct rtl_hal_cfg rtl92cu_hal_cfg = { | |||
257 | .maps[RTL_IMR_ROK] = IMR_ROK, | 257 | .maps[RTL_IMR_ROK] = IMR_ROK, |
258 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), | 258 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), |
259 | 259 | ||
260 | .maps[RTL_RC_CCK_RATE1M] = DESC92_RATE1M, | 260 | .maps[RTL_RC_CCK_RATE1M] = DESC_RATE1M, |
261 | .maps[RTL_RC_CCK_RATE2M] = DESC92_RATE2M, | 261 | .maps[RTL_RC_CCK_RATE2M] = DESC_RATE2M, |
262 | .maps[RTL_RC_CCK_RATE5_5M] = DESC92_RATE5_5M, | 262 | .maps[RTL_RC_CCK_RATE5_5M] = DESC_RATE5_5M, |
263 | .maps[RTL_RC_CCK_RATE11M] = DESC92_RATE11M, | 263 | .maps[RTL_RC_CCK_RATE11M] = DESC_RATE11M, |
264 | .maps[RTL_RC_OFDM_RATE6M] = DESC92_RATE6M, | 264 | .maps[RTL_RC_OFDM_RATE6M] = DESC_RATE6M, |
265 | .maps[RTL_RC_OFDM_RATE9M] = DESC92_RATE9M, | 265 | .maps[RTL_RC_OFDM_RATE9M] = DESC_RATE9M, |
266 | .maps[RTL_RC_OFDM_RATE12M] = DESC92_RATE12M, | 266 | .maps[RTL_RC_OFDM_RATE12M] = DESC_RATE12M, |
267 | .maps[RTL_RC_OFDM_RATE18M] = DESC92_RATE18M, | 267 | .maps[RTL_RC_OFDM_RATE18M] = DESC_RATE18M, |
268 | .maps[RTL_RC_OFDM_RATE24M] = DESC92_RATE24M, | 268 | .maps[RTL_RC_OFDM_RATE24M] = DESC_RATE24M, |
269 | .maps[RTL_RC_OFDM_RATE36M] = DESC92_RATE36M, | 269 | .maps[RTL_RC_OFDM_RATE36M] = DESC_RATE36M, |
270 | .maps[RTL_RC_OFDM_RATE48M] = DESC92_RATE48M, | 270 | .maps[RTL_RC_OFDM_RATE48M] = DESC_RATE48M, |
271 | .maps[RTL_RC_OFDM_RATE54M] = DESC92_RATE54M, | 271 | .maps[RTL_RC_OFDM_RATE54M] = DESC_RATE54M, |
272 | .maps[RTL_RC_HT_RATEMCS7] = DESC92_RATEMCS7, | 272 | .maps[RTL_RC_HT_RATEMCS7] = DESC_RATEMCS7, |
273 | .maps[RTL_RC_HT_RATEMCS15] = DESC92_RATEMCS15, | 273 | .maps[RTL_RC_HT_RATEMCS15] = DESC_RATEMCS15, |
274 | }; | 274 | }; |
275 | 275 | ||
276 | #define USB_VENDER_ID_REALTEK 0x0bda | 276 | #define USB_VENDER_ID_REALTEK 0x0bda |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c index f383d5f1fed5..cbead007171f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/trx.c | |||
@@ -325,6 +325,7 @@ bool rtl92cu_rx_query_desc(struct ieee80211_hw *hw, | |||
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); |
328 | stats->is_ht = (bool)GET_RX_DESC_RX_HT(pdesc); | ||
328 | rx_status->freq = hw->conf.chandef.chan->center_freq; | 329 | rx_status->freq = hw->conf.chandef.chan->center_freq; |
329 | rx_status->band = hw->conf.chandef.chan->band; | 330 | rx_status->band = hw->conf.chandef.chan->band; |
330 | if (GET_RX_DESC_CRC32(pdesc)) | 331 | if (GET_RX_DESC_CRC32(pdesc)) |
@@ -338,10 +339,8 @@ bool rtl92cu_rx_query_desc(struct ieee80211_hw *hw, | |||
338 | rx_status->flag |= RX_FLAG_MACTIME_START; | 339 | rx_status->flag |= RX_FLAG_MACTIME_START; |
339 | if (stats->decrypted) | 340 | if (stats->decrypted) |
340 | rx_status->flag |= RX_FLAG_DECRYPTED; | 341 | rx_status->flag |= RX_FLAG_DECRYPTED; |
341 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, | 342 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, stats->is_ht, |
342 | (bool)GET_RX_DESC_RX_HT(pdesc), | 343 | false, stats->rate); |
343 | (u8)GET_RX_DESC_RX_MCS(pdesc), | ||
344 | (bool)GET_RX_DESC_PAGGR(pdesc)); | ||
345 | rx_status->mactime = GET_RX_DESC_TSFL(pdesc); | 344 | rx_status->mactime = GET_RX_DESC_TSFL(pdesc); |
346 | if (phystatus) { | 345 | if (phystatus) { |
347 | p_drvinfo = (struct rx_fwinfo_92c *)(skb->data + | 346 | p_drvinfo = (struct rx_fwinfo_92c *)(skb->data + |
@@ -393,6 +392,7 @@ static void _rtl_rx_process(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
393 | && (GET_RX_DESC_FAGGR(rxdesc) == 1)); | 392 | && (GET_RX_DESC_FAGGR(rxdesc) == 1)); |
394 | stats.timestamp_low = GET_RX_DESC_TSFL(rxdesc); | 393 | stats.timestamp_low = GET_RX_DESC_TSFL(rxdesc); |
395 | stats.rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(rxdesc); | 394 | stats.rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(rxdesc); |
395 | stats.is_ht = (bool)GET_RX_DESC_RX_HT(rxdesc); | ||
396 | /* TODO: is center_freq changed when doing scan? */ | 396 | /* TODO: is center_freq changed when doing scan? */ |
397 | /* TODO: Shall we add protection or just skip those two step? */ | 397 | /* TODO: Shall we add protection or just skip those two step? */ |
398 | rx_status->freq = hw->conf.chandef.chan->center_freq; | 398 | rx_status->freq = hw->conf.chandef.chan->center_freq; |
@@ -406,10 +406,8 @@ static void _rtl_rx_process(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
406 | if (GET_RX_DESC_RX_HT(rxdesc)) | 406 | if (GET_RX_DESC_RX_HT(rxdesc)) |
407 | rx_status->flag |= RX_FLAG_HT; | 407 | rx_status->flag |= RX_FLAG_HT; |
408 | /* Data rate */ | 408 | /* Data rate */ |
409 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, | 409 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, stats.is_ht, |
410 | (bool)GET_RX_DESC_RX_HT(rxdesc), | 410 | false, stats.rate); |
411 | (u8)GET_RX_DESC_RX_MCS(rxdesc), | ||
412 | (bool)GET_RX_DESC_PAGGR(rxdesc)); | ||
413 | /* There is a phy status after this rx descriptor. */ | 411 | /* There is a phy status after this rx descriptor. */ |
414 | if (GET_RX_DESC_PHY_STATUS(rxdesc)) { | 412 | if (GET_RX_DESC_PHY_STATUS(rxdesc)) { |
415 | p_drvinfo = (struct rx_fwinfo_92c *)(rxdesc + RTL_RX_DESC_SIZE); | 413 | p_drvinfo = (struct rx_fwinfo_92c *)(rxdesc + RTL_RX_DESC_SIZE); |
@@ -545,7 +543,7 @@ void rtl92cu_tx_fill_desc(struct ieee80211_hw *hw, | |||
545 | SET_TX_DESC_RTS_BW(txdesc, 0); | 543 | SET_TX_DESC_RTS_BW(txdesc, 0); |
546 | SET_TX_DESC_RTS_SC(txdesc, tcb_desc->rts_sc); | 544 | SET_TX_DESC_RTS_SC(txdesc, tcb_desc->rts_sc); |
547 | SET_TX_DESC_RTS_SHORT(txdesc, | 545 | SET_TX_DESC_RTS_SHORT(txdesc, |
548 | ((tcb_desc->rts_rate <= DESC92_RATE54M) ? | 546 | ((tcb_desc->rts_rate <= DESC_RATE54M) ? |
549 | (tcb_desc->rts_use_shortpreamble ? 1 : 0) | 547 | (tcb_desc->rts_use_shortpreamble ? 1 : 0) |
550 | : (tcb_desc->rts_use_shortgi ? 1 : 0))); | 548 | : (tcb_desc->rts_use_shortgi ? 1 : 0))); |
551 | if (mac->bw_40) { | 549 | if (mac->bw_40) { |
@@ -644,7 +642,7 @@ void rtl92cu_fill_fake_txdesc(struct ieee80211_hw *hw, u8 * pDesc, | |||
644 | } | 642 | } |
645 | SET_TX_DESC_USE_RATE(pDesc, 1); /* use data rate which is set by Sw */ | 643 | SET_TX_DESC_USE_RATE(pDesc, 1); /* use data rate which is set by Sw */ |
646 | SET_TX_DESC_OWN(pDesc, 1); | 644 | SET_TX_DESC_OWN(pDesc, 1); |
647 | SET_TX_DESC_TX_RATE(pDesc, DESC92_RATE1M); | 645 | SET_TX_DESC_TX_RATE(pDesc, DESC_RATE1M); |
648 | _rtl_tx_desc_checksum(pDesc); | 646 | _rtl_tx_desc_checksum(pDesc); |
649 | } | 647 | } |
650 | 648 | ||
@@ -660,7 +658,7 @@ void rtl92cu_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
660 | memset((void *)pdesc, 0, RTL_TX_HEADER_SIZE); | 658 | memset((void *)pdesc, 0, RTL_TX_HEADER_SIZE); |
661 | if (firstseg) | 659 | if (firstseg) |
662 | SET_TX_DESC_OFFSET(pdesc, RTL_TX_HEADER_SIZE); | 660 | SET_TX_DESC_OFFSET(pdesc, RTL_TX_HEADER_SIZE); |
663 | SET_TX_DESC_TX_RATE(pdesc, DESC92_RATE1M); | 661 | SET_TX_DESC_TX_RATE(pdesc, DESC_RATE1M); |
664 | SET_TX_DESC_SEQ(pdesc, 0); | 662 | SET_TX_DESC_SEQ(pdesc, 0); |
665 | SET_TX_DESC_LINIP(pdesc, 0); | 663 | SET_TX_DESC_LINIP(pdesc, 0); |
666 | SET_TX_DESC_QUEUE_SEL(pdesc, fw_queue); | 664 | SET_TX_DESC_QUEUE_SEL(pdesc, fw_queue); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c index 304c443b89b2..a1be5a68edfb 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include "../wifi.h" | 30 | #include "../wifi.h" |
31 | #include "../base.h" | 31 | #include "../base.h" |
32 | #include "../core.h" | ||
32 | #include "reg.h" | 33 | #include "reg.h" |
33 | #include "def.h" | 34 | #include "def.h" |
34 | #include "phy.h" | 35 | #include "phy.h" |
@@ -155,34 +156,6 @@ static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = { | |||
155 | {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB */ | 156 | {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB */ |
156 | }; | 157 | }; |
157 | 158 | ||
158 | static void rtl92d_dm_diginit(struct ieee80211_hw *hw) | ||
159 | { | ||
160 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
161 | struct dig_t *de_digtable = &rtlpriv->dm_digtable; | ||
162 | |||
163 | de_digtable->dig_enable_flag = true; | ||
164 | de_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | ||
165 | de_digtable->cur_igvalue = 0x20; | ||
166 | de_digtable->pre_igvalue = 0x0; | ||
167 | de_digtable->cursta_cstate = DIG_STA_DISCONNECT; | ||
168 | de_digtable->presta_cstate = DIG_STA_DISCONNECT; | ||
169 | de_digtable->curmultista_cstate = DIG_MULTISTA_DISCONNECT; | ||
170 | de_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
171 | de_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
172 | de_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
173 | de_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
174 | de_digtable->rx_gain_max = DM_DIG_FA_UPPER; | ||
175 | de_digtable->rx_gain_min = DM_DIG_FA_LOWER; | ||
176 | de_digtable->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
177 | de_digtable->back_range_max = DM_DIG_BACKOFF_MAX; | ||
178 | de_digtable->back_range_min = DM_DIG_BACKOFF_MIN; | ||
179 | de_digtable->pre_cck_pd_state = CCK_PD_STAGE_LOWRSSI; | ||
180 | de_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; | ||
181 | de_digtable->large_fa_hit = 0; | ||
182 | de_digtable->recover_cnt = 0; | ||
183 | de_digtable->forbidden_igi = DM_DIG_FA_LOWER; | ||
184 | } | ||
185 | |||
186 | static void rtl92d_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) | 159 | static void rtl92d_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) |
187 | { | 160 | { |
188 | u32 ret_value; | 161 | u32 ret_value; |
@@ -1305,7 +1278,9 @@ void rtl92d_dm_init(struct ieee80211_hw *hw) | |||
1305 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1278 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1306 | 1279 | ||
1307 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; | 1280 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; |
1308 | rtl92d_dm_diginit(hw); | 1281 | rtl_dm_diginit(hw, 0x20); |
1282 | rtlpriv->dm_digtable.rx_gain_max = DM_DIG_FA_UPPER; | ||
1283 | rtlpriv->dm_digtable.rx_gain_min = DM_DIG_FA_LOWER; | ||
1309 | rtl92d_dm_init_dynamic_txpower(hw); | 1284 | rtl92d_dm_init_dynamic_txpower(hw); |
1310 | rtl92d_dm_init_edca_turbo(hw); | 1285 | rtl92d_dm_init_edca_turbo(hw); |
1311 | rtl92d_dm_init_rate_adaptive_mask(hw); | 1286 | rtl92d_dm_init_rate_adaptive_mask(hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/dm.h b/drivers/net/wireless/rtlwifi/rtl8192de/dm.h index 3fea0c11c24a..f2d318ceeb28 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8192de/dm.h | |||
@@ -42,25 +42,12 @@ | |||
42 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 42 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
43 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 43 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
44 | 44 | ||
45 | #define DM_DIG_THRESH_HIGH 40 | ||
46 | #define DM_DIG_THRESH_LOW 35 | ||
47 | |||
48 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
49 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
50 | |||
51 | #define DM_DIG_MAX 0x3e | ||
52 | #define DM_DIG_MIN 0x1c | ||
53 | |||
54 | #define DM_DIG_FA_UPPER 0x32 | 45 | #define DM_DIG_FA_UPPER 0x32 |
55 | #define DM_DIG_FA_LOWER 0x20 | 46 | #define DM_DIG_FA_LOWER 0x20 |
56 | #define DM_DIG_FA_TH0 0x100 | 47 | #define DM_DIG_FA_TH0 0x100 |
57 | #define DM_DIG_FA_TH1 0x400 | 48 | #define DM_DIG_FA_TH1 0x400 |
58 | #define DM_DIG_FA_TH2 0x600 | 49 | #define DM_DIG_FA_TH2 0x600 |
59 | 50 | ||
60 | #define DM_DIG_BACKOFF_MAX 12 | ||
61 | #define DM_DIG_BACKOFF_MIN -4 | ||
62 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
63 | |||
64 | #define RXPATHSELECTION_SS_TH_lOW 30 | 51 | #define RXPATHSELECTION_SS_TH_lOW 30 |
65 | #define RXPATHSELECTION_DIFF_TH 18 | 52 | #define RXPATHSELECTION_DIFF_TH 18 |
66 | 53 | ||
@@ -108,14 +95,6 @@ enum tag_dynamic_init_gain_operation_type_definition { | |||
108 | DIG_OP_TYPE_MAX | 95 | DIG_OP_TYPE_MAX |
109 | }; | 96 | }; |
110 | 97 | ||
111 | enum tag_cck_packet_detection_threshold_type_definition { | ||
112 | CCK_PD_STAGE_LOWRSSI = 0, | ||
113 | CCK_PD_STAGE_HIGHRSSI = 1, | ||
114 | CCK_FA_STAGE_LOW = 2, | ||
115 | CCK_FA_STAGE_HIGH = 3, | ||
116 | CCK_PD_STAGE_MAX = 4, | ||
117 | }; | ||
118 | |||
119 | enum dm_1r_cca { | 98 | enum dm_1r_cca { |
120 | CCA_1R = 0, | 99 | CCA_1R = 0, |
121 | CCA_2R = 1, | 100 | CCA_2R = 1, |
@@ -134,23 +113,6 @@ enum dm_sw_ant_switch { | |||
134 | ANS_ANTENNA_MAX = 3, | 113 | ANS_ANTENNA_MAX = 3, |
135 | }; | 114 | }; |
136 | 115 | ||
137 | enum dm_dig_ext_port_alg { | ||
138 | DIG_EXT_PORT_STAGE_0 = 0, | ||
139 | DIG_EXT_PORT_STAGE_1 = 1, | ||
140 | DIG_EXT_PORT_STAGE_2 = 2, | ||
141 | DIG_EXT_PORT_STAGE_3 = 3, | ||
142 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
143 | }; | ||
144 | |||
145 | enum dm_dig_connect { | ||
146 | DIG_STA_DISCONNECT = 0, | ||
147 | DIG_STA_CONNECT = 1, | ||
148 | DIG_STA_BEFORE_CONNECT = 2, | ||
149 | DIG_MULTISTA_DISCONNECT = 3, | ||
150 | DIG_MULTISTA_CONNECT = 4, | ||
151 | DIG_CONNECT_MAX | ||
152 | }; | ||
153 | |||
154 | void rtl92d_dm_init(struct ieee80211_hw *hw); | 116 | void rtl92d_dm_init(struct ieee80211_hw *hw); |
155 | void rtl92d_dm_watchdog(struct ieee80211_hw *hw); | 117 | void rtl92d_dm_watchdog(struct ieee80211_hw *hw); |
156 | void rtl92d_dm_init_edca_turbo(struct ieee80211_hw *hw); | 118 | void rtl92d_dm_init_edca_turbo(struct ieee80211_hw *hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/fw.c b/drivers/net/wireless/rtlwifi/rtl8192de/fw.c index 23177076b97f..62ef8209718f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/fw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/fw.c | |||
@@ -540,23 +540,6 @@ void rtl92d_fill_h2c_cmd(struct ieee80211_hw *hw, | |||
540 | return; | 540 | return; |
541 | } | 541 | } |
542 | 542 | ||
543 | void rtl92d_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode) | ||
544 | { | ||
545 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
546 | u8 u1_h2c_set_pwrmode[3] = { 0 }; | ||
547 | struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw)); | ||
548 | |||
549 | RT_TRACE(rtlpriv, COMP_POWER, DBG_LOUD, "FW LPS mode = %d\n", mode); | ||
550 | SET_H2CCMD_PWRMODE_PARM_MODE(u1_h2c_set_pwrmode, mode); | ||
551 | SET_H2CCMD_PWRMODE_PARM_SMART_PS(u1_h2c_set_pwrmode, 1); | ||
552 | SET_H2CCMD_PWRMODE_PARM_BCN_PASS_TIME(u1_h2c_set_pwrmode, | ||
553 | ppsc->reg_max_lps_awakeintvl); | ||
554 | RT_PRINT_DATA(rtlpriv, COMP_CMD, DBG_DMESG, | ||
555 | "rtl92d_set_fw_rsvdpagepkt(): u1_h2c_set_pwrmode", | ||
556 | u1_h2c_set_pwrmode, 3); | ||
557 | rtl92d_fill_h2c_cmd(hw, H2C_SETPWRMODE, 3, u1_h2c_set_pwrmode); | ||
558 | } | ||
559 | |||
560 | static bool _rtl92d_cmd_send_packet(struct ieee80211_hw *hw, | 543 | static bool _rtl92d_cmd_send_packet(struct ieee80211_hw *hw, |
561 | struct sk_buff *skb) | 544 | struct sk_buff *skb) |
562 | { | 545 | { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/fw.h b/drivers/net/wireless/rtlwifi/rtl8192de/fw.h index a55a803a0b4d..1646e7c3d0f8 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/fw.h +++ b/drivers/net/wireless/rtlwifi/rtl8192de/fw.h | |||
@@ -136,7 +136,6 @@ int rtl92d_download_fw(struct ieee80211_hw *hw); | |||
136 | void rtl92d_fill_h2c_cmd(struct ieee80211_hw *hw, u8 element_id, | 136 | void rtl92d_fill_h2c_cmd(struct ieee80211_hw *hw, u8 element_id, |
137 | u32 cmd_len, u8 *p_cmdbuffer); | 137 | u32 cmd_len, u8 *p_cmdbuffer); |
138 | void rtl92d_firmware_selfreset(struct ieee80211_hw *hw); | 138 | void rtl92d_firmware_selfreset(struct ieee80211_hw *hw); |
139 | void rtl92d_set_fw_pwrmode_cmd(struct ieee80211_hw *hw, u8 mode); | ||
140 | void rtl92d_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished); | 139 | void rtl92d_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished); |
141 | void rtl92d_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus); | 140 | void rtl92d_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus); |
142 | 141 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/hw.c b/drivers/net/wireless/rtlwifi/rtl8192de/hw.c index 280c3da42993..01bcc2d218dc 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/hw.c | |||
@@ -546,7 +546,7 @@ static bool _rtl92de_llt_table_init(struct ieee80211_hw *hw) | |||
546 | txpktbuf_bndy = 246; | 546 | txpktbuf_bndy = 246; |
547 | value8 = 0; | 547 | value8 = 0; |
548 | value32 = 0x80bf0d29; | 548 | value32 = 0x80bf0d29; |
549 | } else if (rtlpriv->rtlhal.macphymode != SINGLEMAC_SINGLEPHY) { | 549 | } else { |
550 | maxPage = 127; | 550 | maxPage = 127; |
551 | txpktbuf_bndy = 123; | 551 | txpktbuf_bndy = 123; |
552 | value8 = 0; | 552 | value8 = 0; |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/sw.c b/drivers/net/wireless/rtlwifi/rtl8192de/sw.c index a0aba088259a..b19d0398215f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/sw.c | |||
@@ -337,21 +337,21 @@ static struct rtl_hal_cfg rtl92de_hal_cfg = { | |||
337 | .maps[RTL_IMR_ROK] = IMR_ROK, | 337 | .maps[RTL_IMR_ROK] = IMR_ROK, |
338 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), | 338 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), |
339 | 339 | ||
340 | .maps[RTL_RC_CCK_RATE1M] = DESC92_RATE1M, | 340 | .maps[RTL_RC_CCK_RATE1M] = DESC_RATE1M, |
341 | .maps[RTL_RC_CCK_RATE2M] = DESC92_RATE2M, | 341 | .maps[RTL_RC_CCK_RATE2M] = DESC_RATE2M, |
342 | .maps[RTL_RC_CCK_RATE5_5M] = DESC92_RATE5_5M, | 342 | .maps[RTL_RC_CCK_RATE5_5M] = DESC_RATE5_5M, |
343 | .maps[RTL_RC_CCK_RATE11M] = DESC92_RATE11M, | 343 | .maps[RTL_RC_CCK_RATE11M] = DESC_RATE11M, |
344 | .maps[RTL_RC_OFDM_RATE6M] = DESC92_RATE6M, | 344 | .maps[RTL_RC_OFDM_RATE6M] = DESC_RATE6M, |
345 | .maps[RTL_RC_OFDM_RATE9M] = DESC92_RATE9M, | 345 | .maps[RTL_RC_OFDM_RATE9M] = DESC_RATE9M, |
346 | .maps[RTL_RC_OFDM_RATE12M] = DESC92_RATE12M, | 346 | .maps[RTL_RC_OFDM_RATE12M] = DESC_RATE12M, |
347 | .maps[RTL_RC_OFDM_RATE18M] = DESC92_RATE18M, | 347 | .maps[RTL_RC_OFDM_RATE18M] = DESC_RATE18M, |
348 | .maps[RTL_RC_OFDM_RATE24M] = DESC92_RATE24M, | 348 | .maps[RTL_RC_OFDM_RATE24M] = DESC_RATE24M, |
349 | .maps[RTL_RC_OFDM_RATE36M] = DESC92_RATE36M, | 349 | .maps[RTL_RC_OFDM_RATE36M] = DESC_RATE36M, |
350 | .maps[RTL_RC_OFDM_RATE48M] = DESC92_RATE48M, | 350 | .maps[RTL_RC_OFDM_RATE48M] = DESC_RATE48M, |
351 | .maps[RTL_RC_OFDM_RATE54M] = DESC92_RATE54M, | 351 | .maps[RTL_RC_OFDM_RATE54M] = DESC_RATE54M, |
352 | 352 | ||
353 | .maps[RTL_RC_HT_RATEMCS7] = DESC92_RATEMCS7, | 353 | .maps[RTL_RC_HT_RATEMCS7] = DESC_RATEMCS7, |
354 | .maps[RTL_RC_HT_RATEMCS15] = DESC92_RATEMCS15, | 354 | .maps[RTL_RC_HT_RATEMCS15] = DESC_RATEMCS15, |
355 | }; | 355 | }; |
356 | 356 | ||
357 | static struct pci_device_id rtl92de_pci_ids[] = { | 357 | static struct pci_device_id rtl92de_pci_ids[] = { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c index 8efbcc7af250..1feaa629dd4f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c | |||
@@ -235,8 +235,8 @@ static void _rtl92de_query_rxphystatus(struct ieee80211_hw *hw, | |||
235 | pstats->rx_pwdb_all = pwdb_all; | 235 | pstats->rx_pwdb_all = pwdb_all; |
236 | pstats->rxpower = rx_pwr_all; | 236 | pstats->rxpower = rx_pwr_all; |
237 | pstats->recvsignalpower = rx_pwr_all; | 237 | pstats->recvsignalpower = rx_pwr_all; |
238 | if (pdesc->rxht && pdesc->rxmcs >= DESC92_RATEMCS8 && | 238 | if (pdesc->rxht && pdesc->rxmcs >= DESC_RATEMCS8 && |
239 | pdesc->rxmcs <= DESC92_RATEMCS15) | 239 | pdesc->rxmcs <= DESC_RATEMCS15) |
240 | max_spatial_stream = 2; | 240 | max_spatial_stream = 2; |
241 | else | 241 | else |
242 | max_spatial_stream = 1; | 242 | max_spatial_stream = 1; |
@@ -499,6 +499,7 @@ bool rtl92de_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, | |||
499 | && (GET_RX_DESC_FAGGR(pdesc) == 1)); | 499 | && (GET_RX_DESC_FAGGR(pdesc) == 1)); |
500 | stats->timestamp_low = GET_RX_DESC_TSFL(pdesc); | 500 | stats->timestamp_low = GET_RX_DESC_TSFL(pdesc); |
501 | stats->rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(pdesc); | 501 | stats->rx_is40Mhzpacket = (bool) GET_RX_DESC_BW(pdesc); |
502 | stats->is_ht = (bool)GET_RX_DESC_RXHT(pdesc); | ||
502 | rx_status->freq = hw->conf.chandef.chan->center_freq; | 503 | rx_status->freq = hw->conf.chandef.chan->center_freq; |
503 | rx_status->band = hw->conf.chandef.chan->band; | 504 | rx_status->band = hw->conf.chandef.chan->band; |
504 | if (GET_RX_DESC_CRC32(pdesc)) | 505 | if (GET_RX_DESC_CRC32(pdesc)) |
@@ -512,10 +513,8 @@ bool rtl92de_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, | |||
512 | rx_status->flag |= RX_FLAG_MACTIME_START; | 513 | rx_status->flag |= RX_FLAG_MACTIME_START; |
513 | if (stats->decrypted) | 514 | if (stats->decrypted) |
514 | rx_status->flag |= RX_FLAG_DECRYPTED; | 515 | rx_status->flag |= RX_FLAG_DECRYPTED; |
515 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, | 516 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, stats->is_ht, |
516 | (bool)GET_RX_DESC_RXHT(pdesc), | 517 | false, stats->rate); |
517 | (u8)GET_RX_DESC_RXMCS(pdesc), | ||
518 | (bool)GET_RX_DESC_PAGGR(pdesc)); | ||
519 | rx_status->mactime = GET_RX_DESC_TSFL(pdesc); | 518 | rx_status->mactime = GET_RX_DESC_TSFL(pdesc); |
520 | if (phystatus) { | 519 | if (phystatus) { |
521 | p_drvinfo = (struct rx_fwinfo_92d *)(skb->data + | 520 | p_drvinfo = (struct rx_fwinfo_92d *)(skb->data + |
@@ -612,14 +611,14 @@ void rtl92de_tx_fill_desc(struct ieee80211_hw *hw, | |||
612 | } | 611 | } |
613 | /* 5G have no CCK rate */ | 612 | /* 5G have no CCK rate */ |
614 | if (rtlhal->current_bandtype == BAND_ON_5G) | 613 | if (rtlhal->current_bandtype == BAND_ON_5G) |
615 | if (ptcb_desc->hw_rate < DESC92_RATE6M) | 614 | if (ptcb_desc->hw_rate < DESC_RATE6M) |
616 | ptcb_desc->hw_rate = DESC92_RATE6M; | 615 | ptcb_desc->hw_rate = DESC_RATE6M; |
617 | SET_TX_DESC_TX_RATE(pdesc, ptcb_desc->hw_rate); | 616 | SET_TX_DESC_TX_RATE(pdesc, ptcb_desc->hw_rate); |
618 | if (ptcb_desc->use_shortgi || ptcb_desc->use_shortpreamble) | 617 | if (ptcb_desc->use_shortgi || ptcb_desc->use_shortpreamble) |
619 | SET_TX_DESC_DATA_SHORTGI(pdesc, 1); | 618 | SET_TX_DESC_DATA_SHORTGI(pdesc, 1); |
620 | 619 | ||
621 | if (rtlhal->macphymode == DUALMAC_DUALPHY && | 620 | if (rtlhal->macphymode == DUALMAC_DUALPHY && |
622 | ptcb_desc->hw_rate == DESC92_RATEMCS7) | 621 | ptcb_desc->hw_rate == DESC_RATEMCS7) |
623 | SET_TX_DESC_DATA_SHORTGI(pdesc, 1); | 622 | SET_TX_DESC_DATA_SHORTGI(pdesc, 1); |
624 | 623 | ||
625 | if (info->flags & IEEE80211_TX_CTL_AMPDU) { | 624 | if (info->flags & IEEE80211_TX_CTL_AMPDU) { |
@@ -635,13 +634,13 @@ void rtl92de_tx_fill_desc(struct ieee80211_hw *hw, | |||
635 | SET_TX_DESC_RTS_STBC(pdesc, ((ptcb_desc->rts_stbc) ? 1 : 0)); | 634 | SET_TX_DESC_RTS_STBC(pdesc, ((ptcb_desc->rts_stbc) ? 1 : 0)); |
636 | /* 5G have no CCK rate */ | 635 | /* 5G have no CCK rate */ |
637 | if (rtlhal->current_bandtype == BAND_ON_5G) | 636 | if (rtlhal->current_bandtype == BAND_ON_5G) |
638 | if (ptcb_desc->rts_rate < DESC92_RATE6M) | 637 | if (ptcb_desc->rts_rate < DESC_RATE6M) |
639 | ptcb_desc->rts_rate = DESC92_RATE6M; | 638 | ptcb_desc->rts_rate = DESC_RATE6M; |
640 | SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); | 639 | SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); |
641 | SET_TX_DESC_RTS_BW(pdesc, 0); | 640 | SET_TX_DESC_RTS_BW(pdesc, 0); |
642 | SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); | 641 | SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); |
643 | SET_TX_DESC_RTS_SHORT(pdesc, ((ptcb_desc->rts_rate <= | 642 | SET_TX_DESC_RTS_SHORT(pdesc, ((ptcb_desc->rts_rate <= |
644 | DESC92_RATE54M) ? | 643 | DESC_RATE54M) ? |
645 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) : | 644 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) : |
646 | (ptcb_desc->rts_use_shortgi ? 1 : 0))); | 645 | (ptcb_desc->rts_use_shortgi ? 1 : 0))); |
647 | if (bw_40) { | 646 | if (bw_40) { |
@@ -756,9 +755,9 @@ void rtl92de_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
756 | * The braces are needed no matter what checkpatch says | 755 | * The braces are needed no matter what checkpatch says |
757 | */ | 756 | */ |
758 | if (rtlhal->current_bandtype == BAND_ON_5G) { | 757 | if (rtlhal->current_bandtype == BAND_ON_5G) { |
759 | SET_TX_DESC_TX_RATE(pdesc, DESC92_RATE6M); | 758 | SET_TX_DESC_TX_RATE(pdesc, DESC_RATE6M); |
760 | } else { | 759 | } else { |
761 | SET_TX_DESC_TX_RATE(pdesc, DESC92_RATE1M); | 760 | SET_TX_DESC_TX_RATE(pdesc, DESC_RATE1M); |
762 | } | 761 | } |
763 | SET_TX_DESC_SEQ(pdesc, 0); | 762 | SET_TX_DESC_SEQ(pdesc, 0); |
764 | SET_TX_DESC_LINIP(pdesc, 0); | 763 | SET_TX_DESC_LINIP(pdesc, 0); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ee/dm.c b/drivers/net/wireless/rtlwifi/rtl8192ee/dm.c index 77deedf79d1d..459f3d0efa2f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ee/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ee/dm.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "../wifi.h" | 26 | #include "../wifi.h" |
27 | #include "../base.h" | 27 | #include "../base.h" |
28 | #include "../pci.h" | 28 | #include "../pci.h" |
29 | #include "../core.h" | ||
29 | #include "reg.h" | 30 | #include "reg.h" |
30 | #include "def.h" | 31 | #include "def.h" |
31 | #include "phy.h" | 32 | #include "phy.h" |
@@ -151,35 +152,6 @@ static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = { | |||
151 | {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB */ | 152 | {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} /* 32, -16.0dB */ |
152 | }; | 153 | }; |
153 | 154 | ||
154 | static void rtl92ee_dm_diginit(struct ieee80211_hw *hw) | ||
155 | { | ||
156 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
157 | struct dig_t *dm_dig = &rtlpriv->dm_digtable; | ||
158 | |||
159 | dm_dig->cur_igvalue = rtl_get_bbreg(hw, DM_REG_IGI_A_11N, | ||
160 | DM_BIT_IGI_11N); | ||
161 | dm_dig->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
162 | dm_dig->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
163 | dm_dig->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
164 | dm_dig->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
165 | dm_dig->rx_gain_max = DM_DIG_MAX; | ||
166 | dm_dig->rx_gain_min = DM_DIG_MIN; | ||
167 | dm_dig->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
168 | dm_dig->back_range_max = DM_DIG_BACKOFF_MAX; | ||
169 | dm_dig->back_range_min = DM_DIG_BACKOFF_MIN; | ||
170 | dm_dig->pre_cck_cca_thres = 0xff; | ||
171 | dm_dig->cur_cck_cca_thres = 0x83; | ||
172 | dm_dig->forbidden_igi = DM_DIG_MIN; | ||
173 | dm_dig->large_fa_hit = 0; | ||
174 | dm_dig->recover_cnt = 0; | ||
175 | dm_dig->dig_dynamic_min = DM_DIG_MIN; | ||
176 | dm_dig->dig_dynamic_min_1 = DM_DIG_MIN; | ||
177 | dm_dig->media_connect_0 = false; | ||
178 | dm_dig->media_connect_1 = false; | ||
179 | rtlpriv->dm.dm_initialgain_enable = true; | ||
180 | dm_dig->bt30_cur_igi = 0x32; | ||
181 | } | ||
182 | |||
183 | static void rtl92ee_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) | 155 | static void rtl92ee_dm_false_alarm_counter_statistics(struct ieee80211_hw *hw) |
184 | { | 156 | { |
185 | u32 ret_value; | 157 | u32 ret_value; |
@@ -298,7 +270,7 @@ static void rtl92ee_dm_dig(struct ieee80211_hw *hw) | |||
298 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 270 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
299 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 271 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
300 | struct dig_t *dm_dig = &rtlpriv->dm_digtable; | 272 | struct dig_t *dm_dig = &rtlpriv->dm_digtable; |
301 | u8 dig_dynamic_min , dig_maxofmin; | 273 | u8 dig_min_0, dig_maxofmin; |
302 | bool bfirstconnect , bfirstdisconnect; | 274 | bool bfirstconnect , bfirstdisconnect; |
303 | u8 dm_dig_max, dm_dig_min; | 275 | u8 dm_dig_max, dm_dig_min; |
304 | u8 current_igi = dm_dig->cur_igvalue; | 276 | u8 current_igi = dm_dig->cur_igvalue; |
@@ -308,7 +280,7 @@ static void rtl92ee_dm_dig(struct ieee80211_hw *hw) | |||
308 | if (mac->act_scanning) | 280 | if (mac->act_scanning) |
309 | return; | 281 | return; |
310 | 282 | ||
311 | dig_dynamic_min = dm_dig->dig_dynamic_min; | 283 | dig_min_0 = dm_dig->dig_min_0; |
312 | bfirstconnect = (mac->link_state >= MAC80211_LINKED) && | 284 | bfirstconnect = (mac->link_state >= MAC80211_LINKED) && |
313 | !dm_dig->media_connect_0; | 285 | !dm_dig->media_connect_0; |
314 | bfirstdisconnect = (mac->link_state < MAC80211_LINKED) && | 286 | bfirstdisconnect = (mac->link_state < MAC80211_LINKED) && |
@@ -329,19 +301,19 @@ static void rtl92ee_dm_dig(struct ieee80211_hw *hw) | |||
329 | if (rtlpriv->dm.one_entry_only) { | 301 | if (rtlpriv->dm.one_entry_only) { |
330 | offset = 0; | 302 | offset = 0; |
331 | if (dm_dig->rssi_val_min - offset < dm_dig_min) | 303 | if (dm_dig->rssi_val_min - offset < dm_dig_min) |
332 | dig_dynamic_min = dm_dig_min; | 304 | dig_min_0 = dm_dig_min; |
333 | else if (dm_dig->rssi_val_min - offset > | 305 | else if (dm_dig->rssi_val_min - offset > |
334 | dig_maxofmin) | 306 | dig_maxofmin) |
335 | dig_dynamic_min = dig_maxofmin; | 307 | dig_min_0 = dig_maxofmin; |
336 | else | 308 | else |
337 | dig_dynamic_min = dm_dig->rssi_val_min - offset; | 309 | dig_min_0 = dm_dig->rssi_val_min - offset; |
338 | } else { | 310 | } else { |
339 | dig_dynamic_min = dm_dig_min; | 311 | dig_min_0 = dm_dig_min; |
340 | } | 312 | } |
341 | 313 | ||
342 | } else { | 314 | } else { |
343 | dm_dig->rx_gain_max = dm_dig_max; | 315 | dm_dig->rx_gain_max = dm_dig_max; |
344 | dig_dynamic_min = dm_dig_min; | 316 | dig_min_0 = dm_dig_min; |
345 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "no link\n"); | 317 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "no link\n"); |
346 | } | 318 | } |
347 | 319 | ||
@@ -368,10 +340,10 @@ static void rtl92ee_dm_dig(struct ieee80211_hw *hw) | |||
368 | } else { | 340 | } else { |
369 | if (dm_dig->large_fa_hit < 3) { | 341 | if (dm_dig->large_fa_hit < 3) { |
370 | if ((dm_dig->forbidden_igi - 1) < | 342 | if ((dm_dig->forbidden_igi - 1) < |
371 | dig_dynamic_min) { | 343 | dig_min_0) { |
372 | dm_dig->forbidden_igi = dig_dynamic_min; | 344 | dm_dig->forbidden_igi = dig_min_0; |
373 | dm_dig->rx_gain_min = | 345 | dm_dig->rx_gain_min = |
374 | dig_dynamic_min; | 346 | dig_min_0; |
375 | } else { | 347 | } else { |
376 | dm_dig->forbidden_igi--; | 348 | dm_dig->forbidden_igi--; |
377 | dm_dig->rx_gain_min = | 349 | dm_dig->rx_gain_min = |
@@ -430,7 +402,7 @@ static void rtl92ee_dm_dig(struct ieee80211_hw *hw) | |||
430 | rtl92ee_dm_write_dig(hw , current_igi); | 402 | rtl92ee_dm_write_dig(hw , current_igi); |
431 | dm_dig->media_connect_0 = ((mac->link_state >= MAC80211_LINKED) ? | 403 | dm_dig->media_connect_0 = ((mac->link_state >= MAC80211_LINKED) ? |
432 | true : false); | 404 | true : false); |
433 | dm_dig->dig_dynamic_min = dig_dynamic_min; | 405 | dm_dig->dig_min_0 = dig_min_0; |
434 | } | 406 | } |
435 | 407 | ||
436 | void rtl92ee_dm_write_cck_cca_thres(struct ieee80211_hw *hw, u8 cur_thres) | 408 | void rtl92ee_dm_write_cck_cca_thres(struct ieee80211_hw *hw, u8 cur_thres) |
@@ -1088,10 +1060,11 @@ static void rtl92ee_dm_init_dynamic_atc_switch(struct ieee80211_hw *hw) | |||
1088 | void rtl92ee_dm_init(struct ieee80211_hw *hw) | 1060 | void rtl92ee_dm_init(struct ieee80211_hw *hw) |
1089 | { | 1061 | { |
1090 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 1062 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
1063 | u32 cur_igvalue = rtl_get_bbreg(hw, DM_REG_IGI_A_11N, DM_BIT_IGI_11N); | ||
1091 | 1064 | ||
1092 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; | 1065 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; |
1093 | 1066 | ||
1094 | rtl92ee_dm_diginit(hw); | 1067 | rtl_dm_diginit(hw, cur_igvalue); |
1095 | rtl92ee_dm_init_rate_adaptive_mask(hw); | 1068 | rtl92ee_dm_init_rate_adaptive_mask(hw); |
1096 | rtl92ee_dm_init_primary_cca_check(hw); | 1069 | rtl92ee_dm_init_primary_cca_check(hw); |
1097 | rtl92ee_dm_init_edca_turbo(hw); | 1070 | rtl92ee_dm_init_edca_turbo(hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ee/dm.h b/drivers/net/wireless/rtlwifi/rtl8192ee/dm.h index 881db7d6fef7..107d5a488fa8 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ee/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ee/dm.h | |||
@@ -189,28 +189,12 @@ | |||
189 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 189 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
190 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 190 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
191 | 191 | ||
192 | #define DM_DIG_THRESH_HIGH 40 | ||
193 | #define DM_DIG_THRESH_LOW 35 | ||
194 | |||
195 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
196 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
197 | |||
198 | #define DM_DIG_MAX 0x3e | ||
199 | #define DM_DIG_MIN 0x1e | ||
200 | |||
201 | #define DM_DIG_MAX_AP 0x32 | ||
202 | #define DM_DIG_MIN_AP 0x20 | ||
203 | |||
204 | #define DM_DIG_FA_UPPER 0x3e | 192 | #define DM_DIG_FA_UPPER 0x3e |
205 | #define DM_DIG_FA_LOWER 0x1e | 193 | #define DM_DIG_FA_LOWER 0x1e |
206 | #define DM_DIG_FA_TH0 0x200 | 194 | #define DM_DIG_FA_TH0 0x200 |
207 | #define DM_DIG_FA_TH1 0x300 | 195 | #define DM_DIG_FA_TH1 0x300 |
208 | #define DM_DIG_FA_TH2 0x400 | 196 | #define DM_DIG_FA_TH2 0x400 |
209 | 197 | ||
210 | #define DM_DIG_BACKOFF_MAX 12 | ||
211 | #define DM_DIG_BACKOFF_MIN -4 | ||
212 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
213 | |||
214 | #define RXPATHSELECTION_SS_TH_LOW 30 | 198 | #define RXPATHSELECTION_SS_TH_LOW 30 |
215 | #define RXPATHSELECTION_DIFF_TH 18 | 199 | #define RXPATHSELECTION_DIFF_TH 18 |
216 | 200 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ee/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ee/trx.c index 2fcbef1d029f..55d1da5e162b 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ee/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ee/trx.c | |||
@@ -47,164 +47,6 @@ static u8 _rtl92ee_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) | |||
47 | return skb->priority; | 47 | return skb->priority; |
48 | } | 48 | } |
49 | 49 | ||
50 | /* mac80211's rate_idx is like this: | ||
51 | * | ||
52 | * 2.4G band:rx_status->band == IEEE80211_BAND_2GHZ | ||
53 | * | ||
54 | * B/G rate: | ||
55 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
56 | * DESC92C_RATE1M-->DESC92C_RATE54M ==> idx is 0-->11, | ||
57 | * | ||
58 | * N rate: | ||
59 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
60 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
61 | * | ||
62 | * 5G band:rx_status->band == IEEE80211_BAND_5GHZ | ||
63 | * A rate: | ||
64 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
65 | * DESC92C_RATE6M-->DESC92C_RATE54M ==> idx is 0-->7, | ||
66 | * | ||
67 | * N rate: | ||
68 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
69 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
70 | */ | ||
71 | static int _rtl92ee_rate_mapping(struct ieee80211_hw *hw, | ||
72 | bool isht, u8 desc_rate) | ||
73 | { | ||
74 | int rate_idx; | ||
75 | |||
76 | if (!isht) { | ||
77 | if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { | ||
78 | switch (desc_rate) { | ||
79 | case DESC92C_RATE1M: | ||
80 | rate_idx = 0; | ||
81 | break; | ||
82 | case DESC92C_RATE2M: | ||
83 | rate_idx = 1; | ||
84 | break; | ||
85 | case DESC92C_RATE5_5M: | ||
86 | rate_idx = 2; | ||
87 | break; | ||
88 | case DESC92C_RATE11M: | ||
89 | rate_idx = 3; | ||
90 | break; | ||
91 | case DESC92C_RATE6M: | ||
92 | rate_idx = 4; | ||
93 | break; | ||
94 | case DESC92C_RATE9M: | ||
95 | rate_idx = 5; | ||
96 | break; | ||
97 | case DESC92C_RATE12M: | ||
98 | rate_idx = 6; | ||
99 | break; | ||
100 | case DESC92C_RATE18M: | ||
101 | rate_idx = 7; | ||
102 | break; | ||
103 | case DESC92C_RATE24M: | ||
104 | rate_idx = 8; | ||
105 | break; | ||
106 | case DESC92C_RATE36M: | ||
107 | rate_idx = 9; | ||
108 | break; | ||
109 | case DESC92C_RATE48M: | ||
110 | rate_idx = 10; | ||
111 | break; | ||
112 | case DESC92C_RATE54M: | ||
113 | rate_idx = 11; | ||
114 | break; | ||
115 | default: | ||
116 | rate_idx = 0; | ||
117 | break; | ||
118 | } | ||
119 | } else { | ||
120 | switch (desc_rate) { | ||
121 | case DESC92C_RATE6M: | ||
122 | rate_idx = 0; | ||
123 | break; | ||
124 | case DESC92C_RATE9M: | ||
125 | rate_idx = 1; | ||
126 | break; | ||
127 | case DESC92C_RATE12M: | ||
128 | rate_idx = 2; | ||
129 | break; | ||
130 | case DESC92C_RATE18M: | ||
131 | rate_idx = 3; | ||
132 | break; | ||
133 | case DESC92C_RATE24M: | ||
134 | rate_idx = 4; | ||
135 | break; | ||
136 | case DESC92C_RATE36M: | ||
137 | rate_idx = 5; | ||
138 | break; | ||
139 | case DESC92C_RATE48M: | ||
140 | rate_idx = 6; | ||
141 | break; | ||
142 | case DESC92C_RATE54M: | ||
143 | rate_idx = 7; | ||
144 | break; | ||
145 | default: | ||
146 | rate_idx = 0; | ||
147 | break; | ||
148 | } | ||
149 | } | ||
150 | } else { | ||
151 | switch (desc_rate) { | ||
152 | case DESC92C_RATEMCS0: | ||
153 | rate_idx = 0; | ||
154 | break; | ||
155 | case DESC92C_RATEMCS1: | ||
156 | rate_idx = 1; | ||
157 | break; | ||
158 | case DESC92C_RATEMCS2: | ||
159 | rate_idx = 2; | ||
160 | break; | ||
161 | case DESC92C_RATEMCS3: | ||
162 | rate_idx = 3; | ||
163 | break; | ||
164 | case DESC92C_RATEMCS4: | ||
165 | rate_idx = 4; | ||
166 | break; | ||
167 | case DESC92C_RATEMCS5: | ||
168 | rate_idx = 5; | ||
169 | break; | ||
170 | case DESC92C_RATEMCS6: | ||
171 | rate_idx = 6; | ||
172 | break; | ||
173 | case DESC92C_RATEMCS7: | ||
174 | rate_idx = 7; | ||
175 | break; | ||
176 | case DESC92C_RATEMCS8: | ||
177 | rate_idx = 8; | ||
178 | break; | ||
179 | case DESC92C_RATEMCS9: | ||
180 | rate_idx = 9; | ||
181 | break; | ||
182 | case DESC92C_RATEMCS10: | ||
183 | rate_idx = 10; | ||
184 | break; | ||
185 | case DESC92C_RATEMCS11: | ||
186 | rate_idx = 11; | ||
187 | break; | ||
188 | case DESC92C_RATEMCS12: | ||
189 | rate_idx = 12; | ||
190 | break; | ||
191 | case DESC92C_RATEMCS13: | ||
192 | rate_idx = 13; | ||
193 | break; | ||
194 | case DESC92C_RATEMCS14: | ||
195 | rate_idx = 14; | ||
196 | break; | ||
197 | case DESC92C_RATEMCS15: | ||
198 | rate_idx = 15; | ||
199 | break; | ||
200 | default: | ||
201 | rate_idx = 0; | ||
202 | break; | ||
203 | } | ||
204 | } | ||
205 | return rate_idx; | ||
206 | } | ||
207 | |||
208 | static void _rtl92ee_query_rxphystatus(struct ieee80211_hw *hw, | 50 | static void _rtl92ee_query_rxphystatus(struct ieee80211_hw *hw, |
209 | struct rtl_stats *pstatus, u8 *pdesc, | 51 | struct rtl_stats *pstatus, u8 *pdesc, |
210 | struct rx_fwinfo *p_drvinfo, | 52 | struct rx_fwinfo *p_drvinfo, |
@@ -345,8 +187,8 @@ static void _rtl92ee_query_rxphystatus(struct ieee80211_hw *hw, | |||
345 | pstatus->recvsignalpower = rx_pwr_all; | 187 | pstatus->recvsignalpower = rx_pwr_all; |
346 | 188 | ||
347 | /* (3)EVM of HT rate */ | 189 | /* (3)EVM of HT rate */ |
348 | if (pstatus->rate >= DESC92C_RATEMCS8 && | 190 | if (pstatus->rate >= DESC_RATEMCS8 && |
349 | pstatus->rate <= DESC92C_RATEMCS15) | 191 | pstatus->rate <= DESC_RATEMCS15) |
350 | max_spatial_stream = 2; | 192 | max_spatial_stream = 2; |
351 | else | 193 | else |
352 | max_spatial_stream = 1; | 194 | max_spatial_stream = 1; |
@@ -576,9 +418,8 @@ bool rtl92ee_rx_query_desc(struct ieee80211_hw *hw, | |||
576 | * are use (RX_FLAG_HT) | 418 | * are use (RX_FLAG_HT) |
577 | * Notice: this is diff with windows define | 419 | * Notice: this is diff with windows define |
578 | */ | 420 | */ |
579 | rx_status->rate_idx = _rtl92ee_rate_mapping(hw, | 421 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, status->is_ht, |
580 | status->is_ht, | 422 | false, status->rate); |
581 | status->rate); | ||
582 | 423 | ||
583 | rx_status->mactime = status->timestamp_low; | 424 | rx_status->mactime = status->timestamp_low; |
584 | if (phystatus) { | 425 | if (phystatus) { |
@@ -710,27 +551,6 @@ static u16 get_desc_addr_fr_q_idx(u16 queue_index) | |||
710 | return desc_address; | 551 | return desc_address; |
711 | } | 552 | } |
712 | 553 | ||
713 | void rtl92ee_get_available_desc(struct ieee80211_hw *hw, u8 q_idx) | ||
714 | { | ||
715 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | ||
716 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
717 | u16 point_diff = 0; | ||
718 | u16 current_tx_read_point = 0, current_tx_write_point = 0; | ||
719 | u32 tmp_4byte; | ||
720 | |||
721 | tmp_4byte = rtl_read_dword(rtlpriv, | ||
722 | get_desc_addr_fr_q_idx(q_idx)); | ||
723 | current_tx_read_point = (u16)((tmp_4byte >> 16) & 0x0fff); | ||
724 | current_tx_write_point = (u16)((tmp_4byte) & 0x0fff); | ||
725 | |||
726 | point_diff = ((current_tx_read_point > current_tx_write_point) ? | ||
727 | (current_tx_read_point - current_tx_write_point) : | ||
728 | (TX_DESC_NUM_92E - current_tx_write_point + | ||
729 | current_tx_read_point)); | ||
730 | |||
731 | rtlpci->tx_ring[q_idx].avl_desc = point_diff; | ||
732 | } | ||
733 | |||
734 | void rtl92ee_pre_fill_tx_bd_desc(struct ieee80211_hw *hw, | 554 | void rtl92ee_pre_fill_tx_bd_desc(struct ieee80211_hw *hw, |
735 | u8 *tx_bd_desc, u8 *desc, u8 queue_index, | 555 | u8 *tx_bd_desc, u8 *desc, u8 queue_index, |
736 | struct sk_buff *skb, dma_addr_t addr) | 556 | struct sk_buff *skb, dma_addr_t addr) |
@@ -901,13 +721,13 @@ void rtl92ee_tx_fill_desc(struct ieee80211_hw *hw, | |||
901 | } else { | 721 | } else { |
902 | if (rtlpriv->ra.is_special_data) { | 722 | if (rtlpriv->ra.is_special_data) { |
903 | ptcb_desc->use_driver_rate = true; | 723 | ptcb_desc->use_driver_rate = true; |
904 | SET_TX_DESC_TX_RATE(pdesc, DESC92C_RATE11M); | 724 | SET_TX_DESC_TX_RATE(pdesc, DESC_RATE11M); |
905 | } else { | 725 | } else { |
906 | ptcb_desc->use_driver_rate = false; | 726 | ptcb_desc->use_driver_rate = false; |
907 | } | 727 | } |
908 | } | 728 | } |
909 | 729 | ||
910 | if (ptcb_desc->hw_rate > DESC92C_RATEMCS0) | 730 | if (ptcb_desc->hw_rate > DESC_RATEMCS0) |
911 | short_gi = (ptcb_desc->use_shortgi) ? 1 : 0; | 731 | short_gi = (ptcb_desc->use_shortgi) ? 1 : 0; |
912 | else | 732 | else |
913 | short_gi = (ptcb_desc->use_shortpreamble) ? 1 : 0; | 733 | short_gi = (ptcb_desc->use_shortpreamble) ? 1 : 0; |
@@ -927,7 +747,7 @@ void rtl92ee_tx_fill_desc(struct ieee80211_hw *hw, | |||
927 | SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); | 747 | SET_TX_DESC_RTS_RATE(pdesc, ptcb_desc->rts_rate); |
928 | SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); | 748 | SET_TX_DESC_RTS_SC(pdesc, ptcb_desc->rts_sc); |
929 | SET_TX_DESC_RTS_SHORT(pdesc, | 749 | SET_TX_DESC_RTS_SHORT(pdesc, |
930 | ((ptcb_desc->rts_rate <= DESC92C_RATE54M) ? | 750 | ((ptcb_desc->rts_rate <= DESC_RATE54M) ? |
931 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) : | 751 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) : |
932 | (ptcb_desc->rts_use_shortgi ? 1 : 0))); | 752 | (ptcb_desc->rts_use_shortgi ? 1 : 0))); |
933 | 753 | ||
@@ -1038,7 +858,7 @@ void rtl92ee_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
1038 | if (firstseg) | 858 | if (firstseg) |
1039 | SET_TX_DESC_OFFSET(pdesc, txdesc_len); | 859 | SET_TX_DESC_OFFSET(pdesc, txdesc_len); |
1040 | 860 | ||
1041 | SET_TX_DESC_TX_RATE(pdesc, DESC92C_RATE1M); | 861 | SET_TX_DESC_TX_RATE(pdesc, DESC_RATE1M); |
1042 | 862 | ||
1043 | SET_TX_DESC_SEQ(pdesc, 0); | 863 | SET_TX_DESC_SEQ(pdesc, 0); |
1044 | 864 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ee/trx.h b/drivers/net/wireless/rtlwifi/rtl8192ee/trx.h index 6f9be1c7515c..48504c25fffb 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ee/trx.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ee/trx.h | |||
@@ -591,10 +591,10 @@ do { \ | |||
591 | } while (0) | 591 | } while (0) |
592 | 592 | ||
593 | #define RTL92EE_RX_HAL_IS_CCK_RATE(rxmcs)\ | 593 | #define RTL92EE_RX_HAL_IS_CCK_RATE(rxmcs)\ |
594 | (rxmcs == DESC92C_RATE1M ||\ | 594 | (rxmcs == DESC_RATE1M ||\ |
595 | rxmcs == DESC92C_RATE2M ||\ | 595 | rxmcs == DESC_RATE2M ||\ |
596 | rxmcs == DESC92C_RATE5_5M ||\ | 596 | rxmcs == DESC_RATE5_5M ||\ |
597 | rxmcs == DESC92C_RATE11M) | 597 | rxmcs == DESC_RATE11M) |
598 | 598 | ||
599 | #define IS_LITTLE_ENDIAN 1 | 599 | #define IS_LITTLE_ENDIAN 1 |
600 | 600 | ||
@@ -829,7 +829,6 @@ void rtl92ee_rx_check_dma_ok(struct ieee80211_hw *hw, u8 *header_desc, | |||
829 | u8 queue_index); | 829 | u8 queue_index); |
830 | u16 rtl92ee_rx_desc_buff_remained_cnt(struct ieee80211_hw *hw, | 830 | u16 rtl92ee_rx_desc_buff_remained_cnt(struct ieee80211_hw *hw, |
831 | u8 queue_index); | 831 | u8 queue_index); |
832 | void rtl92ee_get_available_desc(struct ieee80211_hw *hw, u8 queue_index); | ||
833 | void rtl92ee_pre_fill_tx_bd_desc(struct ieee80211_hw *hw, | 832 | void rtl92ee_pre_fill_tx_bd_desc(struct ieee80211_hw *hw, |
834 | u8 *tx_bd_desc, u8 *desc, u8 queue_index, | 833 | u8 *tx_bd_desc, u8 *desc, u8 queue_index, |
835 | struct sk_buff *skb, dma_addr_t addr); | 834 | struct sk_buff *skb, dma_addr_t addr); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/def.h b/drivers/net/wireless/rtlwifi/rtl8192se/def.h index 6e7a70b43949..ef87c09b77d0 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/def.h +++ b/drivers/net/wireless/rtlwifi/rtl8192se/def.h | |||
@@ -450,10 +450,10 @@ | |||
450 | SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32) | 450 | SHIFT_AND_MASK_LE(__pdesc + 24, 0, 32) |
451 | 451 | ||
452 | #define SE_RX_HAL_IS_CCK_RATE(_pdesc)\ | 452 | #define SE_RX_HAL_IS_CCK_RATE(_pdesc)\ |
453 | (GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE1M || \ | 453 | (GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC_RATE1M || \ |
454 | GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE2M || \ | 454 | GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC_RATE2M || \ |
455 | GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE5_5M ||\ | 455 | GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC_RATE5_5M ||\ |
456 | GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC92_RATE11M) | 456 | GET_RX_STATUS_DESC_RX_MCS(_pdesc) == DESC_RATE11M) |
457 | 457 | ||
458 | enum rf_optype { | 458 | enum rf_optype { |
459 | RF_OP_BY_SW_3WIRE = 0, | 459 | RF_OP_BY_SW_3WIRE = 0, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c index b3a2d5ec59e6..575980b88658 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include "../wifi.h" | 30 | #include "../wifi.h" |
31 | #include "../base.h" | 31 | #include "../base.h" |
32 | #include "../core.h" | ||
32 | #include "reg.h" | 33 | #include "reg.h" |
33 | #include "def.h" | 34 | #include "def.h" |
34 | #include "phy.h" | 35 | #include "phy.h" |
@@ -469,7 +470,7 @@ static void _rtl92s_dm_initial_gain_sta_beforeconnect(struct ieee80211_hw *hw) | |||
469 | if (digtable->backoff_enable_flag) | 470 | if (digtable->backoff_enable_flag) |
470 | rtl92s_backoff_enable_flag(hw); | 471 | rtl92s_backoff_enable_flag(hw); |
471 | else | 472 | else |
472 | digtable->back_val = DM_DIG_BACKOFF; | 473 | digtable->back_val = DM_DIG_BACKOFF_MAX; |
473 | 474 | ||
474 | if ((digtable->rssi_val + 10 - digtable->back_val) > | 475 | if ((digtable->rssi_val + 10 - digtable->back_val) > |
475 | digtable->rx_gain_max) | 476 | digtable->rx_gain_max) |
@@ -503,7 +504,7 @@ static void _rtl92s_dm_initial_gain_sta_beforeconnect(struct ieee80211_hw *hw) | |||
503 | digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | 504 | digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; |
504 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_ENABLE); | 505 | rtl92s_phy_set_fw_cmd(hw, FW_CMD_DIG_ENABLE); |
505 | 506 | ||
506 | digtable->back_val = DM_DIG_BACKOFF; | 507 | digtable->back_val = DM_DIG_BACKOFF_MAX; |
507 | digtable->cur_igvalue = rtlpriv->phy.default_initialgain[0]; | 508 | digtable->cur_igvalue = rtlpriv->phy.default_initialgain[0]; |
508 | digtable->pre_igvalue = 0; | 509 | digtable->pre_igvalue = 0; |
509 | return; | 510 | return; |
@@ -691,7 +692,7 @@ static void _rtl92s_dm_init_dig(struct ieee80211_hw *hw) | |||
691 | 692 | ||
692 | /* for dig debug rssi value */ | 693 | /* for dig debug rssi value */ |
693 | digtable->rssi_val = 50; | 694 | digtable->rssi_val = 50; |
694 | digtable->back_val = DM_DIG_BACKOFF; | 695 | digtable->back_val = DM_DIG_BACKOFF_MAX; |
695 | digtable->rx_gain_max = DM_DIG_MAX; | 696 | digtable->rx_gain_max = DM_DIG_MAX; |
696 | 697 | ||
697 | digtable->rx_gain_min = DM_DIG_MIN; | 698 | digtable->rx_gain_min = DM_DIG_MIN; |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/dm.h b/drivers/net/wireless/rtlwifi/rtl8192se/dm.h index 2e9052c8fe4b..de6ac796c74d 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8192se/dm.h | |||
@@ -54,24 +54,6 @@ enum dm_dig_sta { | |||
54 | DM_STA_DIG_MAX | 54 | DM_STA_DIG_MAX |
55 | }; | 55 | }; |
56 | 56 | ||
57 | enum dm_dig_connect { | ||
58 | DIG_STA_DISCONNECT = 0, | ||
59 | DIG_STA_CONNECT = 1, | ||
60 | DIG_STA_BEFORE_CONNECT = 2, | ||
61 | DIG_AP_DISCONNECT = 3, | ||
62 | DIG_AP_CONNECT = 4, | ||
63 | DIG_AP_ADD_STATION = 5, | ||
64 | DIG_CONNECT_MAX | ||
65 | }; | ||
66 | |||
67 | enum dm_dig_ext_port_alg { | ||
68 | DIG_EXT_PORT_STAGE_0 = 0, | ||
69 | DIG_EXT_PORT_STAGE_1 = 1, | ||
70 | DIG_EXT_PORT_STAGE_2 = 2, | ||
71 | DIG_EXT_PORT_STAGE_3 = 3, | ||
72 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
73 | }; | ||
74 | |||
75 | enum dm_ratr_sta { | 57 | enum dm_ratr_sta { |
76 | DM_RATR_STA_HIGH = 0, | 58 | DM_RATR_STA_HIGH = 0, |
77 | DM_RATR_STA_MIDDLEHIGH = 1, | 59 | DM_RATR_STA_MIDDLEHIGH = 1, |
@@ -99,22 +81,12 @@ enum dm_ratr_sta { | |||
99 | #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 | 81 | #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 |
100 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 | 82 | #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 |
101 | 83 | ||
102 | #define DM_DIG_THRESH_HIGH 40 | ||
103 | #define DM_DIG_THRESH_LOW 35 | ||
104 | #define DM_FALSEALARM_THRESH_LOW 40 | ||
105 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
106 | #define DM_DIG_HIGH_PWR_THRESH_HIGH 75 | 84 | #define DM_DIG_HIGH_PWR_THRESH_HIGH 75 |
107 | #define DM_DIG_HIGH_PWR_THRESH_LOW 70 | 85 | #define DM_DIG_HIGH_PWR_THRESH_LOW 70 |
108 | #define DM_DIG_BACKOFF 12 | ||
109 | #define DM_DIG_MAX 0x3e | ||
110 | #define DM_DIG_MIN 0x1c | ||
111 | #define DM_DIG_MIN_Netcore 0x12 | 86 | #define DM_DIG_MIN_Netcore 0x12 |
112 | #define DM_DIG_BACKOFF_MAX 12 | ||
113 | #define DM_DIG_BACKOFF_MIN -4 | ||
114 | 87 | ||
115 | void rtl92s_dm_watchdog(struct ieee80211_hw *hw); | 88 | void rtl92s_dm_watchdog(struct ieee80211_hw *hw); |
116 | void rtl92s_dm_init(struct ieee80211_hw *hw); | 89 | void rtl92s_dm_init(struct ieee80211_hw *hw); |
117 | void rtl92s_dm_init_edca_turbo(struct ieee80211_hw *hw); | 90 | void rtl92s_dm_init_edca_turbo(struct ieee80211_hw *hw); |
118 | 91 | ||
119 | #endif | 92 | #endif |
120 | |||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c index fb003868bdef..e1fd27c888bf 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c | |||
@@ -383,21 +383,21 @@ static struct rtl_hal_cfg rtl92se_hal_cfg = { | |||
383 | .maps[RTL_IMR_ROK] = IMR_ROK, | 383 | .maps[RTL_IMR_ROK] = IMR_ROK, |
384 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), | 384 | .maps[RTL_IBSS_INT_MASKS] = (IMR_BCNINT | IMR_TBDOK | IMR_TBDER), |
385 | 385 | ||
386 | .maps[RTL_RC_CCK_RATE1M] = DESC92_RATE1M, | 386 | .maps[RTL_RC_CCK_RATE1M] = DESC_RATE1M, |
387 | .maps[RTL_RC_CCK_RATE2M] = DESC92_RATE2M, | 387 | .maps[RTL_RC_CCK_RATE2M] = DESC_RATE2M, |
388 | .maps[RTL_RC_CCK_RATE5_5M] = DESC92_RATE5_5M, | 388 | .maps[RTL_RC_CCK_RATE5_5M] = DESC_RATE5_5M, |
389 | .maps[RTL_RC_CCK_RATE11M] = DESC92_RATE11M, | 389 | .maps[RTL_RC_CCK_RATE11M] = DESC_RATE11M, |
390 | .maps[RTL_RC_OFDM_RATE6M] = DESC92_RATE6M, | 390 | .maps[RTL_RC_OFDM_RATE6M] = DESC_RATE6M, |
391 | .maps[RTL_RC_OFDM_RATE9M] = DESC92_RATE9M, | 391 | .maps[RTL_RC_OFDM_RATE9M] = DESC_RATE9M, |
392 | .maps[RTL_RC_OFDM_RATE12M] = DESC92_RATE12M, | 392 | .maps[RTL_RC_OFDM_RATE12M] = DESC_RATE12M, |
393 | .maps[RTL_RC_OFDM_RATE18M] = DESC92_RATE18M, | 393 | .maps[RTL_RC_OFDM_RATE18M] = DESC_RATE18M, |
394 | .maps[RTL_RC_OFDM_RATE24M] = DESC92_RATE24M, | 394 | .maps[RTL_RC_OFDM_RATE24M] = DESC_RATE24M, |
395 | .maps[RTL_RC_OFDM_RATE36M] = DESC92_RATE36M, | 395 | .maps[RTL_RC_OFDM_RATE36M] = DESC_RATE36M, |
396 | .maps[RTL_RC_OFDM_RATE48M] = DESC92_RATE48M, | 396 | .maps[RTL_RC_OFDM_RATE48M] = DESC_RATE48M, |
397 | .maps[RTL_RC_OFDM_RATE54M] = DESC92_RATE54M, | 397 | .maps[RTL_RC_OFDM_RATE54M] = DESC_RATE54M, |
398 | 398 | ||
399 | .maps[RTL_RC_HT_RATEMCS7] = DESC92_RATEMCS7, | 399 | .maps[RTL_RC_HT_RATEMCS7] = DESC_RATEMCS7, |
400 | .maps[RTL_RC_HT_RATEMCS15] = DESC92_RATEMCS15, | 400 | .maps[RTL_RC_HT_RATEMCS15] = DESC_RATEMCS15, |
401 | }; | 401 | }; |
402 | 402 | ||
403 | static struct pci_device_id rtl92se_pci_ids[] = { | 403 | static struct pci_device_id rtl92se_pci_ids[] = { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c index 672fd3b02835..125b29bd2f93 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c | |||
@@ -191,8 +191,8 @@ static void _rtl92se_query_rxphystatus(struct ieee80211_hw *hw, | |||
191 | pstats->rxpower = rx_pwr_all; | 191 | pstats->rxpower = rx_pwr_all; |
192 | pstats->recvsignalpower = rx_pwr_all; | 192 | pstats->recvsignalpower = rx_pwr_all; |
193 | 193 | ||
194 | if (pstats->is_ht && pstats->rate >= DESC92_RATEMCS8 && | 194 | if (pstats->is_ht && pstats->rate >= DESC_RATEMCS8 && |
195 | pstats->rate <= DESC92_RATEMCS15) | 195 | pstats->rate <= DESC_RATEMCS15) |
196 | max_spatial_stream = 2; | 196 | max_spatial_stream = 2; |
197 | else | 197 | else |
198 | max_spatial_stream = 1; | 198 | max_spatial_stream = 1; |
@@ -264,7 +264,6 @@ bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, | |||
264 | struct rx_fwinfo *p_drvinfo; | 264 | struct rx_fwinfo *p_drvinfo; |
265 | u32 phystatus = (u32)GET_RX_STATUS_DESC_PHY_STATUS(pdesc); | 265 | u32 phystatus = (u32)GET_RX_STATUS_DESC_PHY_STATUS(pdesc); |
266 | struct ieee80211_hdr *hdr; | 266 | struct ieee80211_hdr *hdr; |
267 | bool first_ampdu = false; | ||
268 | 267 | ||
269 | stats->length = (u16)GET_RX_STATUS_DESC_PKT_LEN(pdesc); | 268 | stats->length = (u16)GET_RX_STATUS_DESC_PKT_LEN(pdesc); |
270 | stats->rx_drvinfo_size = (u8)GET_RX_STATUS_DESC_DRVINFO_SIZE(pdesc) * 8; | 269 | stats->rx_drvinfo_size = (u8)GET_RX_STATUS_DESC_DRVINFO_SIZE(pdesc) * 8; |
@@ -319,8 +318,8 @@ bool rtl92se_rx_query_desc(struct ieee80211_hw *hw, struct rtl_stats *stats, | |||
319 | rx_status->flag |= RX_FLAG_DECRYPTED; | 318 | rx_status->flag |= RX_FLAG_DECRYPTED; |
320 | } | 319 | } |
321 | 320 | ||
322 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, | 321 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, stats->is_ht, |
323 | stats->is_ht, stats->rate, first_ampdu); | 322 | false, stats->rate); |
324 | 323 | ||
325 | rx_status->mactime = stats->timestamp_low; | 324 | rx_status->mactime = stats->timestamp_low; |
326 | if (phystatus) { | 325 | if (phystatus) { |
@@ -394,14 +393,14 @@ void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, | |||
394 | SET_TX_DESC_RSVD_MACID(pdesc, reserved_macid); | 393 | SET_TX_DESC_RSVD_MACID(pdesc, reserved_macid); |
395 | 394 | ||
396 | SET_TX_DESC_TXHT(pdesc, ((ptcb_desc->hw_rate >= | 395 | SET_TX_DESC_TXHT(pdesc, ((ptcb_desc->hw_rate >= |
397 | DESC92_RATEMCS0) ? 1 : 0)); | 396 | DESC_RATEMCS0) ? 1 : 0)); |
398 | 397 | ||
399 | if (rtlhal->version == VERSION_8192S_ACUT) { | 398 | if (rtlhal->version == VERSION_8192S_ACUT) { |
400 | if (ptcb_desc->hw_rate == DESC92_RATE1M || | 399 | if (ptcb_desc->hw_rate == DESC_RATE1M || |
401 | ptcb_desc->hw_rate == DESC92_RATE2M || | 400 | ptcb_desc->hw_rate == DESC_RATE2M || |
402 | ptcb_desc->hw_rate == DESC92_RATE5_5M || | 401 | ptcb_desc->hw_rate == DESC_RATE5_5M || |
403 | ptcb_desc->hw_rate == DESC92_RATE11M) { | 402 | ptcb_desc->hw_rate == DESC_RATE11M) { |
404 | ptcb_desc->hw_rate = DESC92_RATE12M; | 403 | ptcb_desc->hw_rate = DESC_RATE12M; |
405 | } | 404 | } |
406 | } | 405 | } |
407 | 406 | ||
@@ -430,7 +429,7 @@ void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, | |||
430 | SET_TX_DESC_RTS_BANDWIDTH(pdesc, 0); | 429 | SET_TX_DESC_RTS_BANDWIDTH(pdesc, 0); |
431 | SET_TX_DESC_RTS_SUB_CARRIER(pdesc, ptcb_desc->rts_sc); | 430 | SET_TX_DESC_RTS_SUB_CARRIER(pdesc, ptcb_desc->rts_sc); |
432 | SET_TX_DESC_RTS_SHORT(pdesc, ((ptcb_desc->rts_rate <= | 431 | SET_TX_DESC_RTS_SHORT(pdesc, ((ptcb_desc->rts_rate <= |
433 | DESC92_RATE54M) ? | 432 | DESC_RATE54M) ? |
434 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) | 433 | (ptcb_desc->rts_use_shortpreamble ? 1 : 0) |
435 | : (ptcb_desc->rts_use_shortgi ? 1 : 0))); | 434 | : (ptcb_desc->rts_use_shortgi ? 1 : 0))); |
436 | 435 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8723ae/dm.c b/drivers/net/wireless/rtlwifi/rtl8723ae/dm.c index a0e86922780a..4c1c96c96a5a 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723ae/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8723ae/dm.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "../wifi.h" | 26 | #include "../wifi.h" |
27 | #include "../base.h" | 27 | #include "../base.h" |
28 | #include "../pci.h" | 28 | #include "../pci.h" |
29 | #include "../core.h" | ||
29 | #include "reg.h" | 30 | #include "reg.h" |
30 | #include "def.h" | 31 | #include "def.h" |
31 | #include "phy.h" | 32 | #include "phy.h" |
@@ -146,31 +147,6 @@ static const u8 cckswing_table_ch14[CCK_TABLE_SIZE][8] = { | |||
146 | {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} | 147 | {0x09, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00} |
147 | }; | 148 | }; |
148 | 149 | ||
149 | static void rtl8723e_dm_diginit(struct ieee80211_hw *hw) | ||
150 | { | ||
151 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
152 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
153 | |||
154 | dm_digtable->dig_enable_flag = true; | ||
155 | dm_digtable->dig_ext_port_stage = DIG_EXT_PORT_STAGE_MAX; | ||
156 | dm_digtable->cur_igvalue = 0x20; | ||
157 | dm_digtable->pre_igvalue = 0x0; | ||
158 | dm_digtable->cursta_cstate = DIG_STA_DISCONNECT; | ||
159 | dm_digtable->presta_cstate = DIG_STA_DISCONNECT; | ||
160 | dm_digtable->curmultista_cstate = DIG_MULTISTA_DISCONNECT; | ||
161 | dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
162 | dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
163 | dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
164 | dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
165 | dm_digtable->rx_gain_max = DM_DIG_MAX; | ||
166 | dm_digtable->rx_gain_min = DM_DIG_MIN; | ||
167 | dm_digtable->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
168 | dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX; | ||
169 | dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN; | ||
170 | dm_digtable->pre_cck_pd_state = CCK_PD_STAGE_MAX; | ||
171 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; | ||
172 | } | ||
173 | |||
174 | static u8 rtl8723e_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) | 150 | static u8 rtl8723e_dm_initial_gain_min_pwdb(struct ieee80211_hw *hw) |
175 | { | 151 | { |
176 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 152 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -395,30 +371,30 @@ static void rtl8723e_dm_cck_packet_detection_thresh(struct ieee80211_hw *hw) | |||
395 | if (dm_digtable->cursta_cstate == DIG_STA_CONNECT) { | 371 | if (dm_digtable->cursta_cstate == DIG_STA_CONNECT) { |
396 | dm_digtable->rssi_val_min = rtl8723e_dm_initial_gain_min_pwdb(hw); | 372 | dm_digtable->rssi_val_min = rtl8723e_dm_initial_gain_min_pwdb(hw); |
397 | 373 | ||
398 | if (dm_digtable->pre_cck_pd_state == CCK_PD_STAGE_LowRssi) { | 374 | if (dm_digtable->pre_cck_pd_state == CCK_PD_STAGE_LOWRSSI) { |
399 | if (dm_digtable->rssi_val_min <= 25) | 375 | if (dm_digtable->rssi_val_min <= 25) |
400 | dm_digtable->cur_cck_pd_state = | 376 | dm_digtable->cur_cck_pd_state = |
401 | CCK_PD_STAGE_LowRssi; | 377 | CCK_PD_STAGE_LOWRSSI; |
402 | else | 378 | else |
403 | dm_digtable->cur_cck_pd_state = | 379 | dm_digtable->cur_cck_pd_state = |
404 | CCK_PD_STAGE_HighRssi; | 380 | CCK_PD_STAGE_HIGHRSSI; |
405 | } else { | 381 | } else { |
406 | if (dm_digtable->rssi_val_min <= 20) | 382 | if (dm_digtable->rssi_val_min <= 20) |
407 | dm_digtable->cur_cck_pd_state = | 383 | dm_digtable->cur_cck_pd_state = |
408 | CCK_PD_STAGE_LowRssi; | 384 | CCK_PD_STAGE_LOWRSSI; |
409 | else | 385 | else |
410 | dm_digtable->cur_cck_pd_state = | 386 | dm_digtable->cur_cck_pd_state = |
411 | CCK_PD_STAGE_HighRssi; | 387 | CCK_PD_STAGE_HIGHRSSI; |
412 | } | 388 | } |
413 | } else { | 389 | } else { |
414 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; | 390 | dm_digtable->cur_cck_pd_state = CCK_PD_STAGE_MAX; |
415 | } | 391 | } |
416 | 392 | ||
417 | if (dm_digtable->pre_cck_pd_state != dm_digtable->cur_cck_pd_state) { | 393 | if (dm_digtable->pre_cck_pd_state != dm_digtable->cur_cck_pd_state) { |
418 | if (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LowRssi) { | 394 | if (dm_digtable->cur_cck_pd_state == CCK_PD_STAGE_LOWRSSI) { |
419 | if (rtlpriv->falsealm_cnt.cnt_cck_fail > 800) | 395 | if (rtlpriv->falsealm_cnt.cnt_cck_fail > 800) |
420 | dm_digtable->cur_cck_fa_state = | 396 | dm_digtable->cur_cck_fa_state = |
421 | CCK_FA_STAGE_High; | 397 | CCK_FA_STAGE_HIGH; |
422 | else | 398 | else |
423 | dm_digtable->cur_cck_fa_state = | 399 | dm_digtable->cur_cck_fa_state = |
424 | CCK_FA_STAGE_LOW; | 400 | CCK_FA_STAGE_LOW; |
@@ -818,7 +794,7 @@ void rtl8723e_dm_init(struct ieee80211_hw *hw) | |||
818 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 794 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
819 | 795 | ||
820 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; | 796 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; |
821 | rtl8723e_dm_diginit(hw); | 797 | rtl_dm_diginit(hw, 0x20); |
822 | rtl8723_dm_init_dynamic_txpower(hw); | 798 | rtl8723_dm_init_dynamic_txpower(hw); |
823 | rtl8723_dm_init_edca_turbo(hw); | 799 | rtl8723_dm_init_edca_turbo(hw); |
824 | rtl8723e_dm_init_rate_adaptive_mask(hw); | 800 | rtl8723e_dm_init_rate_adaptive_mask(hw); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723ae/dm.h b/drivers/net/wireless/rtlwifi/rtl8723ae/dm.h index 6fa0feb05f6d..57111052e86b 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723ae/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8723ae/dm.h | |||
@@ -42,25 +42,12 @@ | |||
42 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 42 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
43 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 43 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
44 | 44 | ||
45 | #define DM_DIG_THRESH_HIGH 40 | ||
46 | #define DM_DIG_THRESH_LOW 35 | ||
47 | |||
48 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
49 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
50 | |||
51 | #define DM_DIG_MAX 0x3e | ||
52 | #define DM_DIG_MIN 0x1e | ||
53 | |||
54 | #define DM_DIG_FA_UPPER 0x32 | 45 | #define DM_DIG_FA_UPPER 0x32 |
55 | #define DM_DIG_FA_LOWER 0x20 | 46 | #define DM_DIG_FA_LOWER 0x20 |
56 | #define DM_DIG_FA_TH0 0x20 | 47 | #define DM_DIG_FA_TH0 0x20 |
57 | #define DM_DIG_FA_TH1 0x100 | 48 | #define DM_DIG_FA_TH1 0x100 |
58 | #define DM_DIG_FA_TH2 0x200 | 49 | #define DM_DIG_FA_TH2 0x200 |
59 | 50 | ||
60 | #define DM_DIG_BACKOFF_MAX 12 | ||
61 | #define DM_DIG_BACKOFF_MIN -4 | ||
62 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
63 | |||
64 | #define RXPATHSELECTION_SS_TH_LOW 30 | 51 | #define RXPATHSELECTION_SS_TH_LOW 30 |
65 | #define RXPATHSELECTION_DIFF_TH 18 | 52 | #define RXPATHSELECTION_DIFF_TH 18 |
66 | 53 | ||
@@ -108,14 +95,6 @@ enum tag_dynamic_init_gain_operation_type_definition { | |||
108 | DIG_OP_TYPE_MAX | 95 | DIG_OP_TYPE_MAX |
109 | }; | 96 | }; |
110 | 97 | ||
111 | enum tag_cck_packet_detection_threshold_type_definition { | ||
112 | CCK_PD_STAGE_LowRssi = 0, | ||
113 | CCK_PD_STAGE_HighRssi = 1, | ||
114 | CCK_FA_STAGE_LOW = 2, | ||
115 | CCK_FA_STAGE_High = 3, | ||
116 | CCK_PD_STAGE_MAX = 4, | ||
117 | }; | ||
118 | |||
119 | enum dm_1r_cca_e { | 98 | enum dm_1r_cca_e { |
120 | CCA_1R = 0, | 99 | CCA_1R = 0, |
121 | CCA_2R = 1, | 100 | CCA_2R = 1, |
@@ -134,23 +113,6 @@ enum dm_sw_ant_switch_e { | |||
134 | ANS_ANTENNA_MAX = 3, | 113 | ANS_ANTENNA_MAX = 3, |
135 | }; | 114 | }; |
136 | 115 | ||
137 | enum dm_dig_ext_port_alg_e { | ||
138 | DIG_EXT_PORT_STAGE_0 = 0, | ||
139 | DIG_EXT_PORT_STAGE_1 = 1, | ||
140 | DIG_EXT_PORT_STAGE_2 = 2, | ||
141 | DIG_EXT_PORT_STAGE_3 = 3, | ||
142 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
143 | }; | ||
144 | |||
145 | enum dm_dig_connect_e { | ||
146 | DIG_STA_DISCONNECT = 0, | ||
147 | DIG_STA_CONNECT = 1, | ||
148 | DIG_STA_BEFORE_CONNECT = 2, | ||
149 | DIG_MULTISTA_DISCONNECT = 3, | ||
150 | DIG_MULTISTA_CONNECT = 4, | ||
151 | DIG_CONNECT_MAX | ||
152 | }; | ||
153 | |||
154 | #define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) | 116 | #define BT_RSSI_STATE_NORMAL_POWER BIT_OFFSET_LEN_MASK_32(0, 1) |
155 | #define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) | 117 | #define BT_RSSI_STATE_AMDPU_OFF BIT_OFFSET_LEN_MASK_32(1, 1) |
156 | #define BT_RSSI_STATE_SPECIAL_LOW BIT_OFFSET_LEN_MASK_32(2, 1) | 118 | #define BT_RSSI_STATE_SPECIAL_LOW BIT_OFFSET_LEN_MASK_32(2, 1) |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c index d372ccaf3465..2f7c144d7980 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c | |||
@@ -45,164 +45,6 @@ static u8 _rtl8723e_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) | |||
45 | return skb->priority; | 45 | return skb->priority; |
46 | } | 46 | } |
47 | 47 | ||
48 | /* mac80211's rate_idx is like this: | ||
49 | * | ||
50 | * 2.4G band:rx_status->band == IEEE80211_BAND_2GHZ | ||
51 | * | ||
52 | * B/G rate: | ||
53 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
54 | * DESC92C_RATE1M-->DESC92C_RATE54M ==> idx is 0-->11, | ||
55 | * | ||
56 | * N rate: | ||
57 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
58 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
59 | * | ||
60 | * 5G band:rx_status->band == IEEE80211_BAND_5GHZ | ||
61 | * A rate: | ||
62 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
63 | * DESC92C_RATE6M-->DESC92C_RATE54M ==> idx is 0-->7, | ||
64 | * | ||
65 | * N rate: | ||
66 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
67 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
68 | */ | ||
69 | static int _rtl8723e_rate_mapping(struct ieee80211_hw *hw, | ||
70 | bool isht, u8 desc_rate) | ||
71 | { | ||
72 | int rate_idx; | ||
73 | |||
74 | if (!isht) { | ||
75 | if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { | ||
76 | switch (desc_rate) { | ||
77 | case DESC92C_RATE1M: | ||
78 | rate_idx = 0; | ||
79 | break; | ||
80 | case DESC92C_RATE2M: | ||
81 | rate_idx = 1; | ||
82 | break; | ||
83 | case DESC92C_RATE5_5M: | ||
84 | rate_idx = 2; | ||
85 | break; | ||
86 | case DESC92C_RATE11M: | ||
87 | rate_idx = 3; | ||
88 | break; | ||
89 | case DESC92C_RATE6M: | ||
90 | rate_idx = 4; | ||
91 | break; | ||
92 | case DESC92C_RATE9M: | ||
93 | rate_idx = 5; | ||
94 | break; | ||
95 | case DESC92C_RATE12M: | ||
96 | rate_idx = 6; | ||
97 | break; | ||
98 | case DESC92C_RATE18M: | ||
99 | rate_idx = 7; | ||
100 | break; | ||
101 | case DESC92C_RATE24M: | ||
102 | rate_idx = 8; | ||
103 | break; | ||
104 | case DESC92C_RATE36M: | ||
105 | rate_idx = 9; | ||
106 | break; | ||
107 | case DESC92C_RATE48M: | ||
108 | rate_idx = 10; | ||
109 | break; | ||
110 | case DESC92C_RATE54M: | ||
111 | rate_idx = 11; | ||
112 | break; | ||
113 | default: | ||
114 | rate_idx = 0; | ||
115 | break; | ||
116 | } | ||
117 | } else { | ||
118 | switch (desc_rate) { | ||
119 | case DESC92C_RATE6M: | ||
120 | rate_idx = 0; | ||
121 | break; | ||
122 | case DESC92C_RATE9M: | ||
123 | rate_idx = 1; | ||
124 | break; | ||
125 | case DESC92C_RATE12M: | ||
126 | rate_idx = 2; | ||
127 | break; | ||
128 | case DESC92C_RATE18M: | ||
129 | rate_idx = 3; | ||
130 | break; | ||
131 | case DESC92C_RATE24M: | ||
132 | rate_idx = 4; | ||
133 | break; | ||
134 | case DESC92C_RATE36M: | ||
135 | rate_idx = 5; | ||
136 | break; | ||
137 | case DESC92C_RATE48M: | ||
138 | rate_idx = 6; | ||
139 | break; | ||
140 | case DESC92C_RATE54M: | ||
141 | rate_idx = 7; | ||
142 | break; | ||
143 | default: | ||
144 | rate_idx = 0; | ||
145 | break; | ||
146 | } | ||
147 | } | ||
148 | } else { | ||
149 | switch (desc_rate) { | ||
150 | case DESC92C_RATEMCS0: | ||
151 | rate_idx = 0; | ||
152 | break; | ||
153 | case DESC92C_RATEMCS1: | ||
154 | rate_idx = 1; | ||
155 | break; | ||
156 | case DESC92C_RATEMCS2: | ||
157 | rate_idx = 2; | ||
158 | break; | ||
159 | case DESC92C_RATEMCS3: | ||
160 | rate_idx = 3; | ||
161 | break; | ||
162 | case DESC92C_RATEMCS4: | ||
163 | rate_idx = 4; | ||
164 | break; | ||
165 | case DESC92C_RATEMCS5: | ||
166 | rate_idx = 5; | ||
167 | break; | ||
168 | case DESC92C_RATEMCS6: | ||
169 | rate_idx = 6; | ||
170 | break; | ||
171 | case DESC92C_RATEMCS7: | ||
172 | rate_idx = 7; | ||
173 | break; | ||
174 | case DESC92C_RATEMCS8: | ||
175 | rate_idx = 8; | ||
176 | break; | ||
177 | case DESC92C_RATEMCS9: | ||
178 | rate_idx = 9; | ||
179 | break; | ||
180 | case DESC92C_RATEMCS10: | ||
181 | rate_idx = 10; | ||
182 | break; | ||
183 | case DESC92C_RATEMCS11: | ||
184 | rate_idx = 11; | ||
185 | break; | ||
186 | case DESC92C_RATEMCS12: | ||
187 | rate_idx = 12; | ||
188 | break; | ||
189 | case DESC92C_RATEMCS13: | ||
190 | rate_idx = 13; | ||
191 | break; | ||
192 | case DESC92C_RATEMCS14: | ||
193 | rate_idx = 14; | ||
194 | break; | ||
195 | case DESC92C_RATEMCS15: | ||
196 | rate_idx = 15; | ||
197 | break; | ||
198 | default: | ||
199 | rate_idx = 0; | ||
200 | break; | ||
201 | } | ||
202 | } | ||
203 | return rate_idx; | ||
204 | } | ||
205 | |||
206 | static void _rtl8723e_query_rxphystatus(struct ieee80211_hw *hw, | 48 | static void _rtl8723e_query_rxphystatus(struct ieee80211_hw *hw, |
207 | struct rtl_stats *pstatus, u8 *pdesc, | 49 | struct rtl_stats *pstatus, u8 *pdesc, |
208 | struct rx_fwinfo_8723e *p_drvinfo, | 50 | struct rx_fwinfo_8723e *p_drvinfo, |
@@ -503,8 +345,8 @@ bool rtl8723e_rx_query_desc(struct ieee80211_hw *hw, | |||
503 | * are use (RX_FLAG_HT) | 345 | * are use (RX_FLAG_HT) |
504 | * Notice: this is diff with windows define | 346 | * Notice: this is diff with windows define |
505 | */ | 347 | */ |
506 | rx_status->rate_idx = _rtl8723e_rate_mapping(hw, | 348 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, status->is_ht, |
507 | status->is_ht, status->rate); | 349 | false, status->rate); |
508 | 350 | ||
509 | rx_status->mactime = status->timestamp_low; | 351 | rx_status->mactime = status->timestamp_low; |
510 | if (phystatus == true) { | 352 | if (phystatus == true) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c index dd7eb4371f49..2367e8f47a5b 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "../wifi.h" | 26 | #include "../wifi.h" |
27 | #include "../base.h" | 27 | #include "../base.h" |
28 | #include "../pci.h" | 28 | #include "../pci.h" |
29 | #include "../core.h" | ||
29 | #include "reg.h" | 30 | #include "reg.h" |
30 | #include "def.h" | 31 | #include "def.h" |
31 | #include "phy.h" | 32 | #include "phy.h" |
@@ -211,35 +212,6 @@ void rtl8723be_dm_txpower_track_adjust(struct ieee80211_hw *hw, u8 type, | |||
211 | (pwr_val << 16) | (pwr_val << 24); | 212 | (pwr_val << 16) | (pwr_val << 24); |
212 | } | 213 | } |
213 | 214 | ||
214 | static void rtl8723be_dm_diginit(struct ieee80211_hw *hw) | ||
215 | { | ||
216 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
217 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
218 | |||
219 | dm_digtable->dig_enable_flag = true; | ||
220 | dm_digtable->cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f); | ||
221 | dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
222 | dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
223 | dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
224 | dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
225 | dm_digtable->rx_gain_max = DM_DIG_MAX; | ||
226 | dm_digtable->rx_gain_min = DM_DIG_MIN; | ||
227 | dm_digtable->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
228 | dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX; | ||
229 | dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN; | ||
230 | dm_digtable->pre_cck_cca_thres = 0xff; | ||
231 | dm_digtable->cur_cck_cca_thres = 0x83; | ||
232 | dm_digtable->forbidden_igi = DM_DIG_MIN; | ||
233 | dm_digtable->large_fa_hit = 0; | ||
234 | dm_digtable->recover_cnt = 0; | ||
235 | dm_digtable->dig_dynamic_min = DM_DIG_MIN; | ||
236 | dm_digtable->dig_dynamic_min_1 = DM_DIG_MIN; | ||
237 | dm_digtable->media_connect_0 = false; | ||
238 | dm_digtable->media_connect_1 = false; | ||
239 | rtlpriv->dm.dm_initialgain_enable = true; | ||
240 | dm_digtable->bt30_cur_igi = 0x32; | ||
241 | } | ||
242 | |||
243 | void rtl8723be_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw) | 215 | void rtl8723be_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw) |
244 | { | 216 | { |
245 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 217 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -293,9 +265,10 @@ static void rtl8723be_dm_init_dynamic_atc_switch(struct ieee80211_hw *hw) | |||
293 | void rtl8723be_dm_init(struct ieee80211_hw *hw) | 265 | void rtl8723be_dm_init(struct ieee80211_hw *hw) |
294 | { | 266 | { |
295 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 267 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
268 | u32 cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f); | ||
296 | 269 | ||
297 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; | 270 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; |
298 | rtl8723be_dm_diginit(hw); | 271 | rtl_dm_diginit(hw, cur_igvalue); |
299 | rtl8723be_dm_init_rate_adaptive_mask(hw); | 272 | rtl8723be_dm_init_rate_adaptive_mask(hw); |
300 | rtl8723_dm_init_edca_turbo(hw); | 273 | rtl8723_dm_init_edca_turbo(hw); |
301 | rtl8723_dm_init_dynamic_bb_powersaving(hw); | 274 | rtl8723_dm_init_dynamic_bb_powersaving(hw); |
@@ -424,7 +397,7 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw) | |||
424 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 397 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
425 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | 398 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; |
426 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 399 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
427 | u8 dig_dynamic_min, dig_maxofmin; | 400 | u8 dig_min_0, dig_maxofmin; |
428 | bool bfirstconnect, bfirstdisconnect; | 401 | bool bfirstconnect, bfirstdisconnect; |
429 | u8 dm_dig_max, dm_dig_min; | 402 | u8 dm_dig_max, dm_dig_min; |
430 | u8 current_igi = dm_digtable->cur_igvalue; | 403 | u8 current_igi = dm_digtable->cur_igvalue; |
@@ -434,7 +407,7 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw) | |||
434 | if (mac->act_scanning) | 407 | if (mac->act_scanning) |
435 | return; | 408 | return; |
436 | 409 | ||
437 | dig_dynamic_min = dm_digtable->dig_dynamic_min; | 410 | dig_min_0 = dm_digtable->dig_min_0; |
438 | bfirstconnect = (mac->link_state >= MAC80211_LINKED) && | 411 | bfirstconnect = (mac->link_state >= MAC80211_LINKED) && |
439 | !dm_digtable->media_connect_0; | 412 | !dm_digtable->media_connect_0; |
440 | bfirstdisconnect = (mac->link_state < MAC80211_LINKED) && | 413 | bfirstdisconnect = (mac->link_state < MAC80211_LINKED) && |
@@ -456,20 +429,20 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw) | |||
456 | if (rtlpriv->dm.one_entry_only) { | 429 | if (rtlpriv->dm.one_entry_only) { |
457 | offset = 12; | 430 | offset = 12; |
458 | if (dm_digtable->rssi_val_min - offset < dm_dig_min) | 431 | if (dm_digtable->rssi_val_min - offset < dm_dig_min) |
459 | dig_dynamic_min = dm_dig_min; | 432 | dig_min_0 = dm_dig_min; |
460 | else if (dm_digtable->rssi_val_min - offset > | 433 | else if (dm_digtable->rssi_val_min - offset > |
461 | dig_maxofmin) | 434 | dig_maxofmin) |
462 | dig_dynamic_min = dig_maxofmin; | 435 | dig_min_0 = dig_maxofmin; |
463 | else | 436 | else |
464 | dig_dynamic_min = | 437 | dig_min_0 = |
465 | dm_digtable->rssi_val_min - offset; | 438 | dm_digtable->rssi_val_min - offset; |
466 | } else { | 439 | } else { |
467 | dig_dynamic_min = dm_dig_min; | 440 | dig_min_0 = dm_dig_min; |
468 | } | 441 | } |
469 | 442 | ||
470 | } else { | 443 | } else { |
471 | dm_digtable->rx_gain_max = dm_dig_max; | 444 | dm_digtable->rx_gain_max = dm_dig_max; |
472 | dig_dynamic_min = dm_dig_min; | 445 | dig_min_0 = dm_dig_min; |
473 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "no link\n"); | 446 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, "no link\n"); |
474 | } | 447 | } |
475 | 448 | ||
@@ -497,11 +470,11 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw) | |||
497 | } else { | 470 | } else { |
498 | if (dm_digtable->large_fa_hit < 3) { | 471 | if (dm_digtable->large_fa_hit < 3) { |
499 | if ((dm_digtable->forbidden_igi - 1) < | 472 | if ((dm_digtable->forbidden_igi - 1) < |
500 | dig_dynamic_min) { | 473 | dig_min_0) { |
501 | dm_digtable->forbidden_igi = | 474 | dm_digtable->forbidden_igi = |
502 | dig_dynamic_min; | 475 | dig_min_0; |
503 | dm_digtable->rx_gain_min = | 476 | dm_digtable->rx_gain_min = |
504 | dig_dynamic_min; | 477 | dig_min_0; |
505 | } else { | 478 | } else { |
506 | dm_digtable->forbidden_igi--; | 479 | dm_digtable->forbidden_igi--; |
507 | dm_digtable->rx_gain_min = | 480 | dm_digtable->rx_gain_min = |
@@ -552,7 +525,7 @@ static void rtl8723be_dm_dig(struct ieee80211_hw *hw) | |||
552 | rtl8723be_dm_write_dig(hw, current_igi); | 525 | rtl8723be_dm_write_dig(hw, current_igi); |
553 | dm_digtable->media_connect_0 = | 526 | dm_digtable->media_connect_0 = |
554 | ((mac->link_state >= MAC80211_LINKED) ? true : false); | 527 | ((mac->link_state >= MAC80211_LINKED) ? true : false); |
555 | dm_digtable->dig_dynamic_min = dig_dynamic_min; | 528 | dm_digtable->dig_min_0 = dig_min_0; |
556 | } | 529 | } |
557 | 530 | ||
558 | static void rtl8723be_dm_false_alarm_counter_statistics( | 531 | static void rtl8723be_dm_false_alarm_counter_statistics( |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/dm.h b/drivers/net/wireless/rtlwifi/rtl8723be/dm.h index e4c0e8ae6f47..f752a2cad63d 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8723be/dm.h | |||
@@ -180,28 +180,12 @@ | |||
180 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 180 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
181 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 181 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
182 | 182 | ||
183 | #define DM_DIG_THRESH_HIGH 40 | ||
184 | #define DM_DIG_THRESH_LOW 35 | ||
185 | |||
186 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
187 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
188 | |||
189 | #define DM_DIG_MAX 0x3e | ||
190 | #define DM_DIG_MIN 0x1e | ||
191 | |||
192 | #define DM_DIG_MAX_AP 0x32 | ||
193 | #define DM_DIG_MIN_AP 0x20 | ||
194 | |||
195 | #define DM_DIG_FA_UPPER 0x3e | 183 | #define DM_DIG_FA_UPPER 0x3e |
196 | #define DM_DIG_FA_LOWER 0x1e | 184 | #define DM_DIG_FA_LOWER 0x1e |
197 | #define DM_DIG_FA_TH0 0x200 | 185 | #define DM_DIG_FA_TH0 0x200 |
198 | #define DM_DIG_FA_TH1 0x300 | 186 | #define DM_DIG_FA_TH1 0x300 |
199 | #define DM_DIG_FA_TH2 0x400 | 187 | #define DM_DIG_FA_TH2 0x400 |
200 | 188 | ||
201 | #define DM_DIG_BACKOFF_MAX 12 | ||
202 | #define DM_DIG_BACKOFF_MIN -4 | ||
203 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
204 | |||
205 | #define RXPATHSELECTION_SS_TH_LOW 30 | 189 | #define RXPATHSELECTION_SS_TH_LOW 30 |
206 | #define RXPATHSELECTION_DIFF_TH 18 | 190 | #define RXPATHSELECTION_DIFF_TH 18 |
207 | 191 | ||
@@ -252,23 +236,6 @@ enum dm_sw_ant_switch_e { | |||
252 | ANS_ANTENNA_MAX = 3, | 236 | ANS_ANTENNA_MAX = 3, |
253 | }; | 237 | }; |
254 | 238 | ||
255 | enum dm_dig_ext_port_alg_e { | ||
256 | DIG_EXT_PORT_STAGE_0 = 0, | ||
257 | DIG_EXT_PORT_STAGE_1 = 1, | ||
258 | DIG_EXT_PORT_STAGE_2 = 2, | ||
259 | DIG_EXT_PORT_STAGE_3 = 3, | ||
260 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
261 | }; | ||
262 | |||
263 | enum dm_dig_connect_e { | ||
264 | DIG_STA_DISCONNECT = 0, | ||
265 | DIG_STA_CONNECT = 1, | ||
266 | DIG_STA_BEFORE_CONNECT = 2, | ||
267 | DIG_MULTISTA_DISCONNECT = 3, | ||
268 | DIG_MULTISTA_CONNECT = 4, | ||
269 | DIG_CONNECT_MAX | ||
270 | }; | ||
271 | |||
272 | enum pwr_track_control_method { | 239 | enum pwr_track_control_method { |
273 | BBSWING, | 240 | BBSWING, |
274 | TXAGC | 241 | TXAGC |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/phy.c b/drivers/net/wireless/rtlwifi/rtl8723be/phy.c index 20dcc25c506c..b7b73cbe346d 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/phy.c +++ b/drivers/net/wireless/rtlwifi/rtl8723be/phy.c | |||
@@ -874,31 +874,6 @@ void rtl8723be_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw) | |||
874 | ROFDM0_RXDETECTOR3, rtlphy->framesync); | 874 | ROFDM0_RXDETECTOR3, rtlphy->framesync); |
875 | } | 875 | } |
876 | 876 | ||
877 | void rtl8723be_phy_get_txpower_level(struct ieee80211_hw *hw, long *powerlevel) | ||
878 | { | ||
879 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
880 | struct rtl_phy *rtlphy = &rtlpriv->phy; | ||
881 | u8 txpwr_level; | ||
882 | long txpwr_dbm; | ||
883 | |||
884 | txpwr_level = rtlphy->cur_cck_txpwridx; | ||
885 | txpwr_dbm = rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_B, | ||
886 | txpwr_level); | ||
887 | txpwr_level = rtlphy->cur_ofdm24g_txpwridx; | ||
888 | if (rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, txpwr_level) > | ||
889 | txpwr_dbm) | ||
890 | txpwr_dbm = | ||
891 | rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_G, | ||
892 | txpwr_level); | ||
893 | txpwr_level = rtlphy->cur_ofdm24g_txpwridx; | ||
894 | if (rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, | ||
895 | txpwr_level) > txpwr_dbm) | ||
896 | txpwr_dbm = | ||
897 | rtl8723_phy_txpwr_idx_to_dbm(hw, WIRELESS_MODE_N_24G, | ||
898 | txpwr_level); | ||
899 | *powerlevel = txpwr_dbm; | ||
900 | } | ||
901 | |||
902 | static u8 _rtl8723be_phy_get_ratesection_intxpower_byrate(enum radio_path path, | 877 | static u8 _rtl8723be_phy_get_ratesection_intxpower_byrate(enum radio_path path, |
903 | u8 rate) | 878 | u8 rate) |
904 | { | 879 | { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/phy.h b/drivers/net/wireless/rtlwifi/rtl8723be/phy.h index 6339738a0e33..9021d4745ab7 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/phy.h +++ b/drivers/net/wireless/rtlwifi/rtl8723be/phy.h | |||
@@ -114,8 +114,6 @@ bool rtl8723be_phy_mac_config(struct ieee80211_hw *hw); | |||
114 | bool rtl8723be_phy_bb_config(struct ieee80211_hw *hw); | 114 | bool rtl8723be_phy_bb_config(struct ieee80211_hw *hw); |
115 | bool rtl8723be_phy_rf_config(struct ieee80211_hw *hw); | 115 | bool rtl8723be_phy_rf_config(struct ieee80211_hw *hw); |
116 | void rtl8723be_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw); | 116 | void rtl8723be_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw); |
117 | void rtl8723be_phy_get_txpower_level(struct ieee80211_hw *hw, | ||
118 | long *powerlevel); | ||
119 | void rtl8723be_phy_set_txpower_level(struct ieee80211_hw *hw, | 117 | void rtl8723be_phy_set_txpower_level(struct ieee80211_hw *hw, |
120 | u8 channel); | 118 | u8 channel); |
121 | void rtl8723be_phy_scan_operation_backup(struct ieee80211_hw *hw, | 119 | void rtl8723be_phy_scan_operation_backup(struct ieee80211_hw *hw, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/sw.c b/drivers/net/wireless/rtlwifi/rtl8723be/sw.c index 223eb42992bd..1017f02d7bf7 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8723be/sw.c | |||
@@ -387,12 +387,14 @@ module_param_named(swlps, rtl8723be_mod_params.swctrl_lps, bool, 0444); | |||
387 | module_param_named(fwlps, rtl8723be_mod_params.fwctrl_lps, bool, 0444); | 387 | module_param_named(fwlps, rtl8723be_mod_params.fwctrl_lps, bool, 0444); |
388 | module_param_named(disable_watchdog, rtl8723be_mod_params.disable_watchdog, | 388 | module_param_named(disable_watchdog, rtl8723be_mod_params.disable_watchdog, |
389 | bool, 0444); | 389 | bool, 0444); |
390 | MODULE_PARM_DESC(swenc, "using hardware crypto (default 0 [hardware])\n"); | 390 | MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n"); |
391 | MODULE_PARM_DESC(ips, "using no link power save (default 1 is open)\n"); | 391 | MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n"); |
392 | MODULE_PARM_DESC(fwlps, "using linked fw control power save (default 1 is open)\n"); | 392 | MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n"); |
393 | MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n"); | ||
393 | MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 0)\n"); | 394 | MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 0)\n"); |
394 | MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); | 395 | MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); |
395 | MODULE_PARM_DESC(disable_watchdog, "Set to 1 to disable the watchdog (default 0)\n"); | 396 | MODULE_PARM_DESC(disable_watchdog, |
397 | "Set to 1 to disable the watchdog (default 0)\n"); | ||
396 | 398 | ||
397 | static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); | 399 | static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); |
398 | 400 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/trx.c b/drivers/net/wireless/rtlwifi/rtl8723be/trx.c index d6a1c70cb657..338ec9a9d09b 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723be/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8723be/trx.c | |||
@@ -47,164 +47,6 @@ static u8 _rtl8723be_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) | |||
47 | return skb->priority; | 47 | return skb->priority; |
48 | } | 48 | } |
49 | 49 | ||
50 | /* mac80211's rate_idx is like this: | ||
51 | * | ||
52 | * 2.4G band:rx_status->band == IEEE80211_BAND_2GHZ | ||
53 | * | ||
54 | * B/G rate: | ||
55 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
56 | * DESC92C_RATE1M-->DESC92C_RATE54M ==> idx is 0-->11, | ||
57 | * | ||
58 | * N rate: | ||
59 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
60 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
61 | * | ||
62 | * 5G band:rx_status->band == IEEE80211_BAND_5GHZ | ||
63 | * A rate: | ||
64 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
65 | * DESC92C_RATE6M-->DESC92C_RATE54M ==> idx is 0-->7, | ||
66 | * | ||
67 | * N rate: | ||
68 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
69 | * DESC92C_RATEMCS0-->DESC92C_RATEMCS15 ==> idx is 0-->15 | ||
70 | */ | ||
71 | static int _rtl8723be_rate_mapping(struct ieee80211_hw *hw, | ||
72 | bool isht, u8 desc_rate) | ||
73 | { | ||
74 | int rate_idx; | ||
75 | |||
76 | if (!isht) { | ||
77 | if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { | ||
78 | switch (desc_rate) { | ||
79 | case DESC92C_RATE1M: | ||
80 | rate_idx = 0; | ||
81 | break; | ||
82 | case DESC92C_RATE2M: | ||
83 | rate_idx = 1; | ||
84 | break; | ||
85 | case DESC92C_RATE5_5M: | ||
86 | rate_idx = 2; | ||
87 | break; | ||
88 | case DESC92C_RATE11M: | ||
89 | rate_idx = 3; | ||
90 | break; | ||
91 | case DESC92C_RATE6M: | ||
92 | rate_idx = 4; | ||
93 | break; | ||
94 | case DESC92C_RATE9M: | ||
95 | rate_idx = 5; | ||
96 | break; | ||
97 | case DESC92C_RATE12M: | ||
98 | rate_idx = 6; | ||
99 | break; | ||
100 | case DESC92C_RATE18M: | ||
101 | rate_idx = 7; | ||
102 | break; | ||
103 | case DESC92C_RATE24M: | ||
104 | rate_idx = 8; | ||
105 | break; | ||
106 | case DESC92C_RATE36M: | ||
107 | rate_idx = 9; | ||
108 | break; | ||
109 | case DESC92C_RATE48M: | ||
110 | rate_idx = 10; | ||
111 | break; | ||
112 | case DESC92C_RATE54M: | ||
113 | rate_idx = 11; | ||
114 | break; | ||
115 | default: | ||
116 | rate_idx = 0; | ||
117 | break; | ||
118 | } | ||
119 | } else { | ||
120 | switch (desc_rate) { | ||
121 | case DESC92C_RATE6M: | ||
122 | rate_idx = 0; | ||
123 | break; | ||
124 | case DESC92C_RATE9M: | ||
125 | rate_idx = 1; | ||
126 | break; | ||
127 | case DESC92C_RATE12M: | ||
128 | rate_idx = 2; | ||
129 | break; | ||
130 | case DESC92C_RATE18M: | ||
131 | rate_idx = 3; | ||
132 | break; | ||
133 | case DESC92C_RATE24M: | ||
134 | rate_idx = 4; | ||
135 | break; | ||
136 | case DESC92C_RATE36M: | ||
137 | rate_idx = 5; | ||
138 | break; | ||
139 | case DESC92C_RATE48M: | ||
140 | rate_idx = 6; | ||
141 | break; | ||
142 | case DESC92C_RATE54M: | ||
143 | rate_idx = 7; | ||
144 | break; | ||
145 | default: | ||
146 | rate_idx = 0; | ||
147 | break; | ||
148 | } | ||
149 | } | ||
150 | } else { | ||
151 | switch (desc_rate) { | ||
152 | case DESC92C_RATEMCS0: | ||
153 | rate_idx = 0; | ||
154 | break; | ||
155 | case DESC92C_RATEMCS1: | ||
156 | rate_idx = 1; | ||
157 | break; | ||
158 | case DESC92C_RATEMCS2: | ||
159 | rate_idx = 2; | ||
160 | break; | ||
161 | case DESC92C_RATEMCS3: | ||
162 | rate_idx = 3; | ||
163 | break; | ||
164 | case DESC92C_RATEMCS4: | ||
165 | rate_idx = 4; | ||
166 | break; | ||
167 | case DESC92C_RATEMCS5: | ||
168 | rate_idx = 5; | ||
169 | break; | ||
170 | case DESC92C_RATEMCS6: | ||
171 | rate_idx = 6; | ||
172 | break; | ||
173 | case DESC92C_RATEMCS7: | ||
174 | rate_idx = 7; | ||
175 | break; | ||
176 | case DESC92C_RATEMCS8: | ||
177 | rate_idx = 8; | ||
178 | break; | ||
179 | case DESC92C_RATEMCS9: | ||
180 | rate_idx = 9; | ||
181 | break; | ||
182 | case DESC92C_RATEMCS10: | ||
183 | rate_idx = 10; | ||
184 | break; | ||
185 | case DESC92C_RATEMCS11: | ||
186 | rate_idx = 11; | ||
187 | break; | ||
188 | case DESC92C_RATEMCS12: | ||
189 | rate_idx = 12; | ||
190 | break; | ||
191 | case DESC92C_RATEMCS13: | ||
192 | rate_idx = 13; | ||
193 | break; | ||
194 | case DESC92C_RATEMCS14: | ||
195 | rate_idx = 14; | ||
196 | break; | ||
197 | case DESC92C_RATEMCS15: | ||
198 | rate_idx = 15; | ||
199 | break; | ||
200 | default: | ||
201 | rate_idx = 0; | ||
202 | break; | ||
203 | } | ||
204 | } | ||
205 | return rate_idx; | ||
206 | } | ||
207 | |||
208 | static void _rtl8723be_query_rxphystatus(struct ieee80211_hw *hw, | 50 | static void _rtl8723be_query_rxphystatus(struct ieee80211_hw *hw, |
209 | struct rtl_stats *pstatus, u8 *pdesc, | 51 | struct rtl_stats *pstatus, u8 *pdesc, |
210 | struct rx_fwinfo_8723be *p_drvinfo, | 52 | struct rx_fwinfo_8723be *p_drvinfo, |
@@ -558,8 +400,8 @@ bool rtl8723be_rx_query_desc(struct ieee80211_hw *hw, | |||
558 | * supported rates or MCS index if HT rates | 400 | * supported rates or MCS index if HT rates |
559 | * are use (RX_FLAG_HT) | 401 | * are use (RX_FLAG_HT) |
560 | */ | 402 | */ |
561 | rx_status->rate_idx = _rtl8723be_rate_mapping(hw, status->is_ht, | 403 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, status->is_ht, |
562 | status->rate); | 404 | false, status->rate); |
563 | 405 | ||
564 | rx_status->mactime = status->timestamp_low; | 406 | rx_status->mactime = status->timestamp_low; |
565 | if (phystatus) { | 407 | if (phystatus) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/def.h b/drivers/net/wireless/rtlwifi/rtl8821ae/def.h index a730985ae81d..ee7c208bd070 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/def.h +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/def.h | |||
@@ -373,60 +373,6 @@ enum rtl_desc_qsel { | |||
373 | QSLT_CMD = 0x13, | 373 | QSLT_CMD = 0x13, |
374 | }; | 374 | }; |
375 | 375 | ||
376 | enum rtl_desc8821ae_rate { | ||
377 | DESC_RATE1M = 0x00, | ||
378 | DESC_RATE2M = 0x01, | ||
379 | DESC_RATE5_5M = 0x02, | ||
380 | DESC_RATE11M = 0x03, | ||
381 | |||
382 | DESC_RATE6M = 0x04, | ||
383 | DESC_RATE9M = 0x05, | ||
384 | DESC_RATE12M = 0x06, | ||
385 | DESC_RATE18M = 0x07, | ||
386 | DESC_RATE24M = 0x08, | ||
387 | DESC_RATE36M = 0x09, | ||
388 | DESC_RATE48M = 0x0a, | ||
389 | DESC_RATE54M = 0x0b, | ||
390 | |||
391 | DESC_RATEMCS0 = 0x0c, | ||
392 | DESC_RATEMCS1 = 0x0d, | ||
393 | DESC_RATEMCS2 = 0x0e, | ||
394 | DESC_RATEMCS3 = 0x0f, | ||
395 | DESC_RATEMCS4 = 0x10, | ||
396 | DESC_RATEMCS5 = 0x11, | ||
397 | DESC_RATEMCS6 = 0x12, | ||
398 | DESC_RATEMCS7 = 0x13, | ||
399 | DESC_RATEMCS8 = 0x14, | ||
400 | DESC_RATEMCS9 = 0x15, | ||
401 | DESC_RATEMCS10 = 0x16, | ||
402 | DESC_RATEMCS11 = 0x17, | ||
403 | DESC_RATEMCS12 = 0x18, | ||
404 | DESC_RATEMCS13 = 0x19, | ||
405 | DESC_RATEMCS14 = 0x1a, | ||
406 | DESC_RATEMCS15 = 0x1b, | ||
407 | |||
408 | DESC_RATEVHT1SS_MCS0 = 0x2c, | ||
409 | DESC_RATEVHT1SS_MCS1 = 0x2d, | ||
410 | DESC_RATEVHT1SS_MCS2 = 0x2e, | ||
411 | DESC_RATEVHT1SS_MCS3 = 0x2f, | ||
412 | DESC_RATEVHT1SS_MCS4 = 0x30, | ||
413 | DESC_RATEVHT1SS_MCS5 = 0x31, | ||
414 | DESC_RATEVHT1SS_MCS6 = 0x32, | ||
415 | DESC_RATEVHT1SS_MCS7 = 0x33, | ||
416 | DESC_RATEVHT1SS_MCS8 = 0x34, | ||
417 | DESC_RATEVHT1SS_MCS9 = 0x35, | ||
418 | DESC_RATEVHT2SS_MCS0 = 0x36, | ||
419 | DESC_RATEVHT2SS_MCS1 = 0x37, | ||
420 | DESC_RATEVHT2SS_MCS2 = 0x38, | ||
421 | DESC_RATEVHT2SS_MCS3 = 0x39, | ||
422 | DESC_RATEVHT2SS_MCS4 = 0x3a, | ||
423 | DESC_RATEVHT2SS_MCS5 = 0x3b, | ||
424 | DESC_RATEVHT2SS_MCS6 = 0x3c, | ||
425 | DESC_RATEVHT2SS_MCS7 = 0x3d, | ||
426 | DESC_RATEVHT2SS_MCS8 = 0x3e, | ||
427 | DESC_RATEVHT2SS_MCS9 = 0x3f, | ||
428 | }; | ||
429 | |||
430 | enum rx_packet_type { | 376 | enum rx_packet_type { |
431 | NORMAL_RX, | 377 | NORMAL_RX, |
432 | TX_REPORT1, | 378 | TX_REPORT1, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c index ba30b0d250fd..0b2082dc48f1 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include "../wifi.h" | 26 | #include "../wifi.h" |
27 | #include "../base.h" | 27 | #include "../base.h" |
28 | #include "../pci.h" | 28 | #include "../pci.h" |
29 | #include "../core.h" | ||
29 | #include "reg.h" | 30 | #include "reg.h" |
30 | #include "def.h" | 31 | #include "def.h" |
31 | #include "phy.h" | 32 | #include "phy.h" |
@@ -519,34 +520,6 @@ void rtl8821ae_dm_initialize_txpower_tracking_thermalmeter( | |||
519 | } | 520 | } |
520 | } | 521 | } |
521 | 522 | ||
522 | static void rtl8821ae_dm_diginit(struct ieee80211_hw *hw) | ||
523 | { | ||
524 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
525 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | ||
526 | |||
527 | dm_digtable->cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f); | ||
528 | dm_digtable->rssi_lowthresh = DM_DIG_THRESH_LOW; | ||
529 | dm_digtable->rssi_highthresh = DM_DIG_THRESH_HIGH; | ||
530 | dm_digtable->fa_lowthresh = DM_FALSEALARM_THRESH_LOW; | ||
531 | dm_digtable->fa_highthresh = DM_FALSEALARM_THRESH_HIGH; | ||
532 | dm_digtable->rx_gain_max = DM_DIG_MAX; | ||
533 | dm_digtable->rx_gain_min = DM_DIG_MIN; | ||
534 | dm_digtable->back_val = DM_DIG_BACKOFF_DEFAULT; | ||
535 | dm_digtable->back_range_max = DM_DIG_BACKOFF_MAX; | ||
536 | dm_digtable->back_range_min = DM_DIG_BACKOFF_MIN; | ||
537 | dm_digtable->pre_cck_cca_thres = 0xff; | ||
538 | dm_digtable->cur_cck_cca_thres = 0x83; | ||
539 | dm_digtable->forbidden_igi = DM_DIG_MIN; | ||
540 | dm_digtable->large_fa_hit = 0; | ||
541 | dm_digtable->recover_cnt = 0; | ||
542 | dm_digtable->dig_dynamic_min = DM_DIG_MIN; | ||
543 | dm_digtable->dig_dynamic_min_1 = DM_DIG_MIN; | ||
544 | dm_digtable->media_connect_0 = false; | ||
545 | dm_digtable->media_connect_1 = false; | ||
546 | rtlpriv->dm.dm_initialgain_enable = true; | ||
547 | dm_digtable->bt30_cur_igi = 0x32; | ||
548 | } | ||
549 | |||
550 | void rtl8821ae_dm_init_edca_turbo(struct ieee80211_hw *hw) | 523 | void rtl8821ae_dm_init_edca_turbo(struct ieee80211_hw *hw) |
551 | { | 524 | { |
552 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 525 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
@@ -606,6 +579,7 @@ void rtl8821ae_dm_init(struct ieee80211_hw *hw) | |||
606 | { | 579 | { |
607 | struct rtl_priv *rtlpriv = rtl_priv(hw); | 580 | struct rtl_priv *rtlpriv = rtl_priv(hw); |
608 | struct rtl_phy *rtlphy = &rtlpriv->phy; | 581 | struct rtl_phy *rtlphy = &rtlpriv->phy; |
582 | u32 cur_igvalue = rtl_get_bbreg(hw, ROFDM0_XAAGCCORE1, 0x7f); | ||
609 | 583 | ||
610 | spin_lock(&rtlpriv->locks.iqk_lock); | 584 | spin_lock(&rtlpriv->locks.iqk_lock); |
611 | rtlphy->lck_inprogress = false; | 585 | rtlphy->lck_inprogress = false; |
@@ -613,7 +587,7 @@ void rtl8821ae_dm_init(struct ieee80211_hw *hw) | |||
613 | 587 | ||
614 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; | 588 | rtlpriv->dm.dm_type = DM_TYPE_BYDRIVER; |
615 | rtl8821ae_dm_common_info_self_init(hw); | 589 | rtl8821ae_dm_common_info_self_init(hw); |
616 | rtl8821ae_dm_diginit(hw); | 590 | rtl_dm_diginit(hw, cur_igvalue); |
617 | rtl8821ae_dm_init_rate_adaptive_mask(hw); | 591 | rtl8821ae_dm_init_rate_adaptive_mask(hw); |
618 | rtl8821ae_dm_init_edca_turbo(hw); | 592 | rtl8821ae_dm_init_edca_turbo(hw); |
619 | rtl8821ae_dm_initialize_txpower_tracking_thermalmeter(hw); | 593 | rtl8821ae_dm_initialize_txpower_tracking_thermalmeter(hw); |
@@ -822,7 +796,7 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw) | |||
822 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; | 796 | struct dig_t *dm_digtable = &rtlpriv->dm_digtable; |
823 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | 797 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); |
824 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | 798 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
825 | u8 dig_dynamic_min; | 799 | u8 dig_min_0; |
826 | u8 dig_max_of_min; | 800 | u8 dig_max_of_min; |
827 | bool first_connect, first_disconnect; | 801 | bool first_connect, first_disconnect; |
828 | u8 dm_dig_max, dm_dig_min, offset; | 802 | u8 dm_dig_max, dm_dig_min, offset; |
@@ -837,7 +811,7 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw) | |||
837 | } | 811 | } |
838 | 812 | ||
839 | /*add by Neil Chen to avoid PSD is processing*/ | 813 | /*add by Neil Chen to avoid PSD is processing*/ |
840 | dig_dynamic_min = dm_digtable->dig_dynamic_min; | 814 | dig_min_0 = dm_digtable->dig_min_0; |
841 | first_connect = (mac->link_state >= MAC80211_LINKED) && | 815 | first_connect = (mac->link_state >= MAC80211_LINKED) && |
842 | (!dm_digtable->media_connect_0); | 816 | (!dm_digtable->media_connect_0); |
843 | first_disconnect = (mac->link_state < MAC80211_LINKED) && | 817 | first_disconnect = (mac->link_state < MAC80211_LINKED) && |
@@ -876,23 +850,23 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw) | |||
876 | offset = 0; | 850 | offset = 0; |
877 | 851 | ||
878 | if (dm_digtable->rssi_val_min - offset < dm_dig_min) | 852 | if (dm_digtable->rssi_val_min - offset < dm_dig_min) |
879 | dig_dynamic_min = dm_dig_min; | 853 | dig_min_0 = dm_dig_min; |
880 | else if (dm_digtable->rssi_val_min - | 854 | else if (dm_digtable->rssi_val_min - |
881 | offset > dig_max_of_min) | 855 | offset > dig_max_of_min) |
882 | dig_dynamic_min = dig_max_of_min; | 856 | dig_min_0 = dig_max_of_min; |
883 | else | 857 | else |
884 | dig_dynamic_min = | 858 | dig_min_0 = |
885 | dm_digtable->rssi_val_min - offset; | 859 | dm_digtable->rssi_val_min - offset; |
886 | 860 | ||
887 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 861 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
888 | "bOneEntryOnly=TRUE, dig_dynamic_min=0x%x\n", | 862 | "bOneEntryOnly=TRUE, dig_min_0=0x%x\n", |
889 | dig_dynamic_min); | 863 | dig_min_0); |
890 | } else { | 864 | } else { |
891 | dig_dynamic_min = dm_dig_min; | 865 | dig_min_0 = dm_dig_min; |
892 | } | 866 | } |
893 | } else { | 867 | } else { |
894 | dm_digtable->rx_gain_max = dm_dig_max; | 868 | dm_digtable->rx_gain_max = dm_dig_max; |
895 | dig_dynamic_min = dm_dig_min; | 869 | dig_min_0 = dm_dig_min; |
896 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 870 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
897 | "No Link\n"); | 871 | "No Link\n"); |
898 | } | 872 | } |
@@ -925,11 +899,11 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw) | |||
925 | } else { | 899 | } else { |
926 | if (dm_digtable->large_fa_hit < 3) { | 900 | if (dm_digtable->large_fa_hit < 3) { |
927 | if ((dm_digtable->forbidden_igi - 1) < | 901 | if ((dm_digtable->forbidden_igi - 1) < |
928 | dig_dynamic_min) { | 902 | dig_min_0) { |
929 | dm_digtable->forbidden_igi = | 903 | dm_digtable->forbidden_igi = |
930 | dig_dynamic_min; | 904 | dig_min_0; |
931 | dm_digtable->rx_gain_min = | 905 | dm_digtable->rx_gain_min = |
932 | dig_dynamic_min; | 906 | dig_min_0; |
933 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, | 907 | RT_TRACE(rtlpriv, COMP_DIG, DBG_LOUD, |
934 | "Normal Case: At Lower Bound\n"); | 908 | "Normal Case: At Lower Bound\n"); |
935 | } else { | 909 | } else { |
@@ -1024,7 +998,7 @@ static void rtl8821ae_dm_dig(struct ieee80211_hw *hw) | |||
1024 | rtl8821ae_dm_write_dig(hw, current_igi); | 998 | rtl8821ae_dm_write_dig(hw, current_igi); |
1025 | dm_digtable->media_connect_0 = | 999 | dm_digtable->media_connect_0 = |
1026 | ((mac->link_state >= MAC80211_LINKED) ? true : false); | 1000 | ((mac->link_state >= MAC80211_LINKED) ? true : false); |
1027 | dm_digtable->dig_dynamic_min = dig_dynamic_min; | 1001 | dm_digtable->dig_min_0 = dig_min_0; |
1028 | } | 1002 | } |
1029 | 1003 | ||
1030 | static void rtl8821ae_dm_common_info_self_update(struct ieee80211_hw *hw) | 1004 | static void rtl8821ae_dm_common_info_self_update(struct ieee80211_hw *hw) |
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.h b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.h index 9dd40dd316c1..625a6bbb21fc 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.h +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.h | |||
@@ -187,28 +187,12 @@ | |||
187 | #define BW_AUTO_SWITCH_HIGH_LOW 25 | 187 | #define BW_AUTO_SWITCH_HIGH_LOW 25 |
188 | #define BW_AUTO_SWITCH_LOW_HIGH 30 | 188 | #define BW_AUTO_SWITCH_LOW_HIGH 30 |
189 | 189 | ||
190 | #define DM_DIG_THRESH_HIGH 40 | ||
191 | #define DM_DIG_THRESH_LOW 35 | ||
192 | |||
193 | #define DM_FALSEALARM_THRESH_LOW 400 | ||
194 | #define DM_FALSEALARM_THRESH_HIGH 1000 | ||
195 | |||
196 | #define DM_DIG_MAX 0x3e | ||
197 | #define DM_DIG_MIN 0x1e | ||
198 | |||
199 | #define DM_DIG_MAX_AP 0x32 | ||
200 | #define DM_DIG_MIN_AP 0x20 | ||
201 | |||
202 | #define DM_DIG_FA_UPPER 0x3e | 190 | #define DM_DIG_FA_UPPER 0x3e |
203 | #define DM_DIG_FA_LOWER 0x1e | 191 | #define DM_DIG_FA_LOWER 0x1e |
204 | #define DM_DIG_FA_TH0 200 | 192 | #define DM_DIG_FA_TH0 200 |
205 | #define DM_DIG_FA_TH1 0x300 | 193 | #define DM_DIG_FA_TH1 0x300 |
206 | #define DM_DIG_FA_TH2 0x400 | 194 | #define DM_DIG_FA_TH2 0x400 |
207 | 195 | ||
208 | #define DM_DIG_BACKOFF_MAX 12 | ||
209 | #define DM_DIG_BACKOFF_MIN -4 | ||
210 | #define DM_DIG_BACKOFF_DEFAULT 10 | ||
211 | |||
212 | #define RXPATHSELECTION_SS_TH_LOW 30 | 196 | #define RXPATHSELECTION_SS_TH_LOW 30 |
213 | #define RXPATHSELECTION_DIFF_TH 18 | 197 | #define RXPATHSELECTION_DIFF_TH 18 |
214 | 198 | ||
@@ -262,14 +246,6 @@ enum tag_dynamic_init_gain_operation_type_definition { | |||
262 | DIG_OP_TYPE_MAX | 246 | DIG_OP_TYPE_MAX |
263 | }; | 247 | }; |
264 | 248 | ||
265 | enum tag_cck_packet_detection_threshold_type_definition { | ||
266 | CCK_PD_STAGE_LOWRSSI = 0, | ||
267 | CCK_PD_STAGE_HIGHRSSI = 1, | ||
268 | CCK_FA_STAGE_LOW = 2, | ||
269 | CCK_FA_STAGE_HIGH = 3, | ||
270 | CCK_PD_STAGE_MAX = 4, | ||
271 | }; | ||
272 | |||
273 | enum dm_1r_cca_e { | 249 | enum dm_1r_cca_e { |
274 | CCA_1R = 0, | 250 | CCA_1R = 0, |
275 | CCA_2R = 1, | 251 | CCA_2R = 1, |
@@ -288,23 +264,6 @@ enum dm_sw_ant_switch_e { | |||
288 | ANS_ANTENNA_MAX = 3, | 264 | ANS_ANTENNA_MAX = 3, |
289 | }; | 265 | }; |
290 | 266 | ||
291 | enum dm_dig_ext_port_alg_e { | ||
292 | DIG_EXT_PORT_STAGE_0 = 0, | ||
293 | DIG_EXT_PORT_STAGE_1 = 1, | ||
294 | DIG_EXT_PORT_STAGE_2 = 2, | ||
295 | DIG_EXT_PORT_STAGE_3 = 3, | ||
296 | DIG_EXT_PORT_STAGE_MAX = 4, | ||
297 | }; | ||
298 | |||
299 | enum dm_dig_connect_e { | ||
300 | DIG_STA_DISCONNECT = 0, | ||
301 | DIG_STA_CONNECT = 1, | ||
302 | DIG_STA_BEFORE_CONNECT = 2, | ||
303 | DIG_MULTISTA_DISCONNECT = 3, | ||
304 | DIG_MULTISTA_CONNECT = 4, | ||
305 | DIG_CONNECT_MAX | ||
306 | }; | ||
307 | |||
308 | enum pwr_track_control_method { | 267 | enum pwr_track_control_method { |
309 | BBSWING, | 268 | BBSWING, |
310 | TXAGC, | 269 | TXAGC, |
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/pwrseq.h b/drivers/net/wireless/rtlwifi/rtl8821ae/pwrseq.h index bf0b0ce9519c..36b3e91d996e 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/pwrseq.h +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/pwrseq.h | |||
@@ -93,9 +93,9 @@ | |||
93 | 93 | ||
94 | #define RTL8812_TRANS_CARDEMU_TO_SUS \ | 94 | #define RTL8812_TRANS_CARDEMU_TO_SUS \ |
95 | {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ | 95 | {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK,\ |
96 | PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xcc}, \ | 96 | PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xc0}, \ |
97 | {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ | 97 | {0x0042, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_PCI_MSK,\ |
98 | PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xEC}, \ | 98 | PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xF0, 0xE0}, \ |
99 | {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ | 99 | {0x0043, PWR_CUT_ALL_MSK, PWR_FAB_ALL_MSK, PWR_INTF_ALL_MSK,\ |
100 | PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x07 \ | 100 | PWR_BASEADDR_MAC, PWR_CMD_WRITE, 0xFF, 0x07 \ |
101 | /* gpio11 input mode, gpio10~8 output mode */}, \ | 101 | /* gpio11 input mode, gpio10~8 output mode */}, \ |
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c index fc92dd6a0d07..a4988121e1ab 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c | |||
@@ -85,52 +85,6 @@ static void rtl8821ae_init_aspm_vars(struct ieee80211_hw *hw) | |||
85 | rtlpci->const_support_pciaspm = 1; | 85 | rtlpci->const_support_pciaspm = 1; |
86 | } | 86 | } |
87 | 87 | ||
88 | static void load_wowlan_fw(struct rtl_priv *rtlpriv) | ||
89 | { | ||
90 | /* callback routine to load wowlan firmware after main fw has | ||
91 | * been loaded | ||
92 | */ | ||
93 | const struct firmware *wowlan_firmware; | ||
94 | char *fw_name = NULL; | ||
95 | int err; | ||
96 | |||
97 | /* for wowlan firmware buf */ | ||
98 | rtlpriv->rtlhal.wowlan_firmware = vzalloc(0x8000); | ||
99 | if (!rtlpriv->rtlhal.wowlan_firmware) { | ||
100 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | ||
101 | "Can't alloc buffer for wowlan fw.\n"); | ||
102 | return; | ||
103 | } | ||
104 | |||
105 | if (rtlpriv->rtlhal.hw_type == HARDWARE_TYPE_RTL8821AE) | ||
106 | fw_name = "rtlwifi/rtl8821aefw_wowlan.bin"; | ||
107 | else | ||
108 | fw_name = "rtlwifi/rtl8812aefw_wowlan.bin"; | ||
109 | err = request_firmware(&wowlan_firmware, fw_name, rtlpriv->io.dev); | ||
110 | if (err) { | ||
111 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | ||
112 | "Failed to request wowlan firmware!\n"); | ||
113 | goto error; | ||
114 | } | ||
115 | |||
116 | if (wowlan_firmware->size > 0x8000) { | ||
117 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | ||
118 | "Wowlan Firmware is too big!\n"); | ||
119 | goto error; | ||
120 | } | ||
121 | |||
122 | memcpy(rtlpriv->rtlhal.wowlan_firmware, wowlan_firmware->data, | ||
123 | wowlan_firmware->size); | ||
124 | rtlpriv->rtlhal.wowlan_fwsize = wowlan_firmware->size; | ||
125 | release_firmware(wowlan_firmware); | ||
126 | |||
127 | RT_TRACE(rtlpriv, COMP_INIT, DBG_LOUD, "WOWLAN FirmwareDownload OK\n"); | ||
128 | return; | ||
129 | error: | ||
130 | release_firmware(wowlan_firmware); | ||
131 | vfree(rtlpriv->rtlhal.wowlan_firmware); | ||
132 | } | ||
133 | |||
134 | /*InitializeVariables8812E*/ | 88 | /*InitializeVariables8812E*/ |
135 | int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw) | 89 | int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw) |
136 | { | 90 | { |
@@ -231,7 +185,6 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw) | |||
231 | else if (rtlpriv->psc.reg_fwctrl_lps == 3) | 185 | else if (rtlpriv->psc.reg_fwctrl_lps == 3) |
232 | rtlpriv->psc.fwctrl_psmode = FW_PS_DTIM_MODE; | 186 | rtlpriv->psc.fwctrl_psmode = FW_PS_DTIM_MODE; |
233 | 187 | ||
234 | rtlpriv->rtl_fw_second_cb = load_wowlan_fw; | ||
235 | /* for firmware buf */ | 188 | /* for firmware buf */ |
236 | rtlpriv->rtlhal.pfirmware = vzalloc(0x8000); | 189 | rtlpriv->rtlhal.pfirmware = vzalloc(0x8000); |
237 | if (!rtlpriv->rtlhal.pfirmware) { | 190 | if (!rtlpriv->rtlhal.pfirmware) { |
@@ -239,20 +192,41 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw) | |||
239 | "Can't alloc buffer for fw.\n"); | 192 | "Can't alloc buffer for fw.\n"); |
240 | return 1; | 193 | return 1; |
241 | } | 194 | } |
195 | rtlpriv->rtlhal.wowlan_firmware = vzalloc(0x8000); | ||
196 | if (!rtlpriv->rtlhal.wowlan_firmware) { | ||
197 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | ||
198 | "Can't alloc buffer for wowlan fw.\n"); | ||
199 | return 1; | ||
200 | } | ||
242 | 201 | ||
243 | if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) | 202 | if (rtlhal->hw_type == HARDWARE_TYPE_RTL8812AE) { |
244 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8812aefw.bin"; | 203 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8812aefw.bin"; |
245 | else | 204 | rtlpriv->cfg->wowlan_fw_name = "rtlwifi/rtl8812aefw_wowlan.bin"; |
205 | } else { | ||
246 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8821aefw.bin"; | 206 | rtlpriv->cfg->fw_name = "rtlwifi/rtl8821aefw.bin"; |
207 | rtlpriv->cfg->wowlan_fw_name = "rtlwifi/rtl8821aefw_wowlan.bin"; | ||
208 | } | ||
247 | 209 | ||
248 | rtlpriv->max_fw_size = 0x8000; | 210 | rtlpriv->max_fw_size = 0x8000; |
211 | /*load normal firmware*/ | ||
249 | pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name); | 212 | pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name); |
250 | err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name, | 213 | err = request_firmware_nowait(THIS_MODULE, 1, rtlpriv->cfg->fw_name, |
251 | rtlpriv->io.dev, GFP_KERNEL, hw, | 214 | rtlpriv->io.dev, GFP_KERNEL, hw, |
252 | rtl_fw_cb); | 215 | rtl_fw_cb); |
253 | if (err) { | 216 | if (err) { |
254 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | 217 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, |
255 | "Failed to request firmware!\n"); | 218 | "Failed to request normal firmware!\n"); |
219 | return 1; | ||
220 | } | ||
221 | /*load wowlan firmware*/ | ||
222 | pr_info("Using firmware %s\n", rtlpriv->cfg->wowlan_fw_name); | ||
223 | err = request_firmware_nowait(THIS_MODULE, 1, | ||
224 | rtlpriv->cfg->wowlan_fw_name, | ||
225 | rtlpriv->io.dev, GFP_KERNEL, hw, | ||
226 | rtl_wowlan_fw_cb); | ||
227 | if (err) { | ||
228 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, | ||
229 | "Failed to request wowlan firmware!\n"); | ||
256 | return 1; | 230 | return 1; |
257 | } | 231 | } |
258 | return 0; | 232 | return 0; |
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/trx.c b/drivers/net/wireless/rtlwifi/rtl8821ae/trx.c index 383b86b05cba..72af4b9ee32b 100644 --- a/drivers/net/wireless/rtlwifi/rtl8821ae/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8821ae/trx.c | |||
@@ -48,232 +48,6 @@ static u8 _rtl8821ae_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 hw_queue) | |||
48 | return skb->priority; | 48 | return skb->priority; |
49 | } | 49 | } |
50 | 50 | ||
51 | /* mac80211's rate_idx is like this: | ||
52 | * | ||
53 | * 2.4G band:rx_status->band == IEEE80211_BAND_2GHZ | ||
54 | * | ||
55 | * B/G rate: | ||
56 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
57 | * DESC_RATE1M-->DESC_RATE54M ==> idx is 0-->11, | ||
58 | * | ||
59 | * N rate: | ||
60 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
61 | * DESC_RATEMCS0-->DESC_RATEMCS15 ==> idx is 0-->15 | ||
62 | * | ||
63 | * 5G band:rx_status->band == IEEE80211_BAND_5GHZ | ||
64 | * A rate: | ||
65 | * (rx_status->flag & RX_FLAG_HT) = 0, | ||
66 | * DESC_RATE6M-->DESC_RATE54M ==> idx is 0-->7, | ||
67 | * | ||
68 | * N rate: | ||
69 | * (rx_status->flag & RX_FLAG_HT) = 1, | ||
70 | * DESC_RATEMCS0-->DESC_RATEMCS15 ==> idx is 0-->15 | ||
71 | */ | ||
72 | static int _rtl8821ae_rate_mapping(struct ieee80211_hw *hw, | ||
73 | bool isht, bool isvht, u8 desc_rate) | ||
74 | { | ||
75 | int rate_idx; | ||
76 | |||
77 | if (!isht) { | ||
78 | if (IEEE80211_BAND_2GHZ == hw->conf.chandef.chan->band) { | ||
79 | switch (desc_rate) { | ||
80 | case DESC_RATE1M: | ||
81 | rate_idx = 0; | ||
82 | break; | ||
83 | case DESC_RATE2M: | ||
84 | rate_idx = 1; | ||
85 | break; | ||
86 | case DESC_RATE5_5M: | ||
87 | rate_idx = 2; | ||
88 | break; | ||
89 | case DESC_RATE11M: | ||
90 | rate_idx = 3; | ||
91 | break; | ||
92 | case DESC_RATE6M: | ||
93 | rate_idx = 4; | ||
94 | break; | ||
95 | case DESC_RATE9M: | ||
96 | rate_idx = 5; | ||
97 | break; | ||
98 | case DESC_RATE12M: | ||
99 | rate_idx = 6; | ||
100 | break; | ||
101 | case DESC_RATE18M: | ||
102 | rate_idx = 7; | ||
103 | break; | ||
104 | case DESC_RATE24M: | ||
105 | rate_idx = 8; | ||
106 | break; | ||
107 | case DESC_RATE36M: | ||
108 | rate_idx = 9; | ||
109 | break; | ||
110 | case DESC_RATE48M: | ||
111 | rate_idx = 10; | ||
112 | break; | ||
113 | case DESC_RATE54M: | ||
114 | rate_idx = 11; | ||
115 | break; | ||
116 | default: | ||
117 | rate_idx = 0; | ||
118 | break; | ||
119 | } | ||
120 | } else { | ||
121 | switch (desc_rate) { | ||
122 | case DESC_RATE6M: | ||
123 | rate_idx = 0; | ||
124 | break; | ||
125 | case DESC_RATE9M: | ||
126 | rate_idx = 1; | ||
127 | break; | ||
128 | case DESC_RATE12M: | ||
129 | rate_idx = 2; | ||
130 | break; | ||
131 | case DESC_RATE18M: | ||
132 | rate_idx = 3; | ||
133 | break; | ||
134 | case DESC_RATE24M: | ||
135 | rate_idx = 4; | ||
136 | break; | ||
137 | case DESC_RATE36M: | ||
138 | rate_idx = 5; | ||
139 | break; | ||
140 | case DESC_RATE48M: | ||
141 | rate_idx = 6; | ||
142 | break; | ||
143 | case DESC_RATE54M: | ||
144 | rate_idx = 7; | ||
145 | break; | ||
146 | default: | ||
147 | rate_idx = 0; | ||
148 | break; | ||
149 | } | ||
150 | } | ||
151 | } else { | ||
152 | switch (desc_rate) { | ||
153 | case DESC_RATEMCS0: | ||
154 | rate_idx = 0; | ||
155 | break; | ||
156 | case DESC_RATEMCS1: | ||
157 | rate_idx = 1; | ||
158 | break; | ||
159 | case DESC_RATEMCS2: | ||
160 | rate_idx = 2; | ||
161 | break; | ||
162 | case DESC_RATEMCS3: | ||
163 | rate_idx = 3; | ||
164 | break; | ||
165 | case DESC_RATEMCS4: | ||
166 | rate_idx = 4; | ||
167 | break; | ||
168 | case DESC_RATEMCS5: | ||
169 | rate_idx = 5; | ||
170 | break; | ||
171 | case DESC_RATEMCS6: | ||
172 | rate_idx = 6; | ||
173 | break; | ||
174 | case DESC_RATEMCS7: | ||
175 | rate_idx = 7; | ||
176 | break; | ||
177 | case DESC_RATEMCS8: | ||
178 | rate_idx = 8; | ||
179 | break; | ||
180 | case DESC_RATEMCS9: | ||
181 | rate_idx = 9; | ||
182 | break; | ||
183 | case DESC_RATEMCS10: | ||
184 | rate_idx = 10; | ||
185 | break; | ||
186 | case DESC_RATEMCS11: | ||
187 | rate_idx = 11; | ||
188 | break; | ||
189 | case DESC_RATEMCS12: | ||
190 | rate_idx = 12; | ||
191 | break; | ||
192 | case DESC_RATEMCS13: | ||
193 | rate_idx = 13; | ||
194 | break; | ||
195 | case DESC_RATEMCS14: | ||
196 | rate_idx = 14; | ||
197 | break; | ||
198 | case DESC_RATEMCS15: | ||
199 | rate_idx = 15; | ||
200 | break; | ||
201 | default: | ||
202 | rate_idx = 0; | ||
203 | break; | ||
204 | } | ||
205 | } | ||
206 | |||
207 | if (isvht) { | ||
208 | switch (desc_rate) { | ||
209 | case DESC_RATEVHT1SS_MCS0: | ||
210 | rate_idx = 0; | ||
211 | break; | ||
212 | case DESC_RATEVHT1SS_MCS1: | ||
213 | rate_idx = 1; | ||
214 | break; | ||
215 | case DESC_RATEVHT1SS_MCS2: | ||
216 | rate_idx = 2; | ||
217 | break; | ||
218 | case DESC_RATEVHT1SS_MCS3: | ||
219 | rate_idx = 3; | ||
220 | break; | ||
221 | case DESC_RATEVHT1SS_MCS4: | ||
222 | rate_idx = 4; | ||
223 | break; | ||
224 | case DESC_RATEVHT1SS_MCS5: | ||
225 | rate_idx = 5; | ||
226 | break; | ||
227 | case DESC_RATEVHT1SS_MCS6: | ||
228 | rate_idx = 6; | ||
229 | break; | ||
230 | case DESC_RATEVHT1SS_MCS7: | ||
231 | rate_idx = 7; | ||
232 | break; | ||
233 | case DESC_RATEVHT1SS_MCS8: | ||
234 | rate_idx = 8; | ||
235 | break; | ||
236 | case DESC_RATEVHT1SS_MCS9: | ||
237 | rate_idx = 9; | ||
238 | break; | ||
239 | case DESC_RATEVHT2SS_MCS0: | ||
240 | rate_idx = 0; | ||
241 | break; | ||
242 | case DESC_RATEVHT2SS_MCS1: | ||
243 | rate_idx = 1; | ||
244 | break; | ||
245 | case DESC_RATEVHT2SS_MCS2: | ||
246 | rate_idx = 2; | ||
247 | break; | ||
248 | case DESC_RATEVHT2SS_MCS3: | ||
249 | rate_idx = 3; | ||
250 | break; | ||
251 | case DESC_RATEVHT2SS_MCS4: | ||
252 | rate_idx = 4; | ||
253 | break; | ||
254 | case DESC_RATEVHT2SS_MCS5: | ||
255 | rate_idx = 5; | ||
256 | break; | ||
257 | case DESC_RATEVHT2SS_MCS6: | ||
258 | rate_idx = 6; | ||
259 | break; | ||
260 | case DESC_RATEVHT2SS_MCS7: | ||
261 | rate_idx = 7; | ||
262 | break; | ||
263 | case DESC_RATEVHT2SS_MCS8: | ||
264 | rate_idx = 8; | ||
265 | break; | ||
266 | case DESC_RATEVHT2SS_MCS9: | ||
267 | rate_idx = 9; | ||
268 | break; | ||
269 | default: | ||
270 | rate_idx = 0; | ||
271 | break; | ||
272 | } | ||
273 | } | ||
274 | return rate_idx; | ||
275 | } | ||
276 | |||
277 | static u16 odm_cfo(char value) | 51 | static u16 odm_cfo(char value) |
278 | { | 52 | { |
279 | int ret_val; | 53 | int ret_val; |
@@ -766,9 +540,9 @@ bool rtl8821ae_rx_query_desc(struct ieee80211_hw *hw, | |||
766 | * supported rates or MCS index if HT rates | 540 | * supported rates or MCS index if HT rates |
767 | * are use (RX_FLAG_HT) | 541 | * are use (RX_FLAG_HT) |
768 | */ | 542 | */ |
769 | rx_status->rate_idx = | 543 | rx_status->rate_idx = rtlwifi_rate_mapping(hw, status->is_ht, |
770 | _rtl8821ae_rate_mapping(hw, status->is_ht, | 544 | status->is_vht, |
771 | status->is_vht, status->rate); | 545 | status->rate); |
772 | 546 | ||
773 | rx_status->mactime = status->timestamp_low; | 547 | rx_status->mactime = status->timestamp_low; |
774 | if (phystatus) { | 548 | if (phystatus) { |
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h index 6866dcf24340..b53d9dd7a595 100644 --- a/drivers/net/wireless/rtlwifi/wifi.h +++ b/drivers/net/wireless/rtlwifi/wifi.h | |||
@@ -331,10 +331,10 @@ enum hardware_type { | |||
331 | (IS_HARDWARE_TYPE_8723E(rtlhal) || IS_HARDWARE_TYPE_8723U(rtlhal)) | 331 | (IS_HARDWARE_TYPE_8723E(rtlhal) || IS_HARDWARE_TYPE_8723U(rtlhal)) |
332 | 332 | ||
333 | #define RX_HAL_IS_CCK_RATE(rxmcs) \ | 333 | #define RX_HAL_IS_CCK_RATE(rxmcs) \ |
334 | ((rxmcs) == DESC92_RATE1M || \ | 334 | ((rxmcs) == DESC_RATE1M || \ |
335 | (rxmcs) == DESC92_RATE2M || \ | 335 | (rxmcs) == DESC_RATE2M || \ |
336 | (rxmcs) == DESC92_RATE5_5M || \ | 336 | (rxmcs) == DESC_RATE5_5M || \ |
337 | (rxmcs) == DESC92_RATE11M) | 337 | (rxmcs) == DESC_RATE11M) |
338 | 338 | ||
339 | enum scan_operation_backup_opt { | 339 | enum scan_operation_backup_opt { |
340 | SCAN_OPT_BACKUP = 0, | 340 | SCAN_OPT_BACKUP = 0, |
@@ -579,38 +579,59 @@ enum rtl_hal_state { | |||
579 | }; | 579 | }; |
580 | 580 | ||
581 | enum rtl_desc92_rate { | 581 | enum rtl_desc92_rate { |
582 | DESC92_RATE1M = 0x00, | 582 | DESC_RATE1M = 0x00, |
583 | DESC92_RATE2M = 0x01, | 583 | DESC_RATE2M = 0x01, |
584 | DESC92_RATE5_5M = 0x02, | 584 | DESC_RATE5_5M = 0x02, |
585 | DESC92_RATE11M = 0x03, | 585 | DESC_RATE11M = 0x03, |
586 | 586 | ||
587 | DESC92_RATE6M = 0x04, | 587 | DESC_RATE6M = 0x04, |
588 | DESC92_RATE9M = 0x05, | 588 | DESC_RATE9M = 0x05, |
589 | DESC92_RATE12M = 0x06, | 589 | DESC_RATE12M = 0x06, |
590 | DESC92_RATE18M = 0x07, | 590 | DESC_RATE18M = 0x07, |
591 | DESC92_RATE24M = 0x08, | 591 | DESC_RATE24M = 0x08, |
592 | DESC92_RATE36M = 0x09, | 592 | DESC_RATE36M = 0x09, |
593 | DESC92_RATE48M = 0x0a, | 593 | DESC_RATE48M = 0x0a, |
594 | DESC92_RATE54M = 0x0b, | 594 | DESC_RATE54M = 0x0b, |
595 | 595 | ||
596 | DESC92_RATEMCS0 = 0x0c, | 596 | DESC_RATEMCS0 = 0x0c, |
597 | DESC92_RATEMCS1 = 0x0d, | 597 | DESC_RATEMCS1 = 0x0d, |
598 | DESC92_RATEMCS2 = 0x0e, | 598 | DESC_RATEMCS2 = 0x0e, |
599 | DESC92_RATEMCS3 = 0x0f, | 599 | DESC_RATEMCS3 = 0x0f, |
600 | DESC92_RATEMCS4 = 0x10, | 600 | DESC_RATEMCS4 = 0x10, |
601 | DESC92_RATEMCS5 = 0x11, | 601 | DESC_RATEMCS5 = 0x11, |
602 | DESC92_RATEMCS6 = 0x12, | 602 | DESC_RATEMCS6 = 0x12, |
603 | DESC92_RATEMCS7 = 0x13, | 603 | DESC_RATEMCS7 = 0x13, |
604 | DESC92_RATEMCS8 = 0x14, | 604 | DESC_RATEMCS8 = 0x14, |
605 | DESC92_RATEMCS9 = 0x15, | 605 | DESC_RATEMCS9 = 0x15, |
606 | DESC92_RATEMCS10 = 0x16, | 606 | DESC_RATEMCS10 = 0x16, |
607 | DESC92_RATEMCS11 = 0x17, | 607 | DESC_RATEMCS11 = 0x17, |
608 | DESC92_RATEMCS12 = 0x18, | 608 | DESC_RATEMCS12 = 0x18, |
609 | DESC92_RATEMCS13 = 0x19, | 609 | DESC_RATEMCS13 = 0x19, |
610 | DESC92_RATEMCS14 = 0x1a, | 610 | DESC_RATEMCS14 = 0x1a, |
611 | DESC92_RATEMCS15 = 0x1b, | 611 | DESC_RATEMCS15 = 0x1b, |
612 | DESC92_RATEMCS15_SG = 0x1c, | 612 | DESC_RATEMCS15_SG = 0x1c, |
613 | DESC92_RATEMCS32 = 0x20, | 613 | DESC_RATEMCS32 = 0x20, |
614 | |||
615 | DESC_RATEVHT1SS_MCS0 = 0x2c, | ||
616 | DESC_RATEVHT1SS_MCS1 = 0x2d, | ||
617 | DESC_RATEVHT1SS_MCS2 = 0x2e, | ||
618 | DESC_RATEVHT1SS_MCS3 = 0x2f, | ||
619 | DESC_RATEVHT1SS_MCS4 = 0x30, | ||
620 | DESC_RATEVHT1SS_MCS5 = 0x31, | ||
621 | DESC_RATEVHT1SS_MCS6 = 0x32, | ||
622 | DESC_RATEVHT1SS_MCS7 = 0x33, | ||
623 | DESC_RATEVHT1SS_MCS8 = 0x34, | ||
624 | DESC_RATEVHT1SS_MCS9 = 0x35, | ||
625 | DESC_RATEVHT2SS_MCS0 = 0x36, | ||
626 | DESC_RATEVHT2SS_MCS1 = 0x37, | ||
627 | DESC_RATEVHT2SS_MCS2 = 0x38, | ||
628 | DESC_RATEVHT2SS_MCS3 = 0x39, | ||
629 | DESC_RATEVHT2SS_MCS4 = 0x3a, | ||
630 | DESC_RATEVHT2SS_MCS5 = 0x3b, | ||
631 | DESC_RATEVHT2SS_MCS6 = 0x3c, | ||
632 | DESC_RATEVHT2SS_MCS7 = 0x3d, | ||
633 | DESC_RATEVHT2SS_MCS8 = 0x3e, | ||
634 | DESC_RATEVHT2SS_MCS9 = 0x3f, | ||
614 | }; | 635 | }; |
615 | 636 | ||
616 | enum rtl_var_map { | 637 | enum rtl_var_map { |
@@ -2242,6 +2263,7 @@ struct rtl_hal_cfg { | |||
2242 | char *name; | 2263 | char *name; |
2243 | char *fw_name; | 2264 | char *fw_name; |
2244 | char *alt_fw_name; | 2265 | char *alt_fw_name; |
2266 | char *wowlan_fw_name; | ||
2245 | struct rtl_hal_ops *ops; | 2267 | struct rtl_hal_ops *ops; |
2246 | struct rtl_mod_params *mod_params; | 2268 | struct rtl_mod_params *mod_params; |
2247 | struct rtl_hal_usbint_cfg *usb_interface_cfg; | 2269 | struct rtl_hal_usbint_cfg *usb_interface_cfg; |
@@ -2390,8 +2412,6 @@ struct dig_t { | |||
2390 | u8 pre_ccastate; | 2412 | u8 pre_ccastate; |
2391 | u8 cur_ccasate; | 2413 | u8 cur_ccasate; |
2392 | u8 large_fa_hit; | 2414 | u8 large_fa_hit; |
2393 | u8 dig_dynamic_min; | ||
2394 | u8 dig_dynamic_min_1; | ||
2395 | u8 forbidden_igi; | 2415 | u8 forbidden_igi; |
2396 | u8 dig_state; | 2416 | u8 dig_state; |
2397 | u8 dig_highpwrstate; | 2417 | u8 dig_highpwrstate; |
@@ -2518,8 +2538,6 @@ struct proxim { | |||
2518 | 2538 | ||
2519 | struct rtl_priv { | 2539 | struct rtl_priv { |
2520 | struct ieee80211_hw *hw; | 2540 | struct ieee80211_hw *hw; |
2521 | /* Used to load a second firmware */ | ||
2522 | void (*rtl_fw_second_cb)(struct rtl_priv *rtlpriv); | ||
2523 | struct completion firmware_loading_complete; | 2541 | struct completion firmware_loading_complete; |
2524 | struct list_head list; | 2542 | struct list_head list; |
2525 | struct rtl_priv *buddy_priv; | 2543 | struct rtl_priv *buddy_priv; |