What's the meaning of wifi_pkt_rx_ctrl_t::ampdu_cnt?

doragasu
Posts: 16
Joined: Sat Apr 27, 2019 5:18 pm

What's the meaning of wifi_pkt_rx_ctrl_t::ampdu_cnt?

Postby doragasu » Thu Feb 02, 2023 9:53 am

For my application, I am trying to obtain information of AMPDU frames, I need to identify which frames start, end or are in the middle of an AMPDU transmission. I made a program that prints the aggregation and ampdu_cnt fields in the wifi_pkt_rx_ctrl_t structure (obtained for each frame captured in promiscuous mode). aggregation field makes sense, but I cannot guess what the ampdu_cnt field from captured data like this example in which I was continuously generating traffic with AMPDU frames:

Code: Select all

W (585093) sniffer: aggregation: 1, ampdu_cnt: 2
W (585103) sniffer: aggregation: 1, ampdu_cnt: 2
W (585103) sniffer: aggregation: 1, ampdu_cnt: 2
W (585113) sniffer: aggregation: 1, ampdu_cnt: 2
W (585113) sniffer: aggregation: 1, ampdu_cnt: 2
W (585123) sniffer: aggregation: 1, ampdu_cnt: 2
W (585123) sniffer: aggregation: 1, ampdu_cnt: 10
W (585133) sniffer: aggregation: 1, ampdu_cnt: 11
W (585133) sniffer: aggregation: 1, ampdu_cnt: 11
W (585143) sniffer: aggregation: 1, ampdu_cnt: 11
W (585143) sniffer: aggregation: 1, ampdu_cnt: 2
W (585153) sniffer: aggregation: 1, ampdu_cnt: 2
W (585153) sniffer: aggregation: 1, ampdu_cnt: 2
W (585163) sniffer: aggregation: 1, ampdu_cnt: 2
W (585163) sniffer: aggregation: 1, ampdu_cnt: 2
W (585173) sniffer: aggregation: 1, ampdu_cnt: 2
W (585183) sniffer: aggregation: 1, ampdu_cnt: 3
W (585183) sniffer: aggregation: 1, ampdu_cnt: 10
W (585193) sniffer: aggregation: 1, ampdu_cnt: 10
W (585193) sniffer: aggregation: 1, ampdu_cnt: 10
W (585203) sniffer: aggregation: 1, ampdu_cnt: 2
W (585203) sniffer: aggregation: 1, ampdu_cnt: 2
W (585213) sniffer: aggregation: 1, ampdu_cnt: 2
W (585213) sniffer: aggregation: 1, ampdu_cnt: 2
W (585223) sniffer: aggregation: 1, ampdu_cnt: 2
W (585223) sniffer: aggregation: 1, ampdu_cnt: 2
W (585233) sniffer: aggregation: 1, ampdu_cnt: 4
W (585233) sniffer: aggregation: 1, ampdu_cnt: 10
W (585243) sniffer: aggregation: 1, ampdu_cnt: 10
W (585243) sniffer: aggregation: 1, ampdu_cnt: 10
W (585253) sniffer: aggregation: 1, ampdu_cnt: 2
W (585263) sniffer: aggregation: 1, ampdu_cnt: 2
W (585263) sniffer: aggregation: 1, ampdu_cnt: 2
W (585273) sniffer: aggregation: 1, ampdu_cnt: 2
W (585273) sniffer: aggregation: 1, ampdu_cnt: 2
W (585283) sniffer: aggregation: 1, ampdu_cnt: 2
W (585283) sniffer: aggregation: 1, ampdu_cnt: 4
W (585293) sniffer: aggregation: 1, ampdu_cnt: 15
W (585293) sniffer: aggregation: 1, ampdu_cnt: 15
W (585303) sniffer: aggregation: 1, ampdu_cnt: 15
W (585303) sniffer: aggregation: 1, ampdu_cnt: 15
W (585313) sniffer: aggregation: 1, ampdu_cnt: 15
W (585313) sniffer: aggregation: 1, ampdu_cnt: 15
W (585323) sniffer: aggregation: 1, ampdu_cnt: 15
W (585323) sniffer: aggregation: 1, ampdu_cnt: 15
W (585333) sniffer: aggregation: 1, ampdu_cnt: 15
W (585343) sniffer: aggregation: 1, ampdu_cnt: 15
W (585343) sniffer: aggregation: 1, ampdu_cnt: 15
W (585353) sniffer: aggregation: 1, ampdu_cnt: 15
W (585353) sniffer: aggregation: 1, ampdu_cnt: 15
W (585363) sniffer: aggregation: 1, ampdu_cnt: 15
W (585363) sniffer: aggregation: 1, ampdu_cnt: 15
W (585373) sniffer: aggregation: 1, ampdu_cnt: 15
W (585373) sniffer: aggregation: 1, ampdu_cnt: 15
W (585383) sniffer: aggregation: 1, ampdu_cnt: 15
W (585383) sniffer: aggregation: 1, ampdu_cnt: 15
W (585393) sniffer: aggregation: 1, ampdu_cnt: 15
W (585393) sniffer: aggregation: 1, ampdu_cnt: 15
W (585403) sniffer: aggregation: 1, ampdu_cnt: 15
W (585413) sniffer: aggregation: 1, ampdu_cnt: 15
W (585413) sniffer: aggregation: 1, ampdu_cnt: 15
W (585423) sniffer: aggregation: 1, ampdu_cnt: 15
W (585423) sniffer: aggregation: 1, ampdu_cnt: 15
W (585433) sniffer: aggregation: 1, ampdu_cnt: 15
W (585433) sniffer: aggregation: 1, ampdu_cnt: 15
W (585443) sniffer: aggregation: 1, ampdu_cnt: 15
W (585443) sniffer: aggregation: 1, ampdu_cnt: 15
W (585453) sniffer: aggregation: 1, ampdu_cnt: 2
W (585453) sniffer: aggregation: 1, ampdu_cnt: 2
W (585463) sniffer: aggregation: 1, ampdu_cnt: 12
W (585463) sniffer: aggregation: 1, ampdu_cnt: 12
W (585473) sniffer: aggregation: 1, ampdu_cnt: 12
W (585483) sniffer: aggregation: 1, ampdu_cnt: 12
W (585483) sniffer: aggregation: 1, ampdu_cnt: 12
W (585493) sniffer: aggregation: 1, ampdu_cnt: 12
W (585493) sniffer: aggregation: 1, ampdu_cnt: 12
W (585503) sniffer: aggregation: 1, ampdu_cnt: 12
W (585503) sniffer: aggregation: 1, ampdu_cnt: 12
W (585513) sniffer: aggregation: 1, ampdu_cnt: 12
W (585513) sniffer: aggregation: 1, ampdu_cnt: 12
W (585523) sniffer: aggregation: 1, ampdu_cnt: 12
W (585523) sniffer: aggregation: 1, ampdu_cnt: 2
W (585533) sniffer: aggregation: 1, ampdu_cnt: 2
W (585533) sniffer: aggregation: 1, ampdu_cnt: 2
W (585543) sniffer: aggregation: 1, ampdu_cnt: 2
W (585543) sniffer: aggregation: 1, ampdu_cnt: 13
W (585553) sniffer: aggregation: 1, ampdu_cnt: 13
W (585563) sniffer: aggregation: 1, ampdu_cnt: 13
W (585563) sniffer: aggregation: 1, ampdu_cnt: 2
W (585573) sniffer: aggregation: 1, ampdu_cnt: 2
W (585573) sniffer: aggregation: 1, ampdu_cnt: 4
W (585583) sniffer: aggregation: 1, ampdu_cnt: 4
W (585583) sniffer: aggregation: 1, ampdu_cnt: 4
W (585593) sniffer: aggregation: 1, ampdu_cnt: 1
Two possibilities I thought of are:
* It could be part of the AMPDU aggregate ID, but that does not make sense since it should be increasing if that were the case.
* It could be the number of frames in the AMPDU transmission. That doesn't also seem to be the case.

Also field is 8 bit but the biggest value I have seen is 25.

So what does this field mean? Is there a way to identify frames starting/ending AMPDU chains?

Who is online

Users browsing this forum: kaxx1975, Majestic-12 [Bot] and 221 guests