Project

General

Profile

Bug #3304

need workaround for QEMU bug that induces bad e1000g checksums

Added by Hans Rosenfeld about 8 years ago. Updated about 8 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
-
Category:
kernel
Start date:
2012-10-25
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:

Description

From Bryans patch:

According to the documentation, the packet options field (POPTS) is "ignored except on the first data descriptor of a packet." However, there is a bug in QEMU (638955) whereby the POPTS field within a given data descriptor is used to interpret that data descriptor -- regardless of whether or not the descriptor is the first in a packet or not. For a packet that spans multiple descriptors, the (virtual) HW checksum (either TCP/UDP or IP or both) will therefore not be performed on descriptors after the first, resulting in incorrect checksums and mysteriously dropped/retransmitted packets. Other drivers do not have this issue because they (harmlessly) set the POPTS field on every data descriptor to be the intended options for the entire packet. To circumvent this QEMU bug, we engage in this same behavior iff our type matches that which is emulated by QEMU (the 82540).

https://github.com/joyent/illumos-joyent/commit/d26ccb67c380bd8e12daf99987339ec493d84318

#1

Updated by Eric Schrock about 8 years ago

  • Status changed from Pending RTI to Resolved

commit 5c68564d80b7e4acff16ce069e5e3d412d73ce69
Author: Bryan Cantrill <>
Date: Wed Oct 31 05:51:14 2012 -0700

3304 need workaround for QEMU bug that induces bad e1000g checksums
Reviewed by: Hans Rosenfeld &lt;&gt;
Reviewed by: Robert Mustacchi &lt;&gt;
Reviewed by: Richard Lowe &lt;&gt;
Reviewed by: Garrett D'Amore &lt;&gt;
Approved by: Eric Schrock &lt;&gt;

Also available in: Atom PDF