Commit Graph

15279 Commits

Author SHA1 Message Date
Stefano Avallone
9177900cde wifi: Add a new GetNextAmsdu method to MsduAggregator
which does not dequeue MSDUs.
2021-01-26 22:32:24 +01:00
Stefano Avallone
1cb7bb3526 wifi: Introduce the HT Frame Exchange Manager 2021-01-26 22:32:24 +01:00
Stefano Avallone
ef0ce76a62 wifi: Add Block Ack support to WifiDefaultAckManager 2021-01-26 22:32:24 +01:00
Stefano Avallone
255499b3c7 wifi: Add some new QosTxop methods 2021-01-26 22:32:24 +01: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
75e275872a wifi: Add a new GetNextMpdu method to MpduAggregator
which does not dequeue MSDUs.
2021-01-26 22:32:24 +01:00
Stefano Avallone
2fdb49503e wifi: Pass the MAC to MSDU and MPDU aggregator 2021-01-26 22:32:24 +01:00
Stefano Avallone
e519aa579d wifi: Add a BlockAckAgreement subclass for recipients 2021-01-26 22:32:24 +01:00
Stefano Avallone
3d1f8a69c9 wifi: Use BlockAckReqType for the type of Block Ack Requests 2021-01-26 22:32:24 +01:00
Stefano Avallone
05164c82d6 wifi: Support Compressed Block Acks with different bitmap sizes 2021-01-26 22:32:24 +01:00
Stefano Avallone
2abd505920 wifi: BlockAckAgreement selects the type of BAs/BARs 2021-01-26 22:32:24 +01:00
Stefano Avallone
2b8cb2b182 wifi: Rework block ack type 2021-01-26 22:32:24 +01:00
Stefano Avallone
cd34fa9290 wifi: Rework MacLowTransmissionParameters members 2021-01-26 22:32:24 +01:00
Tom Henderson
83abb82f0e wave: (fixes #341) Resolve reference cycles 2021-01-25 10:45:50 -08:00
Stefano Avallone
96c1306df9 wifi, wave: Rescan python bindings 2021-01-25 13:33:40 +01:00
Stefano Avallone
0e7366d744 wave: Replace WaveMacLow with WaveFrameExchangeManager 2021-01-24 16:02:37 +01:00
Stefano Avallone
75ee956e65 wifi: Remove WifiRemoteStationManager::UpdateFragmentationThreshold ()
FrameExchangeManager derives the size of a fragment from the previous fragment.
2021-01-24 16:02:37 +01:00
Stefano Avallone
4296ea596f wifi: Add a test for TXOP rules 2021-01-24 16:02:37 +01:00
Stefano Avallone
d9e78429cb wifi: Add support for PIFS recovery 2021-01-24 16:02:34 +01:00
Stefano Avallone
cf13cf328f wifi: Switch to using the QosFrameExchangeManager on QoS stations 2021-01-24 15:58:50 +01:00
Stefano Avallone
ba68ed7d78 wifi: Use HT STAs in block ack test suite
because Basic Block Ack support is incomplete.
2021-01-24 15:58:50 +01:00
Stefano Avallone
d393247888 wifi: Introduce the QoS Frame Exchange Manager 2021-01-24 15:58:12 +01:00
Stefano Avallone
edc9601742 wifi: Add new useful QosTxop methods 2021-01-22 19:30:01 +01:00
Stefano Avallone
1209d58fb7 wifi: Make ChannelAccessManager::GetAccessGrantStart() public
So that FEMs can check whether the channel has been idle in the
last IFS interval.
2021-01-22 19:23:51 +01:00
Stefano Avallone
d7cc8c3321 wifi: APs store buffer status reports carried by QoS frames 2021-01-22 19:23:51 +01:00
Stefano Avallone
b60fb53916 wifi: Add support for setting the Queue Size subfield in the QoS control field 2021-01-22 19:23:51 +01:00
Stefano Avallone
95711be71b wifi: Fix valgrind for wifi-devices-{dcf, edca} tests 2021-01-22 13:00:40 +01:00
Stefano Avallone
5ab9359b80 wifi: Fix valgrind for wifi-mac-queue test 2021-01-21 23:28:55 +01:00
Tommaso Pecorella
3f8a2afdc8 build: partially rev. a455a427 (-Wno-parentheses)
This fixes #339. "-Wno-parentheses" is still needed by GTK+3.22
2021-01-20 20:26:37 +00:00
Stefano Avallone
279b3d5986 wifi,wave,mesh: Rescan python bindings 2021-01-20 12:27:16 +01:00
Stefano Avallone
16c934115f wifi: WifiMacHelper installs protection and ack managers 2021-01-20 12:27:16 +01:00
Stefano Avallone
3b0629d877 wifi: Switch to using the FrameExchangeManager on non-QoS stations 2021-01-20 12:27:16 +01:00
Stefano Avallone
0e414b6c90 wifi: Enable QoS support in the backward compatibility examples
Otherwise, HT stations send QoS data frames that cannot be received
by non-QoS stations. Also, check that the receiver supports HT
before calling GetMaxAmpduSize() with WIFI_MOD_CLASS_HT.
2021-01-20 12:27:16 +01:00
Stefano Avallone
ffd108ae49 wifi: Initialize more MAC header fields 2021-01-20 12:27:16 +01:00
Stefano Avallone
31016d8147 wifi: Add the FrameExchangeManager base class 2021-01-20 12:27:16 +01:00
Stefano Avallone
1b03c3826a wifi: Add a method to MacTxMiddle to reset the current sequence number 2021-01-20 12:27:16 +01:00
Stefano Avallone
29cb1bfe0f wifi: Txop holds a channel access state
This is needed because (Qos)Txop will no longer hold a current MPDU
that can be used to determine whether a frame exchange is ongoing.
2021-01-20 12:27:16 +01:00
Stefano Avallone
172f0f8598 wifi: Make the methods to update CW public
Also, they automatically trace the updated CW value.
RegularWifiMac::{TxOk, TxFailed} are made public, too.
2021-01-20 12:27:16 +01:00
Stefano Avallone
336cbc6a9d wifi: WifiRemoteStationManager makes use of WifiMacQueueItems 2021-01-20 12:27:16 +01:00
Stefano Avallone
c43ac51919 wifi: Add public methods to RegularWifiMac to get (Qos)Txops
(Qos)Txops can be obtained via attributes anyway, so make it easier
to get them.
2021-01-20 12:27:16 +01:00
Stefano Avallone
18e3958347 wifi: Add a default WifiAckManager 2021-01-20 12:27:16 +01:00
Stefano Avallone
8c65f56872 wifi: Add the WifiAckManager base class 2021-01-20 12:27:16 +01:00
Stefano Avallone
4d883466f4 wifi: Add a default WifiProtectionManager 2021-01-20 12:27:16 +01:00
Stefano Avallone
cde282e62a wifi: Move methods from MacLow to WifiRemoteStationManager 2021-01-20 12:27:16 +01:00
Stefano Avallone
82a4dbd630 wifi: Add the WifiProtectionManager base class 2021-01-20 12:27:16 +01:00
Stefano Avallone
87b1e3195e wifi: Add a new WifiTxParameters class 2021-01-20 12:27:16 +01:00
Stefano Avallone
2de357aac2 wifi: Add WifiTxVector::GetModulationClass for convenience
In case the TxVector is MU, we don't need to specify any STAID
because the modulation class is unique. Getting the modulation
class through the WifiMode requires to specify the STAID instead.
2021-01-20 12:27:16 +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
Stefano Avallone
999b2ac02f network: Queue::DoEnqueue can return an iterator pointing to the inserted item 2021-01-20 12:27:16 +01:00
Stefano Avallone
2eff9a30a9 wifi: Add a class hierarchy for acknowledgment methods 2021-01-20 12:27:16 +01:00