View | Details | Raw Unified | Return to bug 2307
Collapse All | Expand All

(-)a/src/wifi/model/mac-low.cc (-23 / +26 lines)
 Lines 2843-2873    Link Here 
2843
            }
2843
            }
2844
        }
2844
        }
2845
2845
2846
      if (normalAck && (ampdu.GetNoOfMpdus () == 1) && !vhtSingleMpdu)
2846
      if (ampdu.GetNoOfMpdus () == 1 && !vhtSingleMpdu)
2847
        {
2847
        {
2848
          //send block Ack
2848
          if (normalAck)
2849
          if (firsthdr.IsBlockAckReq ())
2850
            {
2849
            {
2851
              NS_FATAL_ERROR ("Sending a BlockAckReq with QosPolicy equal to Normal Ack");
2850
              //send block Ack
2852
            }
2851
              if (firsthdr.IsBlockAckReq ())
2853
          uint8_t tid = firsthdr.GetQosTid ();
2852
                {
2854
          AgreementsI it = m_bAckAgreements.find (std::make_pair (firsthdr.GetAddr2 (), tid));
2853
                  NS_FATAL_ERROR ("Sending a BlockAckReq with QosPolicy equal to Normal Ack");
2855
          if (it != m_bAckAgreements.end ())
2854
                }
2856
            {
2855
              uint8_t tid = firsthdr.GetQosTid ();
2857
              NS_ASSERT (m_sendAckEvent.IsExpired ());
2856
              AgreementsI it = m_bAckAgreements.find (std::make_pair (firsthdr.GetAddr2 (), tid));
2858
              /* See section 11.5.3 in IEEE 802.11 for mean of this timer */
2857
              if (it != m_bAckAgreements.end ())
2859
              ResetBlockAckInactivityTimerIfNeeded (it->second.first);
2858
                {
2860
              NS_LOG_DEBUG ("rx A-MPDU/sendImmediateBlockAck from=" << firsthdr.GetAddr2 ());
2859
                  NS_ASSERT (m_sendAckEvent.IsExpired ());
2861
              m_sendAckEvent = Simulator::Schedule (GetSifs (),
2860
                  /* See section 11.5.3 in IEEE 802.11 for mean of this timer */
2862
                                                    &MacLow::SendBlockAckAfterAmpdu, this,
2861
                  ResetBlockAckInactivityTimerIfNeeded (it->second.first);
2863
                                                    firsthdr.GetQosTid (),
2862
                  NS_LOG_DEBUG ("rx A-MPDU/sendImmediateBlockAck from=" << firsthdr.GetAddr2 ());
2864
                                                    firsthdr.GetAddr2 (),
2863
                  m_sendAckEvent = Simulator::Schedule (GetSifs (),
2865
                                                    firsthdr.GetDuration (),
2864
                                                        &MacLow::SendBlockAckAfterAmpdu, this,
2866
                                                    txVector);
2865
                                                        firsthdr.GetQosTid (),
2867
            }
2866
                                                        firsthdr.GetAddr2 (),
2868
          else
2867
                                                        firsthdr.GetDuration (),
2869
            {
2868
                                                        txVector);
2870
              NS_LOG_DEBUG ("There's not a valid agreement for this block ack request.");
2869
                }
2870
              else
2871
                {
2872
                  NS_LOG_DEBUG ("There's not a valid agreement for this block ack request.");
2873
                }
2871
            }
2874
            }
2872
          m_receivedAtLeastOneMpdu = false;
2875
          m_receivedAtLeastOneMpdu = false;
2873
        }
2876
        }

Return to bug 2307