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

(-)a/src/wifi/model/wifi-mac-queue.cc (-1 / +16 lines)
 Lines 23-28    Link Here 
23
#include "ns3/simulator.h"
23
#include "ns3/simulator.h"
24
#include "ns3/packet.h"
24
#include "ns3/packet.h"
25
#include "ns3/uinteger.h"
25
#include "ns3/uinteger.h"
26
#include "ns3/enum.h"
26
#include "wifi-mac-queue.h"
27
#include "wifi-mac-queue.h"
27
#include "qos-blocked-destinations.h"
28
#include "qos-blocked-destinations.h"
28
29
 Lines 54-59    Link Here 
54
                   TimeValue (MilliSeconds (500.0)),
55
                   TimeValue (MilliSeconds (500.0)),
55
                   MakeTimeAccessor (&WifiMacQueue::m_maxDelay),
56
                   MakeTimeAccessor (&WifiMacQueue::m_maxDelay),
56
                   MakeTimeChecker ())
57
                   MakeTimeChecker ())
58
    .AddAttribute ("DropPolicy", "Upon enqueue with full queue, drop oldest (DropOldest) or newest (DropNewest) packet",
59
                   EnumValue (DROP_NEWEST),
60
                   MakeEnumAccessor (&WifiMacQueue::m_dropPolicy),
61
                   MakeEnumChecker (WifiMacQueue::DROP_OLDEST, "DropOldest",
62
                                    WifiMacQueue::DROP_NEWEST, "DropNewest"))
57
  ;
63
  ;
58
  return tid;
64
  return tid;
59
}
65
}
 Lines 98-104    Link Here 
98
  Cleanup ();
104
  Cleanup ();
99
  if (m_size == m_maxSize)
105
  if (m_size == m_maxSize)
100
    {
106
    {
101
      return;
107
      if (m_dropPolicy == DROP_NEWEST)
108
        {
109
          return;
110
        }
111
      else if (m_dropPolicy == DROP_OLDEST)
112
        {
113
          PacketQueue::iterator it = m_queue.begin();
114
          m_queue.erase(it);
115
          m_size--;
116
        }
102
    }
117
    }
103
  Time now = Simulator::Now ();
118
  Time now = Simulator::Now ();
104
  m_queue.push_back (Item (packet, hdr, now));
119
  m_queue.push_back (Item (packet, hdr, now));
(-)a/src/wifi/model/wifi-mac-queue.h (+7 lines)
 Lines 55-60    Link Here 
55
  WifiMacQueue ();
55
  WifiMacQueue ();
56
  ~WifiMacQueue ();
56
  ~WifiMacQueue ();
57
57
58
  enum DropPolicy
59
  {
60
    DROP_NEWEST,
61
    DROP_OLDEST
62
  };
63
58
  /**
64
  /**
59
   * Set the maximum queue size.
65
   * Set the maximum queue size.
60
   *
66
   *
 Lines 271-276    Link Here 
271
  uint32_t m_size;     //!< Current queue size
277
  uint32_t m_size;     //!< Current queue size
272
  uint32_t m_maxSize;  //!< Queue capacity
278
  uint32_t m_maxSize;  //!< Queue capacity
273
  Time m_maxDelay;     //!< Time to live for packets in the queue
279
  Time m_maxDelay;     //!< Time to live for packets in the queue
280
  enum DropPolicy m_dropPolicy; //!< Drop behavior of queue
274
};
281
};
275
282
276
} //namespace ns3
283
} //namespace ns3

Return to bug 2352