Bugzilla – Bug 2305
Each subframe in A-MPDUs shall be discarded when its maximum number of retries has been reached
Last modified: 2016-03-02 15:43:39 UTC
For non A-MPDU transmissions, a data frame is discarded when its maximum number of retries has been reached. For A-MPDUs, the same rules applies to each subframe, i.e. a subframe shall be discarded when its maximum number of retries has been reached. This is never done in the current implementation. Furthermore, for each received or lost MPDUs, ReportDataOK or ReportDataFailed is called, respectively. This makes actually not sense, unless we specify its number of retries. Instead, I think we should handle this in the BlockAckManager itself, and only trigger once the WifiRemoteStation manager each time a block ack is received or lost, with information about the number of failed and successful MPDUs. Those changes are required to support HT Minstrel. I am busy now on a patch so that Matias can use it for his HT Minstrel implementation.
Created attachment 2288 [details] patch to discard MPDU subframes that reached the maximum number of retries
Created attachment 2294 [details] ReportAmpduTxStatus called when a Block ACK is received or missed Added a new API call when a Block ACK is received or missed, which indicates about the number of successfully and unsuccessfully transmitted MPDUs. This is required for HT Minstrel support.
Initial topic of this bug is still unclear. Even though Linux implementation chose for a maximum retry number of 30 times per MPDU, the standard only mandate that a MPDU is discarded once its lifetime has expired. The standard requirement is already in place in our current implementation, but the Linux choice is not. My thought is that we should reject this bug.
Regarding ReportAmpduTxStatus addition patch. In MacLow::BlockAckTimeout, the function ReportDataFail shouldn't be called because then ReportAmpduTxStatus will be called. There is an option to move ReportAmpduStatus to MacLow::BlockAckTimeout instead of in EdcaTxop.
Rejecting this bug, I will open a new thread for ReportAmpduTxStatus