This change greatly reduces number of StartRx calls, propagation delay
computations and SpectrumValue conversions for scenarios with large number
of transmitters and receivers operating in different non-overlapping channels,
i.e., Wi-Fi scenarios with multiple BSS operating in different channels.
If m_windowOffsetsMap.find (mobilityPair) returns m_windowOffsetsMap.end (),
it is stored into itOff. Later itOff is dereferenced to calculate
index. To avoid dereferencing m_windowOffsetsMap.end (), itOff should
be updated with a reference to newely inserted element.
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.