diff options
author | Eliad Peller <eliad@wizery.com> | 2012-03-14 10:15:03 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-03-15 13:43:12 -0400 |
commit | dc41e4d474bb18e60bc6678e58adc52ed227f105 (patch) | |
tree | 9a218ec7a9ccfca2bb92f655b270271e765b4433 /net/mac80211/debugfs_netdev.c | |
parent | ada577c12f7cd8851c999a9f19f62df06df7c39a (diff) |
mac80211: make uapsd_* keys per-vif
uapsd_queues and uapsd_max_sp_len are relevant only for managed
interfaces, and can be configured differently for each vif.
Move them from the local struct to sdata->u.mgd, and update
the debugfs functions accordingly.
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/debugfs_netdev.c')
-rw-r--r-- | net/mac80211/debugfs_netdev.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/net/mac80211/debugfs_netdev.c b/net/mac80211/debugfs_netdev.c index ef5cf2685657..a32eeda04aa3 100644 --- a/net/mac80211/debugfs_netdev.c +++ b/net/mac80211/debugfs_netdev.c | |||
@@ -337,6 +337,62 @@ static ssize_t ieee80211_if_parse_tkip_mic_test( | |||
337 | 337 | ||
338 | __IEEE80211_IF_FILE_W(tkip_mic_test); | 338 | __IEEE80211_IF_FILE_W(tkip_mic_test); |
339 | 339 | ||
340 | static ssize_t ieee80211_if_fmt_uapsd_queues( | ||
341 | const struct ieee80211_sub_if_data *sdata, char *buf, int buflen) | ||
342 | { | ||
343 | const struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; | ||
344 | |||
345 | return snprintf(buf, buflen, "0x%x\n", ifmgd->uapsd_queues); | ||
346 | } | ||
347 | |||
348 | static ssize_t ieee80211_if_parse_uapsd_queues( | ||
349 | struct ieee80211_sub_if_data *sdata, const char *buf, int buflen) | ||
350 | { | ||
351 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; | ||
352 | u8 val; | ||
353 | int ret; | ||
354 | |||
355 | ret = kstrtou8(buf, 0, &val); | ||
356 | if (ret) | ||
357 | return ret; | ||
358 | |||
359 | if (val & ~IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK) | ||
360 | return -ERANGE; | ||
361 | |||
362 | ifmgd->uapsd_queues = val; | ||
363 | |||
364 | return buflen; | ||
365 | } | ||
366 | __IEEE80211_IF_FILE_W(uapsd_queues); | ||
367 | |||
368 | static ssize_t ieee80211_if_fmt_uapsd_max_sp_len( | ||
369 | const struct ieee80211_sub_if_data *sdata, char *buf, int buflen) | ||
370 | { | ||
371 | const struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; | ||
372 | |||
373 | return snprintf(buf, buflen, "0x%x\n", ifmgd->uapsd_max_sp_len); | ||
374 | } | ||
375 | |||
376 | static ssize_t ieee80211_if_parse_uapsd_max_sp_len( | ||
377 | struct ieee80211_sub_if_data *sdata, const char *buf, int buflen) | ||
378 | { | ||
379 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; | ||
380 | unsigned long val; | ||
381 | int ret; | ||
382 | |||
383 | ret = kstrtoul(buf, 0, &val); | ||
384 | if (ret) | ||
385 | return -EINVAL; | ||
386 | |||
387 | if (val & ~IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK) | ||
388 | return -ERANGE; | ||
389 | |||
390 | ifmgd->uapsd_max_sp_len = val; | ||
391 | |||
392 | return buflen; | ||
393 | } | ||
394 | __IEEE80211_IF_FILE_W(uapsd_max_sp_len); | ||
395 | |||
340 | /* AP attributes */ | 396 | /* AP attributes */ |
341 | IEEE80211_IF_FILE(num_sta_authorized, u.ap.num_sta_authorized, ATOMIC); | 397 | IEEE80211_IF_FILE(num_sta_authorized, u.ap.num_sta_authorized, ATOMIC); |
342 | IEEE80211_IF_FILE(num_sta_ps, u.ap.num_sta_ps, ATOMIC); | 398 | IEEE80211_IF_FILE(num_sta_ps, u.ap.num_sta_ps, ATOMIC); |
@@ -469,6 +525,8 @@ static void add_sta_files(struct ieee80211_sub_if_data *sdata) | |||
469 | DEBUGFS_ADD(ave_beacon); | 525 | DEBUGFS_ADD(ave_beacon); |
470 | DEBUGFS_ADD_MODE(smps, 0600); | 526 | DEBUGFS_ADD_MODE(smps, 0600); |
471 | DEBUGFS_ADD_MODE(tkip_mic_test, 0200); | 527 | DEBUGFS_ADD_MODE(tkip_mic_test, 0200); |
528 | DEBUGFS_ADD_MODE(uapsd_queues, 0600); | ||
529 | DEBUGFS_ADD_MODE(uapsd_max_sp_len, 0600); | ||
472 | } | 530 | } |
473 | 531 | ||
474 | static void add_ap_files(struct ieee80211_sub_if_data *sdata) | 532 | static void add_ap_files(struct ieee80211_sub_if_data *sdata) |