Commit Graph

51 Commits

Author SHA1 Message Date
Stefano Avallone
62542e5fb9 wifi: WifiMacQueueItem does not keep a pointer to the queue it is stored into
Instead, it keeps the AC index associated with the queue it is stored into
2021-09-26 17:06:27 +00:00
Stefano Avallone
39947f3cac wifi: Propagate AC index down to WifiMacQueue through Txop 2021-09-26 17:06:27 +00:00
Stefano Avallone
d04a17af6f wifi: Make WifiMacQueue::TtlExceeded public
so that other components can easily remove MPDUs with expired
lifetime and fire the Expired trace source.
2021-09-26 17:06:27 +00:00
Stefano Avallone
edcd9a6909 wifi: Cleanup WifiMacQueue
1. MPDUs with expired lifetime are already discarded:
   - when a QosTxop releases/requests the channel
   - when we check if there are pending BlockAckReq frames
   hence, it is useless (and sometimes troublesome) to check
   for MPDUs with expired lifetime at every packet dequeue
2. Dequeue{ByTid, ByAddress, ...} were not used and hence
   removed (one can use a Peek* method and then Dequeue())
3. Given that a WifiMacQueueItem stores an iterator, add a
   Dequeue method (the only one in addition to the default one)
   that receives a WifiMacQueueItem and dequeues it in constant time
2021-09-26 17:06:27 +00:00
Stefano Avallone
6bce3d9916 wifi: Replace aggregated MSDUs with the A-MSDU upon aggregation
So far, when A-MSDU aggregation is performed, MPDUs containing the
constituent MSDUs are kept in the queue until the MPDU containing
the A-MSDU (which is kept out of the queue) is transmitted.
Now, as soon as A-MSDU aggregation is performed, MPDUs containing
the constituent MSDUs are dequeued and the MPDU containing the
A-MSDU is enqueued in their place.
2021-09-26 17:06:27 +00:00
Gabriel Ferreira
9617bd2e4d wifi: reuse Simulator::Now in WifiMacQueue 2021-08-18 14:39:45 +00:00
Sébastien Deronne
c5a0f35503 wifi: Do not log each time WifiMacQueue::TtlExceeded is entered 2021-07-05 21:02:59 +02:00
Rediet
2cd288b24d wifi: fix other doxygen warnings in src/wifi/model
3 warnings remaining with templated WifiTxTimer::FeedTraceSource
2021-05-25 17:11:06 +02:00
Stefano Avallone
597b78aaee wifi: Add per-(address,tid) statistics to WifiMacQueue
that can be retrieved in constant time in the average case
2021-01-26 22:32:24 +01:00
Stefano Avallone
2bcf750347 wifi: A queued WifiMacQueueItem stores an iterator to itself
This allows us to dequeue packets only when they are actually
transmitted. For instance, a packet protected by RTS is dequeued
only if the CTS is received. This saves us from reinserting the
packets in the queue if CTS is missed (think of A-MPDUs, multi-TID
A-MPDUs, MU PPDUs, ...)
2021-01-20 12:27:16 +01:00
Alexander Krotov
fe561a82ca wifi: fix iterator invalidation in WifiMacQueue::Insert
If pos == begin(), it may be invalidated before inserting if DROP_OLDEST
policy is used and queue is full.

