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; --- 65 unchanged lines hidden (view full) --- 74 Tick ready; 75 PacketPtr pkt; 76 Packet::SenderState *origSenderState; 77 short origSrc; 78 bool expectResponse; 79 80 bool partialWriteFixed; 81 PacketPtr oldPkt; |
82 bool nacked; |
83 |
84 PacketBuffer(PacketPtr _pkt, Tick t, bool nack = false) |
85 : ready(t), pkt(_pkt), 86 origSenderState(_pkt->senderState), origSrc(_pkt->getSrc()), |
87 expectResponse(_pkt->needsResponse() && !nack), 88 partialWriteFixed(false), nacked(nack) 89 |
90 { |
91 if (!pkt->isResponse() && !nack) |
92 pkt->senderState = this; 93 } 94 95 void fixResponse(PacketPtr pkt) 96 { 97 assert(pkt->senderState == this); 98 pkt->setDest(origSrc); 99 pkt->senderState = origSenderState; --- 42 unchanged lines hidden (view full) --- 142 /** 143 * Outbound packet queue. Packets are held in this queue for a 144 * specified delay to model the processing delay of the 145 * bridge. 146 */ 147 std::list<PacketBuffer*> sendQueue; 148 149 int outstandingResponses; |
150 int queuedRequests; |
151 152 /** Max queue size for outbound packets */ 153 int queueLimit; 154 155 /** 156 * Is this side blocked from accepting outbound packets? 157 */ |
158 bool queueFull(); |
159 |
160 void queueForSendTiming(PacketPtr pkt); |
161 162 void finishSend(PacketBuffer *buf); 163 |
164 void nackRequest(PacketPtr pkt); 165 |
166 /** 167 * Handle send event, scheduled when the packet at the head of 168 * the outbound queue is ready to transmit (for timing 169 * accesses only). 170 */ 171 void trySend(); 172 173 class SendEvent : public Event --- 66 unchanged lines hidden --- |