summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2009-01-23 17:19:47 -0500
committerAli Saidi <saidi@eecs.umich.edu>2009-01-23 17:19:47 -0500
commit37ffe52ca406405ad42f9444286a7d1deef29a9c (patch)
tree0b46b5370c1000ff7a0ffe8db02d943f806277c8
parent10fc45da27f0c18c1a8b90af3d76127fc4467391 (diff)
downloadgem5-37ffe52ca406405ad42f9444286a7d1deef29a9c.tar.xz
IGbE: Fix two e1000 driver bugs that I missed before.
-rw-r--r--src/dev/i8254xGBe.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dev/i8254xGBe.cc b/src/dev/i8254xGBe.cc
index cf6692fb4..d6a888b21 100644
--- a/src/dev/i8254xGBe.cc
+++ b/src/dev/i8254xGBe.cc
@@ -1108,6 +1108,7 @@ IGbE::RxDescCache::unserialize(Checkpoint *cp, const std::string &section)
IGbE::TxDescCache::TxDescCache(IGbE *i, const std::string n, int s)
: DescCache<TxDesc>(i,n, s), pktDone(false), isTcp(false), pktWaiting(false),
+ completionAddress(0), completionEnabled(false),
useTso(false), pktEvent(this), headerEvent(this), nullEvent(this)
{
@@ -1319,7 +1320,8 @@ IGbE::TxDescCache::pktComplete()
if ((!TxdOp::eop(desc) && !useTso) ||
- (pktPtr->length < ( tsoMss + tsoHeaderLen) && tsoTotalLen != tsoUsedLen)) {
+ (pktPtr->length < ( tsoMss + tsoHeaderLen) &&
+ tsoTotalLen != tsoUsedLen && useTso)) {
assert(!useTso || (tsoDescBytesUsed == TxdOp::getLen(desc)));
unusedCache.pop_front();
usedCache.push_back(desc);