diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/debug.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/debug.c | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c index 6c5d313ebcb7..012446d27bc0 100644 --- a/drivers/net/wireless/ath/ath9k/debug.c +++ b/drivers/net/wireless/ath/ath9k/debug.c | |||
@@ -1035,6 +1035,182 @@ static const struct file_operations fops_spec_scan_ctl = { | |||
1035 | .llseek = default_llseek, | 1035 | .llseek = default_llseek, |
1036 | }; | 1036 | }; |
1037 | 1037 | ||
1038 | static ssize_t read_file_spectral_short_repeat(struct file *file, | ||
1039 | char __user *user_buf, | ||
1040 | size_t count, loff_t *ppos) | ||
1041 | { | ||
1042 | struct ath_softc *sc = file->private_data; | ||
1043 | char buf[32]; | ||
1044 | unsigned int len; | ||
1045 | |||
1046 | len = sprintf(buf, "%d\n", sc->spec_config.short_repeat); | ||
1047 | return simple_read_from_buffer(user_buf, count, ppos, buf, len); | ||
1048 | } | ||
1049 | |||
1050 | static ssize_t write_file_spectral_short_repeat(struct file *file, | ||
1051 | const char __user *user_buf, | ||
1052 | size_t count, loff_t *ppos) | ||
1053 | { | ||
1054 | struct ath_softc *sc = file->private_data; | ||
1055 | unsigned long val; | ||
1056 | char buf[32]; | ||
1057 | ssize_t len; | ||
1058 | |||
1059 | len = min(count, sizeof(buf) - 1); | ||
1060 | if (copy_from_user(buf, user_buf, len)) | ||
1061 | return -EFAULT; | ||
1062 | |||
1063 | buf[len] = '\0'; | ||
1064 | if (kstrtoul(buf, 0, &val)) | ||
1065 | return -EINVAL; | ||
1066 | |||
1067 | if (val < 0 || val > 1) | ||
1068 | return -EINVAL; | ||
1069 | |||
1070 | sc->spec_config.short_repeat = val; | ||
1071 | return count; | ||
1072 | } | ||
1073 | |||
1074 | static const struct file_operations fops_spectral_short_repeat = { | ||
1075 | .read = read_file_spectral_short_repeat, | ||
1076 | .write = write_file_spectral_short_repeat, | ||
1077 | .open = simple_open, | ||
1078 | .owner = THIS_MODULE, | ||
1079 | .llseek = default_llseek, | ||
1080 | }; | ||
1081 | |||
1082 | static ssize_t read_file_spectral_count(struct file *file, | ||
1083 | char __user *user_buf, | ||
1084 | size_t count, loff_t *ppos) | ||
1085 | { | ||
1086 | struct ath_softc *sc = file->private_data; | ||
1087 | char buf[32]; | ||
1088 | unsigned int len; | ||
1089 | |||
1090 | len = sprintf(buf, "%d\n", sc->spec_config.count); | ||
1091 | return simple_read_from_buffer(user_buf, count, ppos, buf, len); | ||
1092 | } | ||
1093 | |||
1094 | static ssize_t write_file_spectral_count(struct file *file, | ||
1095 | const char __user *user_buf, | ||
1096 | size_t count, loff_t *ppos) | ||
1097 | { | ||
1098 | struct ath_softc *sc = file->private_data; | ||
1099 | unsigned long val; | ||
1100 | char buf[32]; | ||
1101 | ssize_t len; | ||
1102 | |||
1103 | len = min(count, sizeof(buf) - 1); | ||
1104 | if (copy_from_user(buf, user_buf, len)) | ||
1105 | return -EFAULT; | ||
1106 | |||
1107 | buf[len] = '\0'; | ||
1108 | if (kstrtoul(buf, 0, &val)) | ||
1109 | return -EINVAL; | ||
1110 | |||
1111 | if (val < 0 || val > 255) | ||
1112 | return -EINVAL; | ||
1113 | |||
1114 | sc->spec_config.count = val; | ||
1115 | return count; | ||
1116 | } | ||
1117 | |||
1118 | static const struct file_operations fops_spectral_count = { | ||
1119 | .read = read_file_spectral_count, | ||
1120 | .write = write_file_spectral_count, | ||
1121 | .open = simple_open, | ||
1122 | .owner = THIS_MODULE, | ||
1123 | .llseek = default_llseek, | ||
1124 | }; | ||
1125 | |||
1126 | static ssize_t read_file_spectral_period(struct file *file, | ||
1127 | char __user *user_buf, | ||
1128 | size_t count, loff_t *ppos) | ||
1129 | { | ||
1130 | struct ath_softc *sc = file->private_data; | ||
1131 | char buf[32]; | ||
1132 | unsigned int len; | ||
1133 | |||
1134 | len = sprintf(buf, "%d\n", sc->spec_config.period); | ||
1135 | return simple_read_from_buffer(user_buf, count, ppos, buf, len); | ||
1136 | } | ||
1137 | |||
1138 | static ssize_t write_file_spectral_period(struct file *file, | ||
1139 | const char __user *user_buf, | ||
1140 | size_t count, loff_t *ppos) | ||
1141 | { | ||
1142 | struct ath_softc *sc = file->private_data; | ||
1143 | unsigned long val; | ||
1144 | char buf[32]; | ||
1145 | ssize_t len; | ||
1146 | |||
1147 | len = min(count, sizeof(buf) - 1); | ||
1148 | if (copy_from_user(buf, user_buf, len)) | ||
1149 | return -EFAULT; | ||
1150 | |||
1151 | buf[len] = '\0'; | ||
1152 | if (kstrtoul(buf, 0, &val)) | ||
1153 | return -EINVAL; | ||
1154 | |||
1155 | if (val < 0 || val > 255) | ||
1156 | return -EINVAL; | ||
1157 | |||
1158 | sc->spec_config.period = val; | ||
1159 | return count; | ||
1160 | } | ||
1161 | |||
1162 | static const struct file_operations fops_spectral_period = { | ||
1163 | .read = read_file_spectral_period, | ||
1164 | .write = write_file_spectral_period, | ||
1165 | .open = simple_open, | ||
1166 | .owner = THIS_MODULE, | ||
1167 | .llseek = default_llseek, | ||
1168 | }; | ||
1169 | |||
1170 | static ssize_t read_file_spectral_fft_period(struct file *file, | ||
1171 | char __user *user_buf, | ||
1172 | size_t count, loff_t *ppos) | ||
1173 | { | ||
1174 | struct ath_softc *sc = file->private_data; | ||
1175 | char buf[32]; | ||
1176 | unsigned int len; | ||
1177 | |||
1178 | len = sprintf(buf, "%d\n", sc->spec_config.fft_period); | ||
1179 | return simple_read_from_buffer(user_buf, count, ppos, buf, len); | ||
1180 | } | ||
1181 | |||
1182 | static ssize_t write_file_spectral_fft_period(struct file *file, | ||
1183 | const char __user *user_buf, | ||
1184 | size_t count, loff_t *ppos) | ||
1185 | { | ||
1186 | struct ath_softc *sc = file->private_data; | ||
1187 | unsigned long val; | ||
1188 | char buf[32]; | ||
1189 | ssize_t len; | ||
1190 | |||
1191 | len = min(count, sizeof(buf) - 1); | ||
1192 | if (copy_from_user(buf, user_buf, len)) | ||
1193 | return -EFAULT; | ||
1194 | |||
1195 | buf[len] = '\0'; | ||
1196 | if (kstrtoul(buf, 0, &val)) | ||
1197 | return -EINVAL; | ||
1198 | |||
1199 | if (val < 0 || val > 15) | ||
1200 | return -EINVAL; | ||
1201 | |||
1202 | sc->spec_config.fft_period = val; | ||
1203 | return count; | ||
1204 | } | ||
1205 | |||
1206 | static const struct file_operations fops_spectral_fft_period = { | ||
1207 | .read = read_file_spectral_fft_period, | ||
1208 | .write = write_file_spectral_fft_period, | ||
1209 | .open = simple_open, | ||
1210 | .owner = THIS_MODULE, | ||
1211 | .llseek = default_llseek, | ||
1212 | }; | ||
1213 | |||
1038 | static struct dentry *create_buf_file_handler(const char *filename, | 1214 | static struct dentry *create_buf_file_handler(const char *filename, |
1039 | struct dentry *parent, | 1215 | struct dentry *parent, |
1040 | umode_t mode, | 1216 | umode_t mode, |
@@ -1893,6 +2069,16 @@ int ath9k_init_debug(struct ath_hw *ah) | |||
1893 | debugfs_create_file("spectral_scan_ctl", S_IRUSR | S_IWUSR, | 2069 | debugfs_create_file("spectral_scan_ctl", S_IRUSR | S_IWUSR, |
1894 | sc->debug.debugfs_phy, sc, | 2070 | sc->debug.debugfs_phy, sc, |
1895 | &fops_spec_scan_ctl); | 2071 | &fops_spec_scan_ctl); |
2072 | debugfs_create_file("spectral_short_repeat", S_IRUSR | S_IWUSR, | ||
2073 | sc->debug.debugfs_phy, sc, | ||
2074 | &fops_spectral_short_repeat); | ||
2075 | debugfs_create_file("spectral_count", S_IRUSR | S_IWUSR, | ||
2076 | sc->debug.debugfs_phy, sc, &fops_spectral_count); | ||
2077 | debugfs_create_file("spectral_period", S_IRUSR | S_IWUSR, | ||
2078 | sc->debug.debugfs_phy, sc, &fops_spectral_period); | ||
2079 | debugfs_create_file("spectral_fft_period", S_IRUSR | S_IWUSR, | ||
2080 | sc->debug.debugfs_phy, sc, | ||
2081 | &fops_spectral_fft_period); | ||
1896 | 2082 | ||
1897 | #ifdef CONFIG_ATH9K_MAC_DEBUG | 2083 | #ifdef CONFIG_ATH9K_MAC_DEBUG |
1898 | debugfs_create_file("samples", S_IRUSR, sc->debug.debugfs_phy, sc, | 2084 | debugfs_create_file("samples", S_IRUSR, sc->debug.debugfs_phy, sc, |