Deleted Added
sdiff udiff text old ( 8922:17f037ad8918 ) new ( 8948:e95ee70f876c )
full compact
1/*
2 * Copyright (c) 2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright

--- 106 unchanged lines hidden (view full) ---

116 backoffTime(0), minBackoffDelay(min_backoff),
117 maxBackoffDelay(max_backoff), inRetry(false), recvSnoops(recv_snoops),
118 backoffEvent(this)
119{ }
120
121bool
122DmaPort::recvTiming(PacketPtr pkt)
123{
124 if (pkt->wasNacked()) {
125 DPRINTF(DMA, "Received nacked %s addr %#x\n",
126 pkt->cmdString(), pkt->getAddr());
127
128 if (backoffTime < minBackoffDelay)
129 backoffTime = minBackoffDelay;
130 else if (backoffTime < maxBackoffDelay)
131 backoffTime <<= 1;
132
133 device->reschedule(backoffEvent, curTick() + backoffTime, true);
134
135 DPRINTF(DMA, "Backoff time set to %d ticks\n", backoffTime);
136
137 pkt->reinitNacked();
138 queueDma(pkt, true);
139 } else if (pkt->isRequest() && recvSnoops) {
140 return true;
141 } else if (pkt->senderState) {
142 DmaReqState *state;
143 backoffTime >>= 2;
144
145 DPRINTF(DMA, "Received response %s addr %#x size %#x\n",
146 pkt->cmdString(), pkt->getAddr(), pkt->req->getSize());
147 state = dynamic_cast<DmaReqState*>(pkt->senderState);
148 pendingCount--;

--- 232 unchanged lines hidden ---