Bug 2156 [wifi] - Duplicate packets when using two level aggregation
This commit is contained in:
@@ -39,6 +39,7 @@ Bugs fixed
|
||||
- Bug 2138 - SimpleNetDevice could send overlapped packets
|
||||
- Bug 2153 - Incorrect power limits in wifi power control algorithms
|
||||
- Bug 2154 - Incorrect power calculation in wifi power adaptation examples
|
||||
- Bug 2156 - Duplicate packets when using two level aggregation
|
||||
|
||||
Known issues
|
||||
------------
|
||||
|
||||
@@ -3046,13 +3046,16 @@ MacLow::PerformMsduAggregation (Ptr<const Packet> packet, WifiMacHeader *hdr, Ti
|
||||
std::map<AcIndex, MacLowAggregationCapableTransmissionListener*>::const_iterator listenerIt = m_edcaListeners.find (ac);
|
||||
NS_ASSERT (listenerIt != m_edcaListeners.end ());
|
||||
queue = listenerIt->second->GetQueue ();
|
||||
|
||||
Ptr<const Packet> peekedPacket = queue->DequeueByTidAndAddress (hdr, hdr->GetQosTid (),
|
||||
WifiMacHeader::ADDR1, hdr->GetAddr1 ());
|
||||
|
||||
listenerIt->second->GetMsduAggregator ()->Aggregate (packet, currentAmsduPacket,
|
||||
listenerIt->second->GetSrcAddressForAggregation (*hdr),
|
||||
listenerIt->second->GetDestAddressForAggregation (*hdr));
|
||||
|
||||
Ptr<const Packet> peekedPacket = queue->PeekByTidAndAddress (hdr, hdr->GetQosTid (),
|
||||
WifiMacHeader::ADDR1, hdr->GetAddr1 (), tstamp);
|
||||
peekedPacket = queue->PeekByTidAndAddress (hdr, hdr->GetQosTid (),
|
||||
WifiMacHeader::ADDR1, hdr->GetAddr1 (), tstamp);
|
||||
while (peekedPacket != 0)
|
||||
{
|
||||
tempPacket = currentAmsduPacket;
|
||||
@@ -3083,6 +3086,7 @@ MacLow::PerformMsduAggregation (Ptr<const Packet> packet, WifiMacHeader *hdr, Ti
|
||||
}
|
||||
else
|
||||
{
|
||||
queue->PushFront (packet, *hdr);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ TwoLevelAggregationTest::DoRun (void)
|
||||
bool result = (packet != 0);
|
||||
NS_TEST_EXPECT_MSG_EQ (result, true, "aggregation failed");
|
||||
NS_TEST_EXPECT_MSG_EQ (packet->GetSize (), 3030, "wrong packet size");
|
||||
NS_TEST_EXPECT_MSG_EQ (m_edca->GetEdcaQueue ()->GetSize (), 1, "removing packet from EDCA queue failed");
|
||||
NS_TEST_EXPECT_MSG_EQ (m_edca->GetEdcaQueue ()->GetSize (), 0, "aggregated packets not removed from the queue");
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user