It is possible for the DCF to be out of sync with the state of the
PHY and to try to transmit a Block Ack when the PHY is receiving. This
may occur in certain A-MPDU situations. The assert can be safely removed;
it is for further study whether the scheduled block ack event should be
cancelled to avoid the situation from arising.
This patch is reworked from a patch contributed by Ali Rostami
<a.rostami@rutgers.edu>.
This patch has been developed jointly at WINLAB, Rutgers University and
West Virginia University as part of the V2V safety communications
scalability activity of the Interoperability Issues of Vehicle-to-Vehicle
Based Safety Systems (V2V-Interoperability) Project headed by the Crash
Avoidance Metrics Partnership (CAMP) Vehicle Safety Communications 3 (VSC3)
Consortium, in partnership with the United States Department of
Transportation (USDOT).
The issue that this patch addresses is to generate a backoff when the
station requests access during an AIFS period (the medium has been idle for
less than AIFS). This especially helps to avoid ARP collisions or mesh
problems with hidden nodes (loss of broadcast frames). The documentation
in tracker issue 2369 provides more details.
This is also related to several bugs in the ns-3 tracker, including
bugs 555, 737, 912, 1465, 1605, and 2493; see also discussions there.
Some QoS frames may be addressed to the broadcast address (e.g. mesh).
If they experience an internal collision, ns-3 will assert upon the
check to WifiRemoteStationManager::NeedDataRetransmission. Instead,
treat the internal collision like a lost broadcast frame and just drop
it by resetting the DCF such as done with a failed retransmission.
This patch is reworked from a patch contributed by Ali Rostami
<a.rostami@rutgers.edu>.
This patch has been developed jointly at WINLAB, Rutgers University and
West Virginia University as part of the V2V safety communications
scalability activity of the Interoperability Issues of Vehicle-to-Vehicle
Based Safety Systems (V2V-Interoperability) Project headed by the Crash
Avoidance Metrics Partnership (CAMP) Vehicle Safety Communications 3 (VSC3)
Consortium, in partnership with the United States Department of
Transportation (USDOT).
The problem that may arise is that the unit test performs a number of
operations on Wifi objects before Simulator::Run() is entered. There
are no events generated by these tests, so Simulator::Run () will not do
anything for the test. What it may do, however, is call some
Object::DoInitialize() code that may assert if it finds the Wifi object
in an unexpected state.