Hello qemu-devel, This patch series is an RFC for the new networking device emulation we're developing for QEMU.
This new device emulates the Intel 82574 GbE Controller and works with unmodified Intel e1000e drivers from the Linux/Windows kernels. The status of the current series is "Functional Device Ready, work on Extended Features in Progress". More precisely, these patches represent a functional device, which is recognized by the standard Intel drivers, and is able to transfer TX/RX packets with CSO/TSO offloads, according to the spec. Extended features not supported yet (work in progress): 1. TX/RX Interrupt moderation mechanisms 2. RSS 3. Full-featured multi-queue (use of multiqueued network backend) Also, there will be some code refactoring and performance optimization efforts. This series was tested on Linux (Fedora 22) and Windows (2012R2) guests, using Iperf, with TX/RX and TCP/UDP streams, and various packet sizes. More thorough testing, including data streams with different MTU sizes, and Microsoft Certification (HLK) tests, are pending missing features' development. See commit messages (esp. "net: Introduce e1000e device emulation") for more information about the development approaches and the architecture options chosen for this device. This series is based upon v2.3.0 tag of the upstream QEMU repository, and it will be rebased to latest before the final submission. Please share your thoughts - any feedback is highly welcomed :) Best Regards, Dmitry Fleytman. Dmitry Fleytman (5): net: Add macros for ETH address tracing net_pkt: Name vmxnet3 packet abstractions more generic net_pkt: Extend packet abstraction as requied by e1000e functionality e1000_regs: Add definitions for Intel 82574-specific bits net: Introduce e1000e device emulation MAINTAINERS | 2 + default-configs/pci.mak | 1 + hw/net/Makefile.objs | 5 +- hw/net/e1000_regs.h | 201 ++++- hw/net/e1000e.c | 531 ++++++++++++ hw/net/e1000e_core.c | 2081 +++++++++++++++++++++++++++++++++++++++++++++++ hw/net/e1000e_core.h | 181 +++++ hw/net/net_rx_pkt.c | 273 +++++++ hw/net/net_rx_pkt.h | 241 ++++++ hw/net/net_tx_pkt.c | 606 ++++++++++++++ hw/net/net_tx_pkt.h | 191 +++++ hw/net/vmxnet3.c | 80 +- hw/net/vmxnet_rx_pkt.c | 187 ----- hw/net/vmxnet_rx_pkt.h | 174 ---- hw/net/vmxnet_tx_pkt.c | 567 ------------- hw/net/vmxnet_tx_pkt.h | 148 ---- include/net/eth.h | 90 +- include/net/net.h | 5 + net/eth.c | 152 +++- tests/Makefile | 4 +- trace-events | 68 ++ 21 files changed, 4597 insertions(+), 1191 deletions(-) create mode 100644 hw/net/e1000e.c create mode 100644 hw/net/e1000e_core.c create mode 100644 hw/net/e1000e_core.h create mode 100644 hw/net/net_rx_pkt.c create mode 100644 hw/net/net_rx_pkt.h create mode 100644 hw/net/net_tx_pkt.c create mode 100644 hw/net/net_tx_pkt.h delete mode 100644 hw/net/vmxnet_rx_pkt.c delete mode 100644 hw/net/vmxnet_rx_pkt.h delete mode 100644 hw/net/vmxnet_tx_pkt.c delete mode 100644 hw/net/vmxnet_tx_pkt.h -- 2.4.3