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