> Hi all, > > Using a mt7916 in monitor mode, I see that the AMPDU reference number is incremented for each part of a single AMPDU. Instead it should be constant, and ideally, the last subframe field should be set on the last part of the AMPDU. Capturing the same traffic with an intel AX200 show each parts of the AMPDU with the same id as expected. > > This issue is still present using kernel from tag wireless-testing-2023-03-16. > > How can I be of any assist investigating and fixing this issue? > > Thanks, > Florian Replying to myself, it look like a firmware issue. I dived a bit in the code. Toying with the code snippet below (from mt7915/mac.c), show that the firmware actually does something incorrect. It never increment the ampu_ref. This would be okay because the code below increment the ampdu_ref when the timestamp are the same for all parts of the ampdu, unfortunately, the firmware put a different timestamp to each part of the AMPDU. Because of those two conditions, the ampdu_ref is simply incremented by the driver for every single packet even when parts of the same AMPDU. /* all subframes of an A-MPDU have the same timestamp */ if (phy->rx_ampdu_ts != status->timestamp) { dev_warn(dev->mt76.dev, "AMPDU Timestamp diff: ref:%d t1:%d t2:%d\n", phy->ampdu_ref, phy->rx_ampdu_ts, status->timestamp); if (!++phy->ampdu_ref) phy->ampdu_ref++; } I guess I could maybe do some hack around this myself finding some relation between timestamp of the ampdu, computing the end time of the previous part of the AMPDU, but this would be really hacky and complicated for a workaround to what look like a firmware issue. Is there any mediatek dev around with access to firmware sources to help with this? Thanks, Florian