src/devices/wifi/msdu-standard-aggregator.cc
changeset 4458 f8b83f855f67
parent 4408 76a169b3db3d
child 5400 56737002c3c7
equal deleted inserted replaced
4457:1b45505f9a52 4458:f8b83f855f67
    55 {
    55 {
    56   NS_LOG_FUNCTION (this);
    56   NS_LOG_FUNCTION (this);
    57   Ptr<Packet> currentPacket;
    57   Ptr<Packet> currentPacket;
    58   AmsduSubframeHeader currentHdr;
    58   AmsduSubframeHeader currentHdr;
    59 
    59 
    60   uint32_t padding = CalculatePadding (packet);
    60   uint32_t padding = CalculatePadding (aggregatedPacket);
    61   uint32_t actualSize = aggregatedPacket->GetSize ();
    61   uint32_t actualSize = aggregatedPacket->GetSize ();
    62                           
    62                           
    63   if ((14 + packet->GetSize () + actualSize + padding) <= m_maxAmsduLength)
    63   if ((14 + packet->GetSize () + actualSize + padding) <= m_maxAmsduLength)
    64     {
    64     {
       
    65       if (padding)
       
    66         {
       
    67           aggregatedPacket->AddPaddingAtEnd (padding);
       
    68         }
    65       currentHdr.SetDestinationAddr (dest);
    69       currentHdr.SetDestinationAddr (dest);
    66       currentHdr.SetSourceAddr (src);
    70       currentHdr.SetSourceAddr (src);
    67       currentHdr.SetLength (packet->GetSize ());
    71       currentHdr.SetLength (packet->GetSize ());
    68       currentPacket = packet->Copy ();
    72       currentPacket = packet->Copy ();
    69       if (padding)
    73       
    70         {
       
    71           currentPacket->AddPaddingAtEnd (padding);
       
    72         }
       
    73       currentPacket->AddHeader (currentHdr);
    74       currentPacket->AddHeader (currentHdr);
    74       aggregatedPacket->AddAtEnd (currentPacket);
    75       aggregatedPacket->AddAtEnd (currentPacket);
    75       return true;
    76       return true;
    76     }
    77     }
    77   return false;
    78   return false;
    78 }
    79 }
    79 
    80 
    80 uint32_t
    81 uint32_t
    81 MsduStandardAggregator::CalculatePadding (Ptr<const Packet> packet)
    82 MsduStandardAggregator::CalculatePadding (Ptr<const Packet> packet)
    82 {
    83 {
    83   return (4 - ((packet->GetSize() + 14) %4 )) % 4;
    84   return (4 - (packet->GetSize() %4 )) % 4;
    84 }
    85 }
    85 
    86 
    86 }  //namespace ns3
    87 }  //namespace ns3