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

(-)a/src/wifi/model/mac-low.cc (-7 / +5 lines)
 Lines 732-746    Link Here 
732
   * QapScheduler has taken access to the channel from
732
   * QapScheduler has taken access to the channel from
733
   * one of the Edca of the QAP.
733
   * one of the Edca of the QAP.
734
   */
734
   */
735
  m_currentPacket = packet->Copy ();
735
  Ptr<Packet> newPacket = packet->Copy ();
736
  // remove the priority tag attached, if any
736
  // remove the priority tag attached, if any
737
  SocketPriorityTag priorityTag;
737
  SocketPriorityTag priorityTag;
738
  m_currentPacket->RemovePacketTag (priorityTag);
738
  newPacket->RemovePacketTag (priorityTag);
739
  m_currentHdr = *hdr;
739
  m_currentHdr = *hdr;
740
  CancelAllEvents ();
740
  CancelAllEvents ();
741
  m_listener = listener;
741
  m_listener = listener;
742
  m_txParams = params;
742
  m_txParams = params;
743
  m_currentTxVector = GetDataTxVector (m_currentPacket, &m_currentHdr);
744
743
745
  if (!m_currentHdr.IsQosData () && !m_currentHdr.IsBlockAck () && !m_currentHdr.IsBlockAckReq ())
744
  if (!m_currentHdr.IsQosData () && !m_currentHdr.IsBlockAck () && !m_currentHdr.IsBlockAckReq ())
746
    {
745
    {
 Lines 748-753    Link Here 
748
      //is sent between A-MPDU transmissions. It avoids to unexpectedly flush the aggregate
747
      //is sent between A-MPDU transmissions. It avoids to unexpectedly flush the aggregate
749
      //queue when previous RTS request has failed.
748
      //queue when previous RTS request has failed.
750
      m_ampdu = false;
749
      m_ampdu = false;
750
      m_currentPacket = newPacket;
751
    }
751
    }
752
  else if (m_aggregateQueue->GetSize () > 0)
752
  else if (m_aggregateQueue->GetSize () > 0)
753
    {
753
    {
 Lines 768-773    Link Here 
768
  else
768
  else
769
    {
769
    {
770
      //Perform MPDU aggregation if possible
770
      //Perform MPDU aggregation if possible
771
      m_currentPacket = newPacket;
771
      m_ampdu = IsAmpdu (m_currentPacket, m_currentHdr);
772
      m_ampdu = IsAmpdu (m_currentPacket, m_currentHdr);
772
      if (m_ampdu)
773
      if (m_ampdu)
773
        {
774
        {
 Lines 784-789    Link Here 
784
            }
785
            }
785
        }
786
        }
786
    }
787
    }
788
  m_currentTxVector = GetDataTxVector (m_currentPacket, &m_currentHdr);
787
    
789
    
788
  if (NeedRts ())
790
  if (NeedRts ())
789
    {
791
    {
 Lines 1628-1637    Link Here 
1628
  /// we should restart a new cts timeout now until the expected
1630
  /// we should restart a new cts timeout now until the expected
1629
  /// end of rx if there was a rx start before now.
1631
  /// end of rx if there was a rx start before now.
1630
  m_stationManager->ReportRtsFailed (m_currentHdr.GetAddr1 (), &m_currentHdr);
1632
  m_stationManager->ReportRtsFailed (m_currentHdr.GetAddr1 (), &m_currentHdr);
1631
  if (m_sentMpdus == 0)
1632
    {
1633
      m_currentPacket = 0;
1634
    }
1635
  MacLowTransmissionListener *listener = m_listener;
1633
  MacLowTransmissionListener *listener = m_listener;
1636
  m_listener = 0;
1634
  m_listener = 0;
1637
  m_sentMpdus = 0;
1635
  m_sentMpdus = 0;

Return to bug 2564