From 75160cd286c5e9d8c843677d50e038a37392bbf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deronne?= Date: Tue, 16 Feb 2016 23:06:50 +0100 Subject: [PATCH] wifi: (fixes #2292) Uninitialized variables since commit 7c60a9f8f271 --- RELEASE_NOTES | 1 + src/wifi/model/edca-txop-n.cc | 1 + src/wifi/model/mac-low.cc | 10 ++++++---- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/RELEASE_NOTES b/RELEASE_NOTES index b3720bd28..6a94756dc 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -101,6 +101,7 @@ Bugs fixed - Bug 2286 - Support for SLL header (de)serialization. - Bug 2287 - FlowMonitor is confused by IP over IP. - Bug 2288 - Ipv4 broadcast and multicast packets are replicated on all the interfaces. +- Bug 2292 - Uninitialized variables since commit 7c60a9f8f271 - Bug 2293 - Red Queue Estimator spins when trying to compute queue average size under long idle times. Known issues diff --git a/src/wifi/model/edca-txop-n.cc b/src/wifi/model/edca-txop-n.cc index 09a33b3c2..609d3ba3e 100644 --- a/src/wifi/model/edca-txop-n.cc +++ b/src/wifi/model/edca-txop-n.cc @@ -1429,6 +1429,7 @@ EdcaTxopN::SendAddBaRequest (Mac48Address dest, uint8_t tid, uint16_t startSeq, uint16_t sequence = m_txMiddle->GetNextSequenceNumberfor (&m_currentHdr); m_currentHdr.SetSequenceNumber (sequence); + m_stationManager->UpdateFragmentationThreshold (); m_currentHdr.SetFragmentNumber (0); m_currentHdr.SetNoMoreFragments (); m_currentHdr.SetNoRetry (); diff --git a/src/wifi/model/mac-low.cc b/src/wifi/model/mac-low.cc index 326df31c2..9838c0f07 100644 --- a/src/wifi/model/mac-low.cc +++ b/src/wifi/model/mac-low.cc @@ -1616,6 +1616,10 @@ MacLow::ForwardDown (Ptr packet, const WifiMacHeader* hdr, bool vhtSingleMpdu = false; bool last = false; enum mpduType mpdutype = NORMAL_MPDU; + + uint8_t tid = GetTid (packet, *hdr); + AcIndex ac = QosUtilsMapTidToAc (tid); + std::map::const_iterator listenerIt = m_edcaListeners.find (ac); if (queueSize == 1) { @@ -1643,9 +1647,6 @@ MacLow::ForwardDown (Ptr packet, const WifiMacHeader* hdr, mpdutype = LAST_MPDU_IN_AGGREGATE; } - uint8_t tid = GetTid (packet, *hdr); - AcIndex ac = QosUtilsMapTidToAc (tid); - std::map::const_iterator listenerIt = m_edcaListeners.find (ac); listenerIt->second->GetMpduAggregator ()->AddHeaderAndPad (newPacket, last, vhtSingleMpdu); if (hdr->IsBlockAckReq ()) @@ -2877,6 +2878,7 @@ MacLow::AggregateToAmpdu (Ptr packet, const WifiMacHeader hdr) WifiMacHeader peekedHdr; newPacket = packet->Copy (); Ptr currentAggregatedPacket; + CtrlBAckRequestHeader blockAckReq; //missing hdr.IsAck() since we have no means of knowing the Tid of the Ack yet if (hdr.IsQosData () || hdr.IsBlockAck ()|| hdr.IsBlockAckReq ()) { @@ -2932,7 +2934,6 @@ MacLow::AggregateToAmpdu (Ptr packet, const WifiMacHeader hdr) { blockAckSize = packet->GetSize () + hdr.GetSize () + WIFI_MAC_FCS_LENGTH; qosPolicy = 3; //if the last subrame is block ack req then set ack policy of all frames to blockack - CtrlBAckRequestHeader blockAckReq; packet->PeekHeader (blockAckReq); startingSequenceNumber = blockAckReq.GetStartingSequence (); } @@ -3092,6 +3093,7 @@ MacLow::AggregateToAmpdu (Ptr packet, const WifiMacHeader hdr) WifiMacTrailer fcs; newPacket->AddTrailer (fcs); listenerIt->second->GetMpduAggregator ()->Aggregate (newPacket, currentAggregatedPacket); + currentAggregatedPacket->AddHeader (blockAckReq); } if (qosPolicy == 0) {