diff options
Diffstat (limited to 'drivers/net/wireless/iwlegacy/iwl-debugfs.c')
-rw-r--r-- | drivers/net/wireless/iwlegacy/iwl-debugfs.c | 95 |
1 files changed, 19 insertions, 76 deletions
diff --git a/drivers/net/wireless/iwlegacy/iwl-debugfs.c b/drivers/net/wireless/iwlegacy/iwl-debugfs.c index 2d32438b4cb8..88ffc92ef0b0 100644 --- a/drivers/net/wireless/iwlegacy/iwl-debugfs.c +++ b/drivers/net/wireless/iwlegacy/iwl-debugfs.c | |||
@@ -1236,72 +1236,31 @@ static ssize_t iwl_legacy_dbgfs_missed_beacon_write(struct file *file, | |||
1236 | return count; | 1236 | return count; |
1237 | } | 1237 | } |
1238 | 1238 | ||
1239 | static ssize_t iwl_legacy_dbgfs_plcp_delta_read(struct file *file, | ||
1240 | char __user *user_buf, | ||
1241 | size_t count, loff_t *ppos) { | ||
1242 | |||
1243 | struct iwl_priv *priv = file->private_data; | ||
1244 | int pos = 0; | ||
1245 | char buf[12]; | ||
1246 | const size_t bufsz = sizeof(buf); | ||
1247 | |||
1248 | pos += scnprintf(buf + pos, bufsz - pos, "%u\n", | ||
1249 | priv->cfg->base_params->plcp_delta_threshold); | ||
1250 | |||
1251 | return simple_read_from_buffer(user_buf, count, ppos, buf, pos); | ||
1252 | } | ||
1253 | |||
1254 | static ssize_t iwl_legacy_dbgfs_plcp_delta_write(struct file *file, | ||
1255 | const char __user *user_buf, | ||
1256 | size_t count, loff_t *ppos) { | ||
1257 | |||
1258 | struct iwl_priv *priv = file->private_data; | ||
1259 | char buf[8]; | ||
1260 | int buf_size; | ||
1261 | int plcp; | ||
1262 | |||
1263 | memset(buf, 0, sizeof(buf)); | ||
1264 | buf_size = min(count, sizeof(buf) - 1); | ||
1265 | if (copy_from_user(buf, user_buf, buf_size)) | ||
1266 | return -EFAULT; | ||
1267 | if (sscanf(buf, "%d", &plcp) != 1) | ||
1268 | return -EINVAL; | ||
1269 | if ((plcp < IWL_MAX_PLCP_ERR_THRESHOLD_MIN) || | ||
1270 | (plcp > IWL_MAX_PLCP_ERR_THRESHOLD_MAX)) | ||
1271 | priv->cfg->base_params->plcp_delta_threshold = | ||
1272 | IWL_MAX_PLCP_ERR_THRESHOLD_DISABLE; | ||
1273 | else | ||
1274 | priv->cfg->base_params->plcp_delta_threshold = plcp; | ||
1275 | return count; | ||
1276 | } | ||
1277 | |||
1278 | static ssize_t iwl_legacy_dbgfs_force_reset_read(struct file *file, | 1239 | static ssize_t iwl_legacy_dbgfs_force_reset_read(struct file *file, |
1279 | char __user *user_buf, | 1240 | char __user *user_buf, |
1280 | size_t count, loff_t *ppos) { | 1241 | size_t count, loff_t *ppos) { |
1281 | 1242 | ||
1282 | struct iwl_priv *priv = file->private_data; | 1243 | struct iwl_priv *priv = file->private_data; |
1283 | int i, pos = 0; | 1244 | int pos = 0; |
1284 | char buf[300]; | 1245 | char buf[300]; |
1285 | const size_t bufsz = sizeof(buf); | 1246 | const size_t bufsz = sizeof(buf); |
1286 | struct iwl_force_reset *force_reset; | 1247 | struct iwl_force_reset *force_reset; |
1287 | 1248 | ||
1288 | for (i = 0; i < IWL_MAX_FORCE_RESET; i++) { | 1249 | force_reset = &priv->force_reset; |
1289 | force_reset = &priv->force_reset[i]; | 1250 | |
1290 | pos += scnprintf(buf + pos, bufsz - pos, | 1251 | pos += scnprintf(buf + pos, bufsz - pos, |
1291 | "Force reset method %d\n", i); | 1252 | "\tnumber of reset request: %d\n", |
1292 | pos += scnprintf(buf + pos, bufsz - pos, | 1253 | force_reset->reset_request_count); |
1293 | "\tnumber of reset request: %d\n", | 1254 | pos += scnprintf(buf + pos, bufsz - pos, |
1294 | force_reset->reset_request_count); | 1255 | "\tnumber of reset request success: %d\n", |
1295 | pos += scnprintf(buf + pos, bufsz - pos, | 1256 | force_reset->reset_success_count); |
1296 | "\tnumber of reset request success: %d\n", | 1257 | pos += scnprintf(buf + pos, bufsz - pos, |
1297 | force_reset->reset_success_count); | 1258 | "\tnumber of reset request reject: %d\n", |
1298 | pos += scnprintf(buf + pos, bufsz - pos, | 1259 | force_reset->reset_reject_count); |
1299 | "\tnumber of reset request reject: %d\n", | 1260 | pos += scnprintf(buf + pos, bufsz - pos, |
1300 | force_reset->reset_reject_count); | 1261 | "\treset duration: %lu\n", |
1301 | pos += scnprintf(buf + pos, bufsz - pos, | 1262 | force_reset->reset_duration); |
1302 | "\treset duration: %lu\n", | 1263 | |
1303 | force_reset->reset_duration); | ||
1304 | } | ||
1305 | return simple_read_from_buffer(user_buf, count, ppos, buf, pos); | 1264 | return simple_read_from_buffer(user_buf, count, ppos, buf, pos); |
1306 | } | 1265 | } |
1307 | 1266 | ||
@@ -1309,25 +1268,11 @@ static ssize_t iwl_legacy_dbgfs_force_reset_write(struct file *file, | |||
1309 | const char __user *user_buf, | 1268 | const char __user *user_buf, |
1310 | size_t count, loff_t *ppos) { | 1269 | size_t count, loff_t *ppos) { |
1311 | 1270 | ||
1271 | int ret; | ||
1312 | struct iwl_priv *priv = file->private_data; | 1272 | struct iwl_priv *priv = file->private_data; |
1313 | char buf[8]; | ||
1314 | int buf_size; | ||
1315 | int reset, ret; | ||
1316 | 1273 | ||
1317 | memset(buf, 0, sizeof(buf)); | 1274 | ret = iwl_legacy_force_reset(priv, true); |
1318 | buf_size = min(count, sizeof(buf) - 1); | 1275 | |
1319 | if (copy_from_user(buf, user_buf, buf_size)) | ||
1320 | return -EFAULT; | ||
1321 | if (sscanf(buf, "%d", &reset) != 1) | ||
1322 | return -EINVAL; | ||
1323 | switch (reset) { | ||
1324 | case IWL_RF_RESET: | ||
1325 | case IWL_FW_RESET: | ||
1326 | ret = iwl_legacy_force_reset(priv, reset, true); | ||
1327 | break; | ||
1328 | default: | ||
1329 | return -EINVAL; | ||
1330 | } | ||
1331 | return ret ? ret : count; | 1276 | return ret ? ret : count; |
1332 | } | 1277 | } |
1333 | 1278 | ||
@@ -1370,7 +1315,6 @@ DEBUGFS_WRITE_FILE_OPS(clear_traffic_statistics); | |||
1370 | DEBUGFS_READ_WRITE_FILE_OPS(ucode_tracing); | 1315 | DEBUGFS_READ_WRITE_FILE_OPS(ucode_tracing); |
1371 | DEBUGFS_READ_FILE_OPS(fh_reg); | 1316 | DEBUGFS_READ_FILE_OPS(fh_reg); |
1372 | DEBUGFS_READ_WRITE_FILE_OPS(missed_beacon); | 1317 | DEBUGFS_READ_WRITE_FILE_OPS(missed_beacon); |
1373 | DEBUGFS_READ_WRITE_FILE_OPS(plcp_delta); | ||
1374 | DEBUGFS_READ_WRITE_FILE_OPS(force_reset); | 1318 | DEBUGFS_READ_WRITE_FILE_OPS(force_reset); |
1375 | DEBUGFS_READ_FILE_OPS(rxon_flags); | 1319 | DEBUGFS_READ_FILE_OPS(rxon_flags); |
1376 | DEBUGFS_READ_FILE_OPS(rxon_filter_flags); | 1320 | DEBUGFS_READ_FILE_OPS(rxon_filter_flags); |
@@ -1420,7 +1364,6 @@ int iwl_legacy_dbgfs_register(struct iwl_priv *priv, const char *name) | |||
1420 | DEBUGFS_ADD_FILE(clear_traffic_statistics, dir_debug, S_IWUSR); | 1364 | DEBUGFS_ADD_FILE(clear_traffic_statistics, dir_debug, S_IWUSR); |
1421 | DEBUGFS_ADD_FILE(fh_reg, dir_debug, S_IRUSR); | 1365 | DEBUGFS_ADD_FILE(fh_reg, dir_debug, S_IRUSR); |
1422 | DEBUGFS_ADD_FILE(missed_beacon, dir_debug, S_IWUSR); | 1366 | DEBUGFS_ADD_FILE(missed_beacon, dir_debug, S_IWUSR); |
1423 | DEBUGFS_ADD_FILE(plcp_delta, dir_debug, S_IWUSR | S_IRUSR); | ||
1424 | DEBUGFS_ADD_FILE(force_reset, dir_debug, S_IWUSR | S_IRUSR); | 1367 | DEBUGFS_ADD_FILE(force_reset, dir_debug, S_IWUSR | S_IRUSR); |
1425 | DEBUGFS_ADD_FILE(ucode_rx_stats, dir_debug, S_IRUSR); | 1368 | DEBUGFS_ADD_FILE(ucode_rx_stats, dir_debug, S_IRUSR); |
1426 | DEBUGFS_ADD_FILE(ucode_tx_stats, dir_debug, S_IRUSR); | 1369 | DEBUGFS_ADD_FILE(ucode_tx_stats, dir_debug, S_IRUSR); |