mac80211: improve RX aggregation data in debugfs
authorJohannes Berg <johannes.berg@intel.com>
Tue, 18 Oct 2016 20:12:09 +0000 (23:12 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 19 Oct 2016 10:12:11 +0000 (12:12 +0200)
When the driver sets the SUPPORTS_REORDERING_BUFFER hardware flag,
the debugfs data for RX aggregation sessions won't even indicate
that a session is open. Since the previous fix to store the dialog
token separately, we can indicate that it's open and add the token
so that there's at least some data (ssn is not available.)

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/debugfs_sta.c

index 14ec63a026693c7bcd0711605d41450b034d1a74..f6003b8c2c3335925d605d46d0072a8a96fed930 100644 (file)
@@ -199,13 +199,18 @@ static ssize_t sta_agg_status_read(struct file *file, char __user *userbuf,
                       "TID\t\tRX\tDTKN\tSSN\t\tTX\tDTKN\tpending\n");
 
        for (i = 0; i < IEEE80211_NUM_TIDS; i++) {
+               bool tid_rx_valid;
+
                tid_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[i]);
                tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[i]);
+               tid_rx_valid = test_bit(i, sta->ampdu_mlme.agg_session_valid);
 
                p += scnprintf(p, sizeof(buf) + buf - p, "%02d", i);
-               p += scnprintf(p, sizeof(buf) + buf - p, "\t\t%x", !!tid_rx);
+               p += scnprintf(p, sizeof(buf) + buf - p, "\t\t%x",
+                              tid_rx_valid);
                p += scnprintf(p, sizeof(buf) + buf - p, "\t%#.2x",
-                               tid_rx ? sta->ampdu_mlme.tid_rx_token[i] : 0);
+                              tid_rx_valid ?
+                                       sta->ampdu_mlme.tid_rx_token[i] : 0);
                p += scnprintf(p, sizeof(buf) + buf - p, "\t%#.3x",
                                tid_rx ? tid_rx->ssn : 0);