dev, dist: Fixed a scheduling bug in the etherswitch
authorMohammad Alian <m.alian1369@gmail.com>
Tue, 19 Jul 2016 14:48:56 +0000 (09:48 -0500)
committerMohammad Alian <m.alian1369@gmail.com>
Tue, 19 Jul 2016 14:48:56 +0000 (09:48 -0500)
This patch fixes a bug in etherswitch. When a packet gets inserted
in the output fifo, the txEvent has to always be reschedule,
not only when an event is already scheduled. This can raise
the assertion in the reschedule function.

src/dev/net/etherswitch.cc

index 0564ee594265f0a89a054f912ba8bc45de452b7c..52d9b11abe66ccf10df9b224676e89332507a291 100644 (file)
@@ -172,7 +172,7 @@ EtherSwitch::Interface::enqueue(EthPacketPtr packet, unsigned senderId)
     // to send this packet out the external link
     // otherwise, there is already a txEvent scheduled
     if (outputFifo.push(packet, senderId)) {
-        parent->reschedule(txEvent, curTick() + switchingDelay());
+        parent->reschedule(txEvent, curTick() + switchingDelay(), true);
     }
 }