Fixed a bug where a packet was attempted to be sent even though another packet was waiting for the bus.

--HG--
extra : convert_revision : 29f7a4f676884330d7b7e93517dea85fc7bbf678
This commit is contained in:
Gabe Black 2006-10-10 00:49:27 -04:00
parent ab44417282
commit 5582e60966

View file

@ -59,6 +59,8 @@ void
SimpleTimingPort::recvRetry() SimpleTimingPort::recvRetry()
{ {
bool result = true; bool result = true;
assert(transmitList.size());
while (result && transmitList.size()) { while (result && transmitList.size()) {
result = sendTiming(transmitList.front()); result = sendTiming(transmitList.front());
if (result) if (result)
@ -75,8 +77,11 @@ SimpleTimingPort::SendEvent::process()
{ {
port->outTiming--; port->outTiming--;
assert(port->outTiming >= 0); assert(port->outTiming >= 0);
if (port->sendTiming(packet)) { if (port->transmitList.size()) {
// send successfule port->transmitList.push_back(packet);
}
else if (port->sendTiming(packet)) {
// send successful
if (port->transmitList.size() == 0 && port->drainEvent) { if (port->transmitList.size() == 0 && port->drainEvent) {
port->drainEvent->process(); port->drainEvent->process();
port->drainEvent = NULL; port->drainEvent = NULL;