wifi: (fixes #2941): Correct Order bit of Frame control field in WifiMacHeader

This commit is contained in:
Getachew Redieteab
2018-07-11 11:33:19 +02:00
parent 94f1b159b4
commit 6afd76fc8d
37 changed files with 7 additions and 11 deletions

View File

@@ -45,6 +45,7 @@ Bugs fixed
- Bug 2925 - wifi: MinstrelHt provides strange results at low SNR with A-MPDU enabled
- Bug 2926 - wifi: SSRC and SLRC mechanism not fully aligned to the standard
- Bug 2931 - Queue Disc drops the CE marked packets
- Bug 2941 - wifi: Order bit of Frame control field of WifiMacHeader not correctly set for some frames
Known issues
------------

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -213,7 +213,7 @@ OcbWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
if (GetHtSupported () || GetVhtSupported ())
{
hdr.SetNoOrder ();
hdr.SetNoOrder (); // explicitly set to 0 for the time being since HT/VHT/HE control field is not yet implemented (set it to 1 when implemented)
}
hdr.SetAddr1 (to);
hdr.SetAddr2 (GetAddress ());

View File

@@ -139,7 +139,7 @@ AdhocWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
if (GetHtSupported () || GetVhtSupported () || GetHeSupported ())
{
hdr.SetNoOrder ();
hdr.SetNoOrder (); // explicitly set to 0 for the time being since HT/VHT/HE control field is not yet implemented (set it to 1 when implemented)
}
hdr.SetAddr1 (to);
hdr.SetAddr2 (m_low->GetAddress ());

View File

@@ -347,7 +347,7 @@ ApWifiMac::ForwardDown (Ptr<const Packet> packet, Mac48Address from,
if (GetQosSupported () || GetHtSupported () || GetVhtSupported () || GetHeSupported ())
{
hdr.SetNoOrder ();
hdr.SetNoOrder (); // explicitly set to 0 for the time being since HT/VHT/HE control field is not yet implemented (set it to 1 when implemented)
}
hdr.SetAddr1 (to);
hdr.SetAddr2 (GetAddress ());
@@ -715,7 +715,6 @@ ApWifiMac::SendProbeResp (Mac48Address to)
hdr.SetAddr3 (GetAddress ());
hdr.SetDsNotFrom ();
hdr.SetDsNotTo ();
hdr.SetNoOrder ();
Ptr<Packet> packet = Create<Packet> ();
MgtProbeResponseHeader probe;
probe.SetSsid (GetSsid ());
@@ -772,7 +771,6 @@ ApWifiMac::SendAssocResp (Mac48Address to, bool success, bool isReassoc)
hdr.SetAddr3 (GetAddress ());
hdr.SetDsNotFrom ();
hdr.SetDsNotTo ();
hdr.SetNoOrder ();
Ptr<Packet> packet = Create<Packet> ();
MgtAssocResponseHeader assoc;
StatusCode code;
@@ -851,7 +849,6 @@ ApWifiMac::SendOneBeacon (void)
hdr.SetAddr3 (GetAddress ());
hdr.SetDsNotFrom ();
hdr.SetDsNotTo ();
hdr.SetNoOrder ();
Ptr<Packet> packet = Create<Packet> ();
MgtBeaconHeader beacon;
beacon.SetSsid (GetSsid ());

View File

@@ -150,7 +150,6 @@ StaWifiMac::SendProbeRequest (void)
hdr.SetAddr3 (Mac48Address::GetBroadcast ());
hdr.SetDsNotFrom ();
hdr.SetDsNotTo ();
hdr.SetNoOrder ();
Ptr<Packet> packet = Create<Packet> ();
MgtProbeRequestHeader probe;
probe.SetSsid (GetSsid ());
@@ -188,7 +187,6 @@ StaWifiMac::SendAssociationRequest (bool isReassoc)
hdr.SetAddr3 (GetBssid ());
hdr.SetDsNotFrom ();
hdr.SetDsNotTo ();
hdr.SetNoOrder ();
Ptr<Packet> packet = Create<Packet> ();
if (!isReassoc)
{
@@ -467,7 +465,7 @@ StaWifiMac::Enqueue (Ptr<const Packet> packet, Mac48Address to)
}
if (GetQosSupported () || GetHtSupported () || GetVhtSupported () || GetHeSupported ())
{
hdr.SetNoOrder ();
hdr.SetNoOrder (); // explicitly set to 0 for the time being since HT/VHT/HE control field is not yet implemented (set it to 1 when implemented)
}
hdr.SetAddr1 (GetBssid ());

View File

@@ -53,7 +53,7 @@ enum
WifiMacHeader::WifiMacHeader ()
: m_ctrlMoreData (0),
m_ctrlWep (0),
m_ctrlOrder (1),
m_ctrlOrder (0),
m_amsduPresent (0)
{
}

View File

@@ -606,7 +606,7 @@ private:
uint8_t m_ctrlRetry; ///< control retry
uint8_t m_ctrlMoreData; ///< control more data
uint8_t m_ctrlWep; ///< control WEP
uint8_t m_ctrlOrder; ///< control order
uint8_t m_ctrlOrder; ///< control order (set to 1 for QoS Data and Management frames to signify that HT/VHT/HE control field is present, knowing that the latter are not implemented yet)
uint16_t m_duration; ///< duration
Mac48Address m_addr1; ///< address 1
Mac48Address m_addr2; ///< address 2