[wlanstats] Add the per-node amsdu hardware decap'ed receive stats.

This is useful for tracking hardware provided AMSDU frames to see
when we're (a) seeing them, and (b) seeing the split between
intermediary and final frames.

Tested:

* QCA9880 (athp) - AP mode
This commit is contained in:
Adrian Chadd 2020-06-12 06:10:27 +00:00
parent a67acf111f
commit 26a6f76a31
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=362085
2 changed files with 10 additions and 2 deletions

View File

@ -63,7 +63,7 @@ static struct {
},
{
"amsdu",
"input,output,amsdu_tooshort,amsdu_split,amsdu_decap,amsdu_encap,rssi,rate"
"input,output,amsdu_tooshort,amsdu_split,amsdu_decap,amsdu_encap,rx_amsdu_more,rx_amsdu_more_end,rssi,rate"
},
};

View File

@ -276,7 +276,11 @@ static const struct fmt wlanstats[] = {
{ 8, "amsdu_decap", "decap", "A-MSDU frames received" },
#define S_AMSDU_ENCAP AFTER(S_AMSDU_DECAP)
{ 8, "amsdu_encap", "encap", "A-MSDU frames transmitted" },
#define S_AMPDU_REORDER AFTER(S_AMSDU_ENCAP)
#define S_AMSDU_RX_MORE AFTER(S_AMSDU_ENCAP)
{ 13, "rx_amsdu_more", "rx_amsdu_more", "A-MSDU HW intermediary decap'ed received" },
#define S_AMSDU_RX_MORE_END AFTER(S_AMSDU_RX_MORE)
{ 17, "rx_amsdu_more_end", "rx_amsdu_more_end", "A-MSDU HW end decap'ed received" },
#define S_AMPDU_REORDER AFTER(S_AMSDU_RX_MORE_END)
{ 8, "ampdu_reorder", "reorder","A-MPDU frames held in reorder q" },
#define S_AMPDU_FLUSH AFTER(S_AMPDU_REORDER)
{ 8, "ampdu_flush", "flush", "A-MPDU frames sent up from reorder q" },
@ -778,6 +782,8 @@ wlan_get_curstat(struct bsdstat *sf, int s, char b[], size_t bs)
case S_AMSDU_SPLIT: STAT(amsdu_split);
case S_AMSDU_DECAP: STAT(amsdu_decap);
case S_AMSDU_ENCAP: STAT(amsdu_encap);
case S_AMSDU_RX_MORE: NSTAT(rx_amsdu_more);
case S_AMSDU_RX_MORE_END: NSTAT(rx_amsdu_more_end);
case S_AMPDU_REORDER: STAT(ampdu_rx_reorder);
case S_AMPDU_FLUSH: STAT(ampdu_rx_flush);
case S_AMPDU_BARBAD: STAT(ampdu_bar_bad);
@ -941,6 +947,8 @@ wlan_get_totstat(struct bsdstat *sf, int s, char b[], size_t bs)
case S_AMSDU_SPLIT: STAT(amsdu_split);
case S_AMSDU_DECAP: STAT(amsdu_decap);
case S_AMSDU_ENCAP: STAT(amsdu_encap);
case S_AMSDU_RX_MORE: NSTAT(rx_amsdu_more);
case S_AMSDU_RX_MORE_END: NSTAT(rx_amsdu_more_end);
case S_AMPDU_REORDER: STAT(ampdu_rx_reorder);
case S_AMPDU_FLUSH: STAT(ampdu_rx_flush);
case S_AMPDU_BARBAD: STAT(ampdu_bar_bad);