QosFix
This commit is contained in:
@@ -399,11 +399,26 @@ MeshWifiInterfaceMac::SendManagementFrame (Ptr<Packet> packet, const WifiMacHead
|
||||
}
|
||||
m_stats.sentFrames++;
|
||||
m_stats.sentBytes += packet->GetSize ();
|
||||
if (m_queues.find (AC_VO) == m_queues.end ())
|
||||
if ((m_queues.find (AC_VO) == m_queues.end ()) || (m_queues.find (AC_VO) == m_queues.end ()))
|
||||
{
|
||||
NS_FATAL_ERROR ("Voice queue is not set up!");
|
||||
NS_FATAL_ERROR ("Voice or Background queue is not set up!");
|
||||
}
|
||||
/*
|
||||
* When we send a management frame - it is better to enqueue it to
|
||||
* priority queue. But when we send a broadcast management frame,
|
||||
* like PREQ, little MinCw value may cause collisions during
|
||||
* retransmissions (two neighbor stations may choose the same window
|
||||
* size, and two packets will be collided). So, broadcast management
|
||||
* frames go to BK queue.
|
||||
*/
|
||||
if (hdr.GetAddr1 () != Mac48Address::GetBroadcast ())
|
||||
{
|
||||
m_queues[AC_VO]->Queue (packet, header);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_queues[AC_BK]->Queue (packet, header);
|
||||
}
|
||||
m_queues[AC_VO]->Queue (packet, header);
|
||||
}
|
||||
SupportedRates
|
||||
MeshWifiInterfaceMac::GetSupportedRates () const
|
||||
|
||||
@@ -49,6 +49,15 @@ MeshInterfaceHelper::Default (void)
|
||||
MeshInterfaceHelper helper;
|
||||
helper.SetType ();
|
||||
helper.SetRemoteStationManager ("ns3::ArfWifiManager");
|
||||
/* For more details about this default parameters see IEE802.11 section 7.3.2.29 */
|
||||
helper.SetQueueParameters (AC_VO, "MinCw", UintegerValue (3), "MaxCw", UintegerValue (7), "Aifsn",
|
||||
UintegerValue (2));
|
||||
helper.SetQueueParameters (AC_VI, "MinCw", UintegerValue (7), "MaxCw", UintegerValue (15), "Aifsn",
|
||||
UintegerValue (2));
|
||||
helper.SetQueueParameters (AC_BE, "MinCw", UintegerValue (15), "MaxCw", UintegerValue (1023), "Aifsn",
|
||||
UintegerValue (3));
|
||||
helper.SetQueueParameters (AC_BK, "MinCw", UintegerValue (15), "MaxCw", UintegerValue (1023), "Aifsn",
|
||||
UintegerValue (7));
|
||||
return helper;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user