aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/debug.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/debug.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/debug.c186
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
1038static 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
1050static 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
1074static 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
1082static 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
1094static 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
1118static 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
1126static 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
1138static 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
1162static 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
1170static 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
1182static 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
1206static 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
1038static struct dentry *create_buf_file_handler(const char *filename, 1214static 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,