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:
parent
ab44417282
commit
5582e60966
1 changed files with 7 additions and 2 deletions
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue