add missing condition in mac-low
authorSébastien Deronne <sebastien.deronne@gmail.com>
Mon, 24 Aug 2015 20:02:16 +0200
changeset 11614 50d7bddfc00b
parent 11613 00cc39674b45
child 11615 00752c4140a9
add missing condition in mac-low
src/wifi/model/mac-low.cc
--- a/src/wifi/model/mac-low.cc	Sun Aug 23 16:06:17 2015 -0700
+++ b/src/wifi/model/mac-low.cc	Mon Aug 24 20:02:16 2015 +0200
@@ -811,19 +811,25 @@
       (*n).first->PeekHeader (hdr);
       if (hdr.IsQosData ())
         {
-          NS_LOG_DEBUG ("last a-mpdu subframe detected/sendImmediateBlockAck from=" << hdr.GetAddr2 ());
-          m_sendAckEvent = Simulator::Schedule (GetSifs (),
-                                                &MacLow::SendBlockAckAfterAmpdu, this,
-                                                hdr.GetQosTid (),
-                                                hdr.GetAddr2 (),
-                                                hdr.GetDuration (),
-                                                m_currentTxVector);
+          uint8_t tid = hdr.GetQosTid ();
+          AgreementsI it = m_bAckAgreements.find (std::make_pair (hdr.GetAddr2 (), tid));
+          if (it != m_bAckAgreements.end ())
+            {
+              NS_LOG_DEBUG ("last a-mpdu subframe detected/sendImmediateBlockAck from=" << hdr.GetAddr2 ());
+              m_sendAckEvent = Simulator::Schedule (GetSifs (),
+                                                    &MacLow::SendBlockAckAfterAmpdu, this,
+                                                    hdr.GetQosTid (),
+                                                    hdr.GetAddr2 (),
+                                                    hdr.GetDuration (),
+                                                    m_currentTxVector);
+              m_receivedAtLeastOneMpdu = false;
+            }
         }
       else if (hdr.IsBlockAckReq ())
         {
           NS_LOG_DEBUG ("last a-mpdu subframe is BAR");
+          m_receivedAtLeastOneMpdu = false;
         }
-      m_receivedAtLeastOneMpdu = false;
     }
   else if (m_txParams.MustWaitFastAck ())
     {
@@ -2671,7 +2677,7 @@
             }
           else if (firsthdr.IsData () || firsthdr.IsQosData ())
             {
-              NS_LOG_DEBUG ("Deaggregate packet with sequence=" << firsthdr.GetSequenceNumber ());
+              NS_LOG_DEBUG ("Deaggregate packet from " << firsthdr.GetAddr2 () << " with sequence=" << firsthdr.GetSequenceNumber ());
               ReceiveOk ((*n).first, rxSnr, txVector, preamble, ampduSubframe);
               if (firsthdr.IsQosAck ())
                 {