Bug 2305

Summary: Each subframe in A-MPDUs shall be discarded when its maximum number of retries has been reached
Product: ns-3 Reporter: sebastien.deronne
Component: wifiAssignee: sebastien.deronne
Status: RESOLVED INVALID    
Severity: major CC: matis18, ns-bugs, tomh
Priority: P5    
Version: pre-release   
Hardware: All   
OS: All   
Attachments: patch to discard MPDU subframes that reached the maximum number of retries
ReportAmpduTxStatus called when a Block ACK is received or missed

Description sebastien.deronne 2016-02-21 05:44:50 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.
Comment 1 sebastien.deronne 2016-02-21 13:33:26 UTC
Created attachment 2288 [details]
patch to discard MPDU subframes that reached the maximum number of retries
Comment 2 sebastien.deronne 2016-02-23 18:16:38 UTC
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.
Comment 3 sebastien.deronne 2016-02-29 16:26:02 UTC
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.
Comment 4 Matías Richart 2016-03-01 05:59:17 UTC
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.
Comment 5 sebastien.deronne 2016-03-02 15:43:39 UTC
Rejecting this bug, I will open a new thread for ReportAmpduTxStatus