aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rtlwifi/base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtlwifi/base.c')
-rw-r--r--drivers/net/wireless/rtlwifi/base.c156
1 files changed, 114 insertions, 42 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 */
885int rtlwifi_rate_mapping(struct ieee80211_hw *hw, 889int 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: