--- a/001-netdevice-queue-state.patch Fri Jun 10 23:05:57 2011 +0200
+++ b/001-netdevice-queue-state.patch Sun Jun 12 00:47:21 2011 +0200
@@ -50,7 +50,7 @@
diff --git a/src/csma/model/csma-net-device.cc b/src/csma/model/csma-net-device.cc
--- a/src/csma/model/csma-net-device.cc
+++ b/src/csma/model/csma-net-device.cc
-@@ -1014,4 +1014,18 @@
+@@ -1014,4 +1014,23 @@
return true;
}
@@ -64,6 +64,11 @@
+{
+ return 0;
+}
++bool
++CsmaNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
+void
+CsmaNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
+{}
@@ -72,17 +77,59 @@
diff --git a/src/csma/model/csma-net-device.h b/src/csma/model/csma-net-device.h
--- a/src/csma/model/csma-net-device.h
+++ b/src/csma/model/csma-net-device.h
-@@ -322,6 +322,10 @@
+@@ -322,6 +322,11 @@
virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
virtual bool SupportsSendFrom (void) const;
+ virtual uint32_t GetQueueState (uint32_t index);
+ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
+ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
+
protected:
/**
* Perform any object release functionality required to break reference
+diff --git a/src/emu/model/emu-net-device.cc b/src/emu/model/emu-net-device.cc
+--- a/src/emu/model/emu-net-device.cc
++++ b/src/emu/model/emu-net-device.cc
+@@ -1132,4 +1132,22 @@
+ m_rxCallback = cb;
+ }
+
++uint32_t
++EmuNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++EmuNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++EmuNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++EmuNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
+ } // namespace ns3
+diff --git a/src/emu/model/emu-net-device.h b/src/emu/model/emu-net-device.h
+--- a/src/emu/model/emu-net-device.h
++++ b/src/emu/model/emu-net-device.h
+@@ -201,6 +201,11 @@
+
+ virtual bool SupportsSendFrom (void) const;
+
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
++
+ /**
+ * Set the encapsulation mode of this device.
+ *
diff --git a/src/internet/model/loopback-net-device.cc b/src/internet/model/loopback-net-device.cc
--- a/src/internet/model/loopback-net-device.cc
+++ b/src/internet/model/loopback-net-device.cc
@@ -125,6 +172,89 @@
protected:
virtual void DoDispose (void);
private:
+diff --git a/src/lte/model/lte-net-device.cc b/src/lte/model/lte-net-device.cc
+--- a/src/lte/model/lte-net-device.cc
++++ b/src/lte/model/lte-net-device.cc
+@@ -401,6 +401,23 @@
+ return m_packetToSend;
+ }
+
+-
++uint32_t
++LteNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++LteNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++LteNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++LteNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
+
+ }
+diff --git a/src/lte/model/lte-net-device.h b/src/lte/model/lte-net-device.h
+--- a/src/lte/model/lte-net-device.h
++++ b/src/lte/model/lte-net-device.h
+@@ -125,6 +125,11 @@
+ virtual bool SendFrom (Ptr<Packet> packet, const Address& source, const Address& dest, uint16_t protocolNumber);
+ virtual bool SupportsSendFrom (void) const;
+
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
++
+ /**
+ * \brief Receive the packet from the phy layer
+ * \param p the received packet
+diff --git a/src/mesh/model/mesh-point-device.cc b/src/mesh/model/mesh-point-device.cc
+--- a/src/mesh/model/mesh-point-device.cc
++++ b/src/mesh/model/mesh-point-device.cc
+@@ -469,4 +469,22 @@
+ m_fwdStats = Statistics ();
+ }
+
++uint32_t
++MeshPointDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++MeshPointDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++MeshPointDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++MeshPointDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
+ } // namespace ns3
+diff --git a/src/mesh/model/mesh-point-device.h b/src/mesh/model/mesh-point-device.h
+--- a/src/mesh/model/mesh-point-device.h
++++ b/src/mesh/model/mesh-point-device.h
+@@ -112,6 +112,10 @@
+ virtual void SetReceiveCallback (NetDevice::ReceiveCallback cb);
+ virtual void SetPromiscReceiveCallback (NetDevice::PromiscReceiveCallback cb);
+ virtual bool SupportsSendFrom () const;
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
+ virtual Address GetMulticast (Ipv6Address addr) const;
+ virtual void DoDispose ();
+ //\}
diff --git a/src/network/model/net-device.h b/src/network/model/net-device.h
--- a/src/network/model/net-device.h
+++ b/src/network/model/net-device.h
@@ -199,6 +329,274 @@
protected:
virtual void DoDispose (void);
private:
+diff --git a/src/openflow/model/openflow-switch-net-device.h b/src/openflow/model/openflow-switch-net-device.h
+--- a/src/openflow/model/openflow-switch-net-device.h
++++ b/src/openflow/model/openflow-switch-net-device.h
+@@ -241,6 +241,10 @@
+ virtual void SetPromiscReceiveCallback (NetDevice::PromiscReceiveCallback cb);
+ virtual bool SupportsSendFrom () const;
+ virtual Address GetMulticast (Ipv6Address addr) const;
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
+ //\}
+
+ protected:
+diff --git a/src/point-to-point/model/point-to-point-net-device.cc b/src/point-to-point/model/point-to-point-net-device.cc
+--- a/src/point-to-point/model/point-to-point-net-device.cc
++++ b/src/point-to-point/model/point-to-point-net-device.cc
+@@ -624,5 +624,22 @@
+ return 0;
+ }
+
+-
++uint32_t
++PointToPointNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++PointToPointNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++PointToPointNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++PointToPointNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
+ } // namespace ns3
+diff --git a/src/point-to-point/model/point-to-point-net-device.h b/src/point-to-point/model/point-to-point-net-device.h
+--- a/src/point-to-point/model/point-to-point-net-device.h
++++ b/src/point-to-point/model/point-to-point-net-device.h
+@@ -185,6 +185,11 @@
+ virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
+ virtual bool SupportsSendFrom (void) const;
+
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
++
+ protected:
+ void DoMpiReceive (Ptr<Packet> p);
+
+diff --git a/src/spectrum/model/aloha-noack-net-device.cc b/src/spectrum/model/aloha-noack-net-device.cc
+--- a/src/spectrum/model/aloha-noack-net-device.cc
++++ b/src/spectrum/model/aloha-noack-net-device.cc
+@@ -490,6 +490,23 @@
+ }
+ }
+
+-
++uint32_t
++AlohaNoackNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++AlohaNoackNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++AlohaNoackNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++AlohaNoackNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
+
+ } // namespace ns3
+diff --git a/src/spectrum/model/aloha-noack-net-device.h b/src/spectrum/model/aloha-noack-net-device.h
+--- a/src/spectrum/model/aloha-noack-net-device.h
++++ b/src/spectrum/model/aloha-noack-net-device.h
+@@ -174,8 +174,10 @@
+ virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
+ virtual bool SupportsSendFrom (void) const;
+
+-
+-
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
+
+
+ private:
+diff --git a/src/spectrum/model/non-communicating-net-device.cc b/src/spectrum/model/non-communicating-net-device.cc
+--- a/src/spectrum/model/non-communicating-net-device.cc
++++ b/src/spectrum/model/non-communicating-net-device.cc
+@@ -265,5 +265,23 @@
+ return false;
+ }
+
++uint32_t
++NonCommunicatingNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++NonCommunicatingNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++NonCommunicatingNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++NonCommunicatingNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
+
+ } // namespace ns3
+diff --git a/src/spectrum/model/non-communicating-net-device.h b/src/spectrum/model/non-communicating-net-device.h
+--- a/src/spectrum/model/non-communicating-net-device.h
++++ b/src/spectrum/model/non-communicating-net-device.h
+@@ -116,8 +116,10 @@
+ virtual void SetPromiscReceiveCallback (PromiscReceiveCallback cb);
+ virtual bool SupportsSendFrom (void) const;
+
+-
+-
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
+
+
+ private:
+diff --git a/src/tap-bridge/model/tap-bridge.cc b/src/tap-bridge/model/tap-bridge.cc
+--- a/src/tap-bridge/model/tap-bridge.cc
++++ b/src/tap-bridge/model/tap-bridge.cc
+@@ -1186,4 +1186,23 @@
+ return Mac48Address::GetMulticast (addr);
+ }
+
++uint32_t
++TapBridge::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++TapBridge::GetNQueues (void)
++{
++ return 0;
++}
++bool
++TapBridge::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++TapBridge::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
++
+ } // namespace ns3
+diff --git a/src/tap-bridge/model/tap-bridge.h b/src/tap-bridge/model/tap-bridge.h
+--- a/src/tap-bridge/model/tap-bridge.h
++++ b/src/tap-bridge/model/tap-bridge.h
+@@ -208,6 +208,10 @@
+ virtual void SetPromiscReceiveCallback (NetDevice::PromiscReceiveCallback cb);
+ virtual bool SupportsSendFrom () const;
+ virtual Address GetMulticast (Ipv6Address addr) const;
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
+
+ protected:
+ /**
+diff --git a/src/uan/model/uan-net-device.cc b/src/uan/model/uan-net-device.cc
+--- a/src/uan/model/uan-net-device.cc
++++ b/src/uan/model/uan-net-device.cc
+@@ -389,5 +389,24 @@
+ m_mac->SetAddress (UanAddress::ConvertFrom (address));
+ }
+
++uint32_t
++UanNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++UanNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++UanNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++UanNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
++
+ } // namespace ns3
+
+diff --git a/src/uan/model/uan-net-device.h b/src/uan/model/uan-net-device.h
+--- a/src/uan/model/uan-net-device.h
++++ b/src/uan/model/uan-net-device.h
+@@ -126,6 +126,10 @@
+ virtual bool SupportsSendFrom (void) const;
+ virtual void AddLinkChangeCallback (Callback<void> callback);
+ virtual void SetAddress (Address address);
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
+ private:
+ virtual void ForwardUp (Ptr<Packet> pkt, const UanAddress &src);
+ Ptr<UanChannel> DoGetChannel (void) const;
+diff --git a/src/virtual-net-device/model/virtual-net-device.cc b/src/virtual-net-device/model/virtual-net-device.cc
+--- a/src/virtual-net-device/model/virtual-net-device.cc
++++ b/src/virtual-net-device/model/virtual-net-device.cc
+@@ -302,5 +302,23 @@
+ return false;
+ }
+
++uint32_t
++VirtualNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++VirtualNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++VirtualNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++VirtualNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
+
+ } // namespace ns3
+diff --git a/src/virtual-net-device/model/virtual-net-device.h b/src/virtual-net-device/model/virtual-net-device.h
+--- a/src/virtual-net-device/model/virtual-net-device.h
++++ b/src/virtual-net-device/model/virtual-net-device.h
+@@ -97,6 +97,11 @@
+ */
+ void SetSupportsSendFrom (bool supportsSendFrom);
+
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
++
+ /**
+ * \brief Configure the reported MTU for the virtual device.
+ * \param mtu MTU value to set
diff --git a/src/wifi/model/wifi-net-device.cc b/src/wifi/model/wifi-net-device.cc
--- a/src/wifi/model/wifi-net-device.cc
+++ b/src/wifi/model/wifi-net-device.cc
@@ -242,3 +640,46 @@
private:
// This value conforms to the 802.11 specification
static const uint16_t MAX_MSDU_SIZE = 2304;
+diff --git a/src/wimax/model/wimax-net-device.cc b/src/wimax/model/wimax-net-device.cc
+--- a/src/wimax/model/wimax-net-device.cc
++++ b/src/wimax/model/wimax-net-device.cc
+@@ -640,4 +640,24 @@
+ */
+ NS_FATAL_ERROR ("Not implemented-- please implement and contribute a patch");
+ }
++
++uint32_t
++WimaxNetDevice::GetQueueState (uint32_t index)
++{
++ return 1;
++}
++uint32_t
++WimaxNetDevice::GetNQueues (void)
++{
++ return 0;
++}
++bool
++WimaxNetDevice::IsTxPathBlocked (void)
++{
++ return false;
++}
++void
++WimaxNetDevice::SetQueueStateChangeCallback (Callback<void,uint32_t> callback)
++{}
++
+ } // namespace ns3
+diff --git a/src/wimax/model/wimax-net-device.h b/src/wimax/model/wimax-net-device.h
+--- a/src/wimax/model/wimax-net-device.h
++++ b/src/wimax/model/wimax-net-device.h
+@@ -219,6 +219,11 @@
+ NetDevice::PromiscReceiveCallback GetPromiscReceiveCallback (void);
+ virtual bool SupportsSendFrom (void) const;
+
++ virtual uint32_t GetQueueState (uint32_t index);
++ virtual uint32_t GetNQueues (void);
++ virtual bool IsTxPathBlocked (void);
++ virtual void SetQueueStateChangeCallback (Callback<void,uint32_t> callback);
++
+ TracedCallback<Ptr<const Packet>, const Mac48Address&> m_traceRx;
+ TracedCallback<Ptr<const Packet>, const Mac48Address&> m_traceTx;
+