Merge zizzer:/bk/m5 into zed.eecs.umich.edu:/z/hsul/work/m5
--HG-- extra : convert_revision : 3ad33afea5aebe67816f7d4e6b24a43636316ffa
This commit is contained in:
@@ -1341,9 +1341,6 @@ NSGigE::rxKick()
|
||||
|
||||
// sanity check - i think the driver behaves like this
|
||||
assert(rxDescCnt >= rxPktBytes);
|
||||
|
||||
// Must clear the value before popping to decrement the
|
||||
// reference count
|
||||
rxFifo.pop();
|
||||
}
|
||||
|
||||
@@ -1564,9 +1561,6 @@ NSGigE::transmit()
|
||||
* besides, it's functionally the same.
|
||||
*/
|
||||
devIntrPost(ISR_TXOK);
|
||||
} else {
|
||||
DPRINTF(Ethernet,
|
||||
"May need to rethink always sending the descriptors back?\n");
|
||||
}
|
||||
|
||||
if (!txFifo.empty() && !txEvent.scheduled()) {
|
||||
@@ -1822,7 +1816,11 @@ NSGigE::txKick()
|
||||
// this is just because the receive can't handle a
|
||||
// packet bigger want to make sure
|
||||
assert(txPacket->length <= 1514);
|
||||
txFifo.push(txPacket);
|
||||
#ifndef NDEBUG
|
||||
bool success =
|
||||
#endif
|
||||
txFifo.push(txPacket);
|
||||
assert(success);
|
||||
|
||||
/*
|
||||
* this following section is not tqo spec, but
|
||||
@@ -1903,6 +1901,7 @@ NSGigE::txKick()
|
||||
txPacketBufPtr += txXferLen;
|
||||
txFragPtr += txXferLen;
|
||||
txDescCnt -= txXferLen;
|
||||
txFifo.reserve(txXferLen);
|
||||
|
||||
txState = txFifoBlock;
|
||||
break;
|
||||
|
||||
@@ -43,6 +43,7 @@ class PacketFifo
|
||||
std::list<PacketPtr> fifo;
|
||||
int _maxsize;
|
||||
int _size;
|
||||
int _reserved;
|
||||
|
||||
public:
|
||||
explicit PacketFifo(int max) : _maxsize(max), _size(0) {}
|
||||
@@ -50,18 +51,27 @@ class PacketFifo
|
||||
|
||||
int maxsize() const { return _maxsize; }
|
||||
int packets() const { return fifo.size(); }
|
||||
int size() const { return _size; }
|
||||
int avail() const { return _maxsize - _size; }
|
||||
bool empty() const { return _size == 0; }
|
||||
bool full() const { return _size >= _maxsize; }
|
||||
int size() const { return _size + _reserved; }
|
||||
int avail() const { return maxsize() - size(); }
|
||||
bool empty() const { return size() == 0; }
|
||||
bool full() const { return size() >= maxsize(); }
|
||||
|
||||
int reserve(int len = 0)
|
||||
{
|
||||
_reserved += len;
|
||||
assert(avail() >= 0);
|
||||
return _reserved;
|
||||
}
|
||||
|
||||
bool push(PacketPtr ptr)
|
||||
{
|
||||
if (avail() < ptr->length)
|
||||
assert(_reserved <= ptr->length);
|
||||
if (avail() < ptr->length - _reserved)
|
||||
return false;
|
||||
|
||||
_size += ptr->length;
|
||||
fifo.push_back(ptr);
|
||||
_reserved = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -132,8 +132,6 @@ def commands(options, command, args):
|
||||
info.source.connect()
|
||||
info.source.update_dict(globals())
|
||||
|
||||
system = info.source.__dict__[options.system]
|
||||
|
||||
if type(options.get) is str:
|
||||
info.source.get = options.get
|
||||
|
||||
@@ -232,6 +230,8 @@ def commands(options, command, args):
|
||||
if len(args):
|
||||
raise CommandException
|
||||
|
||||
system = info.source.__dict__[options.system]
|
||||
|
||||
if command == 'usertime':
|
||||
import copy
|
||||
kernel = copy.copy(system.full_cpu.numCycles)
|
||||
|
||||
Reference in New Issue
Block a user