On 01/19/2016 01:35 AM, Leonid Bloch wrote: > Hello All, > > This series is the latest code of the e1000e device emulation being developed. > > Changes since v1: > > 1. Added support for all the device features: > - Interrupt moderation. > - RSS. > - Multiqueue. > 2. Simulated exact PCI/PCIe configuration space layout. > 3. Made fixes needed to pass Microsoft's HW certification tests (HCK). > > This series is still an RFC, because the following tasks are not done yet: > > 1. See which code can be shared between this device and the existing e1000 > device. > 2. Rebase patches to the latest master (current base is v2.3.0). > > Please share your thoughts, > Thanks, Dmitry.
Hi: Do you have a public git tree for easier reviewing? Thanks > > =================== > > 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 (10): > msix: make msix_clr_pending() visible for clients > pci: Introduce function for PCI PM capability creation > pcie: Add support for PCIe CAP v1 > pcie: Introduce function for DSN capability creation > net: Introduce Toeplitz hash calculator > 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 | 14 + > default-configs/pci.mak | 1 + > hw/net/Makefile.objs | 5 +- > hw/net/e1000_regs.h | 353 ++++- > hw/net/e1000e.c | 700 +++++++++ > hw/net/e1000e_core.c | 3453 > ++++++++++++++++++++++++++++++++++++++++++++ > hw/net/e1000e_core.h | 230 +++ > hw/net/net_rx_pkt.c | 536 +++++++ > hw/net/net_rx_pkt.h | 353 +++++ > hw/net/net_tx_pkt.c | 627 ++++++++ > 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 -- > hw/pci/msix.c | 2 +- > hw/pci/pci.c | 21 + > hw/pci/pcie.c | 96 +- > include/hw/pci/msix.h | 1 + > include/hw/pci/pci.h | 2 + > include/hw/pci/pci_regs.h | 4 + > include/hw/pci/pcie.h | 5 + > include/hw/pci/pcie_regs.h | 8 +- > include/net/checksum.h | 49 +- > include/net/eth.h | 161 ++- > include/net/net.h | 5 + > net/checksum.c | 7 +- > net/eth.c | 410 +++++- > tests/Makefile | 4 +- > trace-events | 195 +++ > 31 files changed, 7350 insertions(+), 1239 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 >