Add fix for this case and a test for it.
2021-01-18 18:53:27 +03:00
Stefano Avallone
5a2dc723b6 wifi: Fix build with clang 10 2020-06-08 16:50:41 -07:00
Stefano Avallone
5fc00356cf network: Move MaxSize attribute from QueueBase to derived classes 2020-03-02 16:34:44 +01:00
Stefano Avallone
99feb162fb wifi: Add more methods to WifiMacQueue
- Insert/Dequeue/Remove from specific positions in the queue
- Peek methods are const and return a ConstIterator
- Added a trace for expired MPDUs
2019-05-11 18:47:14 +02:00
Stefano Avallone
dc074293d5 network: Rename Queue methods to allow range based for loops 2019-05-11 18:47:14 +02:00
Stefano Avallone
94cc4b70dd wifi: Add methods to WifiMacQueue to peek and dequeue by TID 2019-05-11 18:47:14 +02:00
Stefano Avallone
b3e470c64f traffic-control: Make NetDeviceQueueInterface independent of Queue 2018-12-03 11:04:49 +01:00
Sébastien Deronne
c0ce243760 wifi: Extend support of up to 256 MPDUs in A-MPDUs for 802.11ax 2018-11-27 20:44:41 +01:00
Alexander Krotov
ecfb37187b wifi: Remove unused arguments from WifiMacQueue members 2018-07-26 12:06:36 +03:00
Alexander Krotov
7e1f2d3612 wifi: Remove unused ns3::WifiMacHeader::AddressType arguments
from WifiMacQueue::GetNPacketsByAddress and WifiMacQueue::GetNPacketsByTidAndAddress
2018-05-29 18:24:35 +03:00
Stefano Avallone
23c7939435 network: Remove deprecated Queue attributes 2018-05-24 23:35:46 +02:00
Sébastien Deronne
29ea252284 wifi: Add support for 802.11 PCF 2018-05-21 15:06:50 +02:00
Sébastien Deronne
5c09ddf105 wifi: Use forward declaration as often as possible (part 9) 2018-04-11 20:22:36 +02:00
Sébastien Deronne
48119eba2a wifi: Cleanup WifiMacQueue 2018-04-01 11:10:39 +02:00
Sébastien Deronne
a91bad4d6a wifi: Rework GetAddress to GetDestinationAddress in WifiMacQueueItem 2018-03-28 12:29:54 +02:00
Sébastien Deronne
fbd00cb4b5 wifi: Refactor WifiPhy and WifiPhyStateHelper to eliminate circular declaration of classes (based on Robert Ammon's patch) 2018-03-02 21:24:48 +01:00
Robert Ammon
ddd5d35908 wifi: Eliminate some Visual Studio compiler warnings 2018-02-18 17:44:16 +01:00
Sébastien Deronne
cd389fdf04 wifi: Cleanup enums 2018-02-17 00:10:33 +01:00
Stefano Avallone
524685f5df wifi: Define WifiMacQueue as a subclass of Queue<WifiMacQueueItem> 2017-07-04 18:19:06 +02:00
Sébastien Deronne
a6574f3ce5 wifi: Make more use of smart pointers instead of normal pointers 2017-06-26 22:47:13 +02:00
Stefano Avallone
543da6092a various: (fixes #2668) Make template classes use NS_LOG_* macros 2017-06-06 11:18:07 +02:00
Stefano Avallone
3cab87c732 wifi: Avoid calling WifiMacQueue::GetNPackets whenever possible 2017-06-05 23:24:03 +02:00
Stefano Avallone
6dffcbb2fa wifi: WifiMacQueue needs to override some QueueBase methods 2017-06-05 11:23:19 +02:00
Stefano Avallone
7644e59752 wifi: Prevent Peek() from returning a stale item 2017-05-07 20:07:56 +02:00
Stefano Avallone
d71e02e25b wifi: Fix another valgrind issue 2017-04-04 10:33:50 +02:00
Stefano Avallone
bdc94e40b1 wifi: Make WifiMacQueue a subclass of Queue 2017-03-08 18:02:03 +01:00
Sébastien Deronne
241e80ca6d wifi: Remove unnecessary includes 2016-11-27 20:59:04 +01:00
Sébastien Deronne
e71851491d wifi: (fixes #2551) Move preamble to TXVECTOR 2016-11-27 19:26:13 +01:00
Ali Rostami
3e34eb965a wifi: (fixes #2352) Add 'drop oldest' drop policy to WifiMacQueue (patch from Ali Rostami) 2016-03-31 10:08:49 -07:00
Alexander Krotov
1adf40e98f wifi: (fixes #2303) Cleanup wifi mac queue before returning its size 2016-02-23 00:28:42 +01:00
Sébastien Deronne
34ca3a8c0b cleanup wifi module 2015-06-21 00:23:45 +02:00
Junling Bu
823d1b1642 Bug 1736 [wifi] - default dot11EDCATableMSDULifetime 2015-06-05 23:49:09 +02:00
Tom Henderson
3eebe47911 SetGroupName for wifi module 2015-03-27 11:28:59 -07:00
Ghada Badawy
3eaf58a12b add MPDU aggregation (with contributions from Sebastien Deronne and Ioannis Selinis) 2015-01-28 10:11:32 -08:00
Peter D. Barnes, Jr.
cd3da7143d [doxygen] Revert r10410, r10411, r10412 2014-03-05 17:06:59 -08:00
Peter D. Barnes, Jr.
d75ff3559e doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented" 2013-11-14 16:58:28 -08:00
Vedran Miletić
f781366d2e Fix compilation with Clang 3.2 and newer versions, including Apple Clang 5.0
Clang 3.2 requires all class members to be used in the code; this patch either removes class members that are not used or adds NS_UNUSED/NS_UNUSED_GLOBAL around them. Thanks to Andrey Mazo and Tommaso Pecorella for review.
2013-10-20 12:46:27 +02:00
Vedran Miletić
71e380b55e Bug 1237 - code cleanups related to includes 2012-09-01 20:57:21 +02:00
Vedran Miletić
fe0667def8 standardize emacs c++ mode comments 2011-08-02 17:42:33 -04:00
Nicola Baldo
d2165cf81a run check-style.py on src/wifi 2011-05-07 21:49:46 +02:00