65,67c65,69
< Packet* pkt = transmitList.front();
< if (Port::sendTiming(pkt)) {
< transmitList.pop_front();
---
> bool result = true;
> while (result && transmitList.size()) {
> result = Port::sendTiming(transmitList.front());
> if (result)
> transmitList.pop_front();
71d72
<
86,89c87,100
< Tick latency = device->recvAtomic(pkt);
< // turn packet around to go back to requester
< pkt->makeTimingResponse();
< sendTiming(pkt, latency);
---
> if (pkt->result == Packet::Nacked) {
> pkt->reinitNacked();
> if (transmitList.size()) {
> transmitList.push_front(pkt);
> } else {
> if (!Port::sendTiming(pkt))
> transmitList.push_front(pkt);
> }
> } else {
> Tick latency = device->recvAtomic(pkt);
> // turn packet around to go back to requester
> pkt->makeTimingResponse();
> sendTiming(pkt, latency);
> }