make io device be a little nicer about scheduling retries on the bus
--HG-- extra : convert_revision : 19a1f0c7bf79d6d8ef235aae60cdbbbcb7de2b79
This commit is contained in:
parent
aa11330ddb
commit
0193c3fe7d
1 changed files with 14 additions and 10 deletions
|
@ -143,9 +143,12 @@ void
|
||||||
DmaPort::recvRetry()
|
DmaPort::recvRetry()
|
||||||
{
|
{
|
||||||
Packet* pkt = transmitList.front();
|
Packet* pkt = transmitList.front();
|
||||||
|
bool result = true;
|
||||||
|
while (result && transmitList.size()) {
|
||||||
DPRINTF(DMA, "Retry on Packet %#x with senderState: %#x\n",
|
DPRINTF(DMA, "Retry on Packet %#x with senderState: %#x\n",
|
||||||
pkt, pkt->senderState);
|
pkt, pkt->senderState);
|
||||||
if (sendTiming(pkt)) {
|
result = sendTiming(pkt);
|
||||||
|
if (result) {
|
||||||
DPRINTF(DMA, "-- Done\n");
|
DPRINTF(DMA, "-- Done\n");
|
||||||
transmitList.pop_front();
|
transmitList.pop_front();
|
||||||
pendingCount--;
|
pendingCount--;
|
||||||
|
@ -153,6 +156,7 @@ DmaPort::recvRetry()
|
||||||
} else {
|
} else {
|
||||||
DPRINTF(DMA, "-- Failed, queued\n");
|
DPRINTF(DMA, "-- Failed, queued\n");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -201,7 +205,7 @@ DmaPort::sendDma(Packet *pkt)
|
||||||
if (state == Timing) { */
|
if (state == Timing) { */
|
||||||
DPRINTF(DMA, "Attempting to send Packet %#x with senderState: %#x\n",
|
DPRINTF(DMA, "Attempting to send Packet %#x with senderState: %#x\n",
|
||||||
pkt, pkt->senderState);
|
pkt, pkt->senderState);
|
||||||
if (!sendTiming(pkt)) {
|
if (transmitList.size() || !sendTiming(pkt)) {
|
||||||
transmitList.push_back(pkt);
|
transmitList.push_back(pkt);
|
||||||
DPRINTF(DMA, "-- Failed: queued\n");
|
DPRINTF(DMA, "-- Failed: queued\n");
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue