50c50
< DmaPort::DmaPort(MemObject *dev, System *s, Tick min_backoff, Tick max_backoff)
---
> DmaPort::DmaPort(MemObject *dev, System *s)
54,56c54
< backoffTime(0), minBackoffDelay(min_backoff),
< maxBackoffDelay(max_backoff), inRetry(false),
< backoffEvent(this)
---
> inRetry(false)
62,77c60
< if (pkt->wasNacked()) {
< DPRINTF(DMA, "Received nacked %s addr %#x\n",
< pkt->cmdString(), pkt->getAddr());
<
< if (backoffTime < minBackoffDelay)
< backoffTime = minBackoffDelay;
< else if (backoffTime < maxBackoffDelay)
< backoffTime <<= 1;
<
< device->reschedule(backoffEvent, curTick() + backoffTime, true);
<
< DPRINTF(DMA, "Backoff time set to %d ticks\n", backoffTime);
<
< pkt->reinitNacked();
< queueDma(pkt, true);
< } else if (pkt->senderState) {
---
> if (pkt->senderState) {
79d61
< backoffTime >>= 2;
119,120c101
< : PioDevice(p), dmaPort(this, sys, params()->min_backoff_delay,
< params()->max_backoff_delay)
---
> : PioDevice(p), dmaPort(this, sys)
171c152
< } while (!backoffTime && result && transmitList.size());
---
> } while (result && transmitList.size());
173,180c154,155
< if (transmitList.size() && backoffTime && !inRetry) {
< DPRINTF(DMA, "Scheduling backoff for %d\n", curTick()+backoffTime);
< if (!backoffEvent.scheduled())
< device->schedule(backoffEvent, backoffTime + curTick());
< }
< DPRINTF(DMA, "TransmitList: %d, backoffTime: %d inRetry: %d es: %d\n",
< transmitList.size(), backoffTime, inRetry,
< backoffEvent.scheduled());
---
> DPRINTF(DMA, "TransmitList: %d, inRetry: %d\n",
> transmitList.size(), inRetry);
234,235c209,210
< if (backoffEvent.scheduled() || inRetry) {
< DPRINTF(DMA, "Can't send immediately, waiting for retry or backoff timer\n");
---
> if (inRetry) {
> DPRINTF(DMA, "Can't send immediately, waiting for retry\n");
252,259c227
< } while (result && !backoffTime && transmitList.size());
<
< if (transmitList.size() && backoffTime && !inRetry &&
< !backoffEvent.scheduled()) {
< DPRINTF(DMA, "-- Scheduling backoff timer for %d\n",
< backoffTime+curTick());
< device->schedule(backoffEvent, backoffTime + curTick());
< }
---
> } while (result && transmitList.size());