Igbe: Newer kernels seem to allow TSO headers and packet data to be in one desc

Implement some code we used to panic on as it actually does happen with the
e1000 driver in Linux 3.3+. We used to assume that a TSO header would never
be part of a larger payload, however it appears as though it now can be.
This commit is contained in:
Ali Saidi 2012-09-07 14:20:53 -05:00
parent 124aac72b4
commit 5217d5a451

View file

@ -1650,11 +1650,9 @@ IGbE::TxDescCache::headerComplete()
unusedCache.pop_front(); unusedCache.pop_front();
usedCache.push_back(desc); usedCache.push_back(desc);
} else { } else {
// I don't think this case happens, I think the headrer is always DPRINTF(EthernetDesc, "TSO: header part of larger payload\n");
// it's own packet, if it wasn't it might be as simple as just tsoDescBytesUsed = tsoHeaderLen;
// incrementing descBytesUsed by the header length, but I'm not tsoLoadedHeader = true;
// completely sure
panic("TSO header part of bigger packet, not implemented\n");
} }
enableSm(); enableSm();
igbe->checkDrain(); igbe->checkDrain();