diff options
author | Larry Finger <Larry.Finger@lwfinger.net> | 2013-09-13 13:44:27 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-09-26 15:13:49 -0400 |
commit | 5952bd806c95f53b6412918c76d4f95d6ebc125e (patch) | |
tree | d98c285272610d4dd5a29aed22e2765c5cd2dab8 | |
parent | 8e70eb8092754fa92a249f0ed1bc40ab7639b850 (diff) |
rtlwifi: rtl8192cu: Convert driver to use rtl_process_phyinfo()
Remove routine _rtl92c_process_phyinfo() by using the equivalent routine
in driver rtlwifi.
This change also allows the removal of 5 additional routines from rtl8192cu.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 187 |
1 files changed, 2 insertions, 185 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c index da4f587199ee..393685390f3e 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "../usb.h" | 32 | #include "../usb.h" |
33 | #include "../ps.h" | 33 | #include "../ps.h" |
34 | #include "../cam.h" | 34 | #include "../cam.h" |
35 | #include "../stats.h" | ||
35 | #include "reg.h" | 36 | #include "reg.h" |
36 | #include "def.h" | 37 | #include "def.h" |
37 | #include "phy.h" | 38 | #include "phy.h" |
@@ -738,16 +739,6 @@ static u8 _rtl92c_evm_db_to_percentage(char value) | |||
738 | return ret_val; | 739 | return ret_val; |
739 | } | 740 | } |
740 | 741 | ||
741 | static long _rtl92c_translate_todbm(struct ieee80211_hw *hw, | ||
742 | u8 signal_strength_index) | ||
743 | { | ||
744 | long signal_power; | ||
745 | |||
746 | signal_power = (long)((signal_strength_index + 1) >> 1); | ||
747 | signal_power -= 95; | ||
748 | return signal_power; | ||
749 | } | ||
750 | |||
751 | static long _rtl92c_signal_scale_mapping(struct ieee80211_hw *hw, | 742 | static long _rtl92c_signal_scale_mapping(struct ieee80211_hw *hw, |
752 | long currsig) | 743 | long currsig) |
753 | { | 744 | { |
@@ -913,180 +904,6 @@ static void _rtl92c_query_rxphystatus(struct ieee80211_hw *hw, | |||
913 | (hw, total_rssi /= rf_rx_num)); | 904 | (hw, total_rssi /= rf_rx_num)); |
914 | } | 905 | } |
915 | 906 | ||
916 | static void _rtl92c_process_ui_rssi(struct ieee80211_hw *hw, | ||
917 | struct rtl_stats *pstats) | ||
918 | { | ||
919 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
920 | struct rtl_phy *rtlphy = &(rtlpriv->phy); | ||
921 | u8 rfpath; | ||
922 | u32 last_rssi, tmpval; | ||
923 | |||
924 | if (pstats->packet_toself || pstats->packet_beacon) { | ||
925 | rtlpriv->stats.rssi_calculate_cnt++; | ||
926 | if (rtlpriv->stats.ui_rssi.total_num++ >= | ||
927 | PHY_RSSI_SLID_WIN_MAX) { | ||
928 | rtlpriv->stats.ui_rssi.total_num = | ||
929 | PHY_RSSI_SLID_WIN_MAX; | ||
930 | last_rssi = | ||
931 | rtlpriv->stats.ui_rssi.elements[rtlpriv-> | ||
932 | stats.ui_rssi.index]; | ||
933 | rtlpriv->stats.ui_rssi.total_val -= last_rssi; | ||
934 | } | ||
935 | rtlpriv->stats.ui_rssi.total_val += pstats->signalstrength; | ||
936 | rtlpriv->stats.ui_rssi.elements[rtlpriv->stats.ui_rssi. | ||
937 | index++] = pstats->signalstrength; | ||
938 | if (rtlpriv->stats.ui_rssi.index >= PHY_RSSI_SLID_WIN_MAX) | ||
939 | rtlpriv->stats.ui_rssi.index = 0; | ||
940 | tmpval = rtlpriv->stats.ui_rssi.total_val / | ||
941 | rtlpriv->stats.ui_rssi.total_num; | ||
942 | rtlpriv->stats.signal_strength = | ||
943 | _rtl92c_translate_todbm(hw, (u8) tmpval); | ||
944 | pstats->rssi = rtlpriv->stats.signal_strength; | ||
945 | } | ||
946 | if (!pstats->is_cck && pstats->packet_toself) { | ||
947 | for (rfpath = RF90_PATH_A; rfpath < rtlphy->num_total_rfpath; | ||
948 | rfpath++) { | ||
949 | if (!rtl8192_phy_check_is_legal_rfpath(hw, rfpath)) | ||
950 | continue; | ||
951 | if (rtlpriv->stats.rx_rssi_percentage[rfpath] == 0) { | ||
952 | rtlpriv->stats.rx_rssi_percentage[rfpath] = | ||
953 | pstats->rx_mimo_signalstrength[rfpath]; | ||
954 | } | ||
955 | if (pstats->rx_mimo_signalstrength[rfpath] > | ||
956 | rtlpriv->stats.rx_rssi_percentage[rfpath]) { | ||
957 | rtlpriv->stats.rx_rssi_percentage[rfpath] = | ||
958 | ((rtlpriv->stats. | ||
959 | rx_rssi_percentage[rfpath] * | ||
960 | (RX_SMOOTH_FACTOR - 1)) + | ||
961 | (pstats->rx_mimo_signalstrength[rfpath])) / | ||
962 | (RX_SMOOTH_FACTOR); | ||
963 | |||
964 | rtlpriv->stats.rx_rssi_percentage[rfpath] = | ||
965 | rtlpriv->stats.rx_rssi_percentage[rfpath] + | ||
966 | 1; | ||
967 | } else { | ||
968 | rtlpriv->stats.rx_rssi_percentage[rfpath] = | ||
969 | ((rtlpriv->stats. | ||
970 | rx_rssi_percentage[rfpath] * | ||
971 | (RX_SMOOTH_FACTOR - 1)) + | ||
972 | (pstats->rx_mimo_signalstrength[rfpath])) / | ||
973 | (RX_SMOOTH_FACTOR); | ||
974 | } | ||
975 | } | ||
976 | } | ||
977 | } | ||
978 | |||
979 | static void _rtl92c_update_rxsignalstatistics(struct ieee80211_hw *hw, | ||
980 | struct rtl_stats *pstats) | ||
981 | { | ||
982 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
983 | int weighting = 0; | ||
984 | |||
985 | if (rtlpriv->stats.recv_signal_power == 0) | ||
986 | rtlpriv->stats.recv_signal_power = pstats->recvsignalpower; | ||
987 | if (pstats->recvsignalpower > rtlpriv->stats.recv_signal_power) | ||
988 | weighting = 5; | ||
989 | else if (pstats->recvsignalpower < rtlpriv->stats.recv_signal_power) | ||
990 | weighting = (-5); | ||
991 | rtlpriv->stats.recv_signal_power = | ||
992 | (rtlpriv->stats.recv_signal_power * 5 + | ||
993 | pstats->recvsignalpower + weighting) / 6; | ||
994 | } | ||
995 | |||
996 | static void _rtl92c_process_pwdb(struct ieee80211_hw *hw, | ||
997 | struct rtl_stats *pstats) | ||
998 | { | ||
999 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
1000 | struct rtl_mac *mac = rtl_mac(rtl_priv(hw)); | ||
1001 | long undec_sm_pwdb = 0; | ||
1002 | |||
1003 | if (mac->opmode == NL80211_IFTYPE_ADHOC) { | ||
1004 | return; | ||
1005 | } else { | ||
1006 | undec_sm_pwdb = rtlpriv->dm.undec_sm_pwdb; | ||
1007 | } | ||
1008 | if (pstats->packet_toself || pstats->packet_beacon) { | ||
1009 | if (undec_sm_pwdb < 0) | ||
1010 | undec_sm_pwdb = pstats->rx_pwdb_all; | ||
1011 | if (pstats->rx_pwdb_all > (u32) undec_sm_pwdb) { | ||
1012 | undec_sm_pwdb = (((undec_sm_pwdb) * | ||
1013 | (RX_SMOOTH_FACTOR - 1)) + | ||
1014 | (pstats->rx_pwdb_all)) / (RX_SMOOTH_FACTOR); | ||
1015 | undec_sm_pwdb += 1; | ||
1016 | } else { | ||
1017 | undec_sm_pwdb = (((undec_sm_pwdb) * | ||
1018 | (RX_SMOOTH_FACTOR - 1)) + | ||
1019 | (pstats->rx_pwdb_all)) / (RX_SMOOTH_FACTOR); | ||
1020 | } | ||
1021 | rtlpriv->dm.undec_sm_pwdb = undec_sm_pwdb; | ||
1022 | _rtl92c_update_rxsignalstatistics(hw, pstats); | ||
1023 | } | ||
1024 | } | ||
1025 | |||
1026 | static void _rtl92c_process_LINK_Q(struct ieee80211_hw *hw, | ||
1027 | struct rtl_stats *pstats) | ||
1028 | { | ||
1029 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
1030 | u32 last_evm = 0, n_stream, tmpval; | ||
1031 | |||
1032 | if (pstats->signalquality != 0) { | ||
1033 | if (pstats->packet_toself || pstats->packet_beacon) { | ||
1034 | if (rtlpriv->stats.LINK_Q.total_num++ >= | ||
1035 | PHY_LINKQUALITY_SLID_WIN_MAX) { | ||
1036 | rtlpriv->stats.LINK_Q.total_num = | ||
1037 | PHY_LINKQUALITY_SLID_WIN_MAX; | ||
1038 | last_evm = | ||
1039 | rtlpriv->stats.LINK_Q.elements | ||
1040 | [rtlpriv->stats.LINK_Q.index]; | ||
1041 | rtlpriv->stats.LINK_Q.total_val -= | ||
1042 | last_evm; | ||
1043 | } | ||
1044 | rtlpriv->stats.LINK_Q.total_val += | ||
1045 | pstats->signalquality; | ||
1046 | rtlpriv->stats.LINK_Q.elements | ||
1047 | [rtlpriv->stats.LINK_Q.index++] = | ||
1048 | pstats->signalquality; | ||
1049 | if (rtlpriv->stats.LINK_Q.index >= | ||
1050 | PHY_LINKQUALITY_SLID_WIN_MAX) | ||
1051 | rtlpriv->stats.LINK_Q.index = 0; | ||
1052 | tmpval = rtlpriv->stats.LINK_Q.total_val / | ||
1053 | rtlpriv->stats.LINK_Q.total_num; | ||
1054 | rtlpriv->stats.signal_quality = tmpval; | ||
1055 | rtlpriv->stats.last_sigstrength_inpercent = tmpval; | ||
1056 | for (n_stream = 0; n_stream < 2; | ||
1057 | n_stream++) { | ||
1058 | if (pstats->RX_SIGQ[n_stream] != -1) { | ||
1059 | if (!rtlpriv->stats.RX_EVM[n_stream]) { | ||
1060 | rtlpriv->stats.RX_EVM[n_stream] | ||
1061 | = pstats->RX_SIGQ[n_stream]; | ||
1062 | } | ||
1063 | rtlpriv->stats.RX_EVM[n_stream] = | ||
1064 | ((rtlpriv->stats.RX_EVM | ||
1065 | [n_stream] * | ||
1066 | (RX_SMOOTH_FACTOR - 1)) + | ||
1067 | (pstats->RX_SIGQ | ||
1068 | [n_stream] * 1)) / | ||
1069 | (RX_SMOOTH_FACTOR); | ||
1070 | } | ||
1071 | } | ||
1072 | } | ||
1073 | } else { | ||
1074 | ; | ||
1075 | } | ||
1076 | } | ||
1077 | |||
1078 | static void _rtl92c_process_phyinfo(struct ieee80211_hw *hw, | ||
1079 | u8 *buffer, | ||
1080 | struct rtl_stats *pcurrent_stats) | ||
1081 | { | ||
1082 | if (!pcurrent_stats->packet_matchbssid && | ||
1083 | !pcurrent_stats->packet_beacon) | ||
1084 | return; | ||
1085 | _rtl92c_process_ui_rssi(hw, pcurrent_stats); | ||
1086 | _rtl92c_process_pwdb(hw, pcurrent_stats); | ||
1087 | _rtl92c_process_LINK_Q(hw, pcurrent_stats); | ||
1088 | } | ||
1089 | |||
1090 | void rtl92c_translate_rx_signal_stuff(struct ieee80211_hw *hw, | 907 | void rtl92c_translate_rx_signal_stuff(struct ieee80211_hw *hw, |
1091 | struct sk_buff *skb, | 908 | struct sk_buff *skb, |
1092 | struct rtl_stats *pstats, | 909 | struct rtl_stats *pstats, |
@@ -1123,5 +940,5 @@ void rtl92c_translate_rx_signal_stuff(struct ieee80211_hw *hw, | |||
1123 | _rtl92c_query_rxphystatus(hw, pstats, pdesc, p_drvinfo, | 940 | _rtl92c_query_rxphystatus(hw, pstats, pdesc, p_drvinfo, |
1124 | packet_matchbssid, packet_toself, | 941 | packet_matchbssid, packet_toself, |
1125 | packet_beacon); | 942 | packet_beacon); |
1126 | _rtl92c_process_phyinfo(hw, tmp_buf, pstats); | 943 | rtl_process_phyinfo(hw, tmp_buf, pstats); |
1127 | } | 944 | } |