diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/base.c')
-rw-r--r-- | drivers/net/wireless/rtlwifi/base.c | 156 |
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 | */ |
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: |