[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 0/2] e1000e: Reimplement e1000 as a variant of e1
From: |
Ed Swierk |
Subject: |
[Qemu-devel] [PATCH v2 0/2] e1000e: Reimplement e1000 as a variant of e1000e |
Date: |
Wed, 8 Nov 2017 20:39:15 -0800 |
>From a hardware functionality and register perspective, the Intel
8254x Gigabit Ethernet Controller[1] is roughly a subset of the Intel
82574[2], making it practical to implement e1000 device emulation as
an extension of e1000e.
That would be a step towards eliminating the existing e1000
implementation--a bunch of semi-redundant code with its own bugs (like
the faulty tx checksum offload I reported recently[3]).
[1]
https://www.intel.com/content/dam/doc/manual/pci-pci-x-family-gbe-controllers-software-dev-manual.pdf
[2]
https://www.intel.com/content/dam/doc/datasheet/82574l-gbe-controller-datasheet.pdf
[3] https://lists.nongnu.org/archive/html/qemu-devel/2017-10/msg03008.html
This patch series adds a new e1000-ng device but leaves the existing
e1000 device alone. Linux 4.1 and Windows 10 e1000 guest drivers
recognize the e1000-ng device and successfully pass traffic on a Linux
host.
Preliminary performance measurements are encouraging: with e1000-ng,
single-threaded TCP iperf shows about a 2x speedup in tx and rx
throughput vs e1000, and CPU usage is slighly lower.
A ton of work is needed before e1000-ng will be ready to supplant
e1000: testing with every random guest OS, fixing bugs, figuring out
migration and other missing functionality. There's no way I can do
this myself.
I'd like to propose a more modest and achievable short-term goal: find
and fix any regressions that might affect users of e1000e and e1000,
so that the patches can be applied and folks can easily start trying
out e1000-ng with their favorite guest OS. That means accepting (for
now) known deficiencies in the new e1000-ng devices, which can be
addressed by myself and (hopefully) others in follow-up patches. Does
that sound reasonable?
v2:
- added new eecd_state fields to e1000e_vmstate and e1000_vmstate
- got savevm/loadvm working with e1000-ng
- leave MSI enabled for e1000-ng (though guest drivers seem to ignore it)
Ed Swierk (2):
e1000e: Infrastructure for e1000-ng
e1000e: Add e1000-ng devices
hw/net/e1000e.c | 277 +++++++++++++++++++++++++++++++++++++++++++--------
hw/net/e1000e_core.c | 249 +++++++++++++++++++++++++++++++++------------
hw/net/e1000e_core.h | 25 ++++-
3 files changed, 437 insertions(+), 114 deletions(-)
--
1.9.1
- [Qemu-devel] [PATCH v2 0/2] e1000e: Reimplement e1000 as a variant of e1000e,
Ed Swierk <=