qemu-e2k/default-configs
Dmitry Fleytman 6f3fbe4ed0 net: Introduce e1000e device emulation
This patch introduces emulation for the Intel 82574 adapter, AKA e1000e.

This implementation is derived from the e1000 emulation code, and
utilizes the TX/RX packet abstractions that were initially developed for
the vmxnet3 device. Although some parts of the introduced code may be
shared with e1000, the differences are substantial enough so that the
only shared resources for the two devices are the definitions in
hw/net/e1000_regs.h.

Similarly to vmxnet3, the new device uses virtio headers for task
offloads (for backends that support virtio extensions). Usage of
virtio headers may be forcibly disabled via a boolean device property
"vnet" (which is enabled by default). In such case task offloads
will be performed in software, in the same way it is done on
backends that do not support virtio headers.

The device code is split into two parts:

  1. hw/net/e1000e.c: QEMU-specific code for a network device;
  2. hw/net/e1000e_core.[hc]: Device emulation according to the spec.

The new device name is e1000e.

Intel specifications for the 82574 controller are available at:
http://www.intel.com/content/dam/doc/datasheet/82574l-gbe-controller-datasheet.pdf

Throughput measurement results (iperf2):

                Fedora 22 guest, TCP, RX
    4 ++------------------------------------------+
      |                                           |
      |                           X   X   X   X   X
  3.5 ++          X   X   X   X                   |
      |       X                                   |
      |                                           |
    3 ++                                          |
G     |   X                                       |
b     |                                           |
/ 2.5 ++                                          |
s     |                                           |
      |                                           |
    2 ++                                          |
      |                                           |
      |                                           |
  1.5 X+                                          |
      |                                           |
      +   +   +   +   +   +   +   +   +   +   +   +
    1 ++--+---+---+---+---+---+---+---+---+---+---+
     32  64  128 256 512  1   2   4   8  16  32  64
      B   B   B   B   B   KB  KB  KB  KB KB  KB  KB
                       Buffer size

               Fedora 22 guest, TCP, TX
  18 ++-------------------------------------------+
     |                        X                   |
  16 ++                           X   X   X   X   X
     |                   X                        |
  14 ++                                           |
     |                                            |
  12 ++                                           |
G    |               X                            |
b 10 ++                                           |
/    |                                            |
s  8 ++                                           |
     |                                            |
   6 ++          X                                |
     |                                            |
   4 ++                                           |
     |       X                                    |
   2 ++  X                                        |
     X   +   +   +   +   +    +   +   +   +   +   +
   0 ++--+---+---+---+---+----+---+---+---+---+---+
    32  64  128 256 512  1    2   4   8  16  32  64
     B   B   B   B   B   KB   KB  KB  KB KB  KB  KB
                       Buffer size

                Fedora 22 guest, UDP, RX
    3 ++------------------------------------------+
      |                                           X
      |                                           |
  2.5 ++                                          |
      |                                           |
      |                                           |
    2 ++                                 X        |
G     |                                           |
b     |                                           |
/ 1.5 ++                                          |
s     |                         X                 |
      |                                           |
    1 ++                                          |
      |                                           |
      |                 X                         |
  0.5 ++                                          |
      |        X                                  |
      X        +        +       +        +        +
    0 ++-------+--------+-------+--------+--------+
     32       64       128     256      512       1
      B        B         B       B        B      KB
                       Datagram size

                Fedora 22 guest, UDP, TX
    1 ++------------------------------------------+
      |                                           X
  0.9 ++                                          |
      |                                           |
  0.8 ++                                          |
  0.7 ++                                          |
      |                                           |
G 0.6 ++                                          |
b     |                                           |
/ 0.5 ++                                          |
s     |                                  X        |
  0.4 ++                                          |
      |                                           |
  0.3 ++                                          |
  0.2 ++                        X                 |
      |                                           |
  0.1 ++                X                         |
      X        X        +       +        +        +
    0 ++-------+--------+-------+--------+--------+
     32       64       128     256      512       1
      B        B         B       B        B      KB
                       Datagram size

              Windows 2012R2 guest, TCP, RX
  3.2 ++------------------------------------------+
      |                                   X       |
    3 ++                                          |
      |                                           |
  2.8 ++                                          |
      |                                           |
  2.6 ++                              X           |
G     |   X                   X   X           X   X
b 2.4 ++      X       X                           |
/     |                                           |
s 2.2 ++                                          |
      |                                           |
    2 ++                                          |
      |           X       X                       |
  1.8 ++                                          |
      |                                           |
  1.6 X+                                          |
      +   +   +   +   +   +   +   +   +   +   +   +
  1.4 ++--+---+---+---+---+---+---+---+---+---+---+
     32  64  128 256 512  1   2   4   8  16  32  64
      B   B   B   B   B   KB  KB  KB  KB KB  KB  KB
                       Buffer size

             Windows 2012R2 guest, TCP, TX
  14 ++-------------------------------------------+
     |                                            |
     |                                        X   X
  12 ++                                           |
     |                                            |
  10 ++                                           |
     |                                            |
G    |                                            |
b  8 ++                                           |
/    |                                    X       |
s  6 ++                                           |
     |                                            |
     |                                            |
   4 ++                               X           |
     |                                            |
   2 ++                                           |
     |           X   X            X               |
     +   X   X   +   +   X    X   +   +   +   +   +
   0 X+--+---+---+---+---+----+---+---+---+---+---+
    32  64  128 256 512  1    2   4   8  16  32  64
     B   B   B   B   B   KB   KB  KB  KB KB  KB  KB
                       Buffer size

              Windows 2012R2 guest, UDP, RX
  1.6 ++------------------------------------------X
      |                                           |
  1.4 ++                                          |
      |                                           |
  1.2 ++                                          |
      |                                  X        |
      |                                           |
G   1 ++                                          |
b     |                                           |
/ 0.8 ++                                          |
s     |                                           |
  0.6 ++                        X                 |
      |                                           |
  0.4 ++                                          |
      |                 X                         |
      |                                           |
  0.2 ++       X                                  |
      X        +        +       +        +        +
    0 ++-------+--------+-------+--------+--------+
     32       64       128     256      512       1
      B        B         B       B        B      KB
                       Datagram size

              Windows 2012R2 guest, UDP, TX
  0.6 ++------------------------------------------+
      |                                           X
      |                                           |
  0.5 ++                                          |
      |                                           |
      |                                           |
  0.4 ++                                          |
G     |                                           |
b     |                                           |
/ 0.3 ++                                 X        |
s     |                                           |
      |                                           |
  0.2 ++                                          |
      |                                           |
      |                         X                 |
  0.1 ++                                          |
      |                 X                         |
      X        X        +       +        +        +
    0 ++-------+--------+-------+--------+--------+
     32       64       128     256      512       1
      B        B         B       B        B      KB
                       Datagram size

Signed-off-by: Dmitry Fleytman <dmitry.fleytman@ravellosystems.com>
Signed-off-by: Leonid Bloch <leonid.bloch@ravellosystems.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
2016-06-02 10:42:29 +08:00
..
aarch64-linux-user.mak default-configs/aarch64-linux-user.mak: Remove unused define 2015-11-24 14:12:15 +00:00
aarch64-softmmu.mak arm: Introduce Xilinx ZynqMP SoC 2015-05-18 16:41:09 +01:00
alpha-linux-user.mak
alpha-softmmu.mak pci: Move PCI VGA to pci.mak 2015-02-13 05:46:08 +00:00
arm-linux-user.mak default-configs/: CONFIG_GDBSTUB_XML removed 2013-10-16 18:21:01 +02:00
arm-softmmu.mak i.MX: Add i.MX6 SOC implementation. 2016-05-12 13:22:29 +01:00
armeb-linux-user.mak default-configs/: CONFIG_GDBSTUB_XML removed 2013-10-16 18:21:01 +02:00
cris-linux-user.mak
cris-softmmu.mak hw: move NICs to hw/net/, configure via default-configs/ 2013-04-08 18:13:13 +02:00
i386-bsd-user.mak
i386-linux-user.mak
i386-softmmu.mak nvdimm acpi: build ACPI NFIT table 2015-12-22 18:39:20 +02:00
lm32-softmmu.mak configure: opengl overhaul 2015-03-12 15:49:57 +01:00
m68k-linux-user.mak default-configs/: CONFIG_GDBSTUB_XML removed 2013-10-16 18:21:01 +02:00
m68k-softmmu.mak default-configs/: CONFIG_GDBSTUB_XML removed 2013-10-16 18:21:01 +02:00
microblaze-linux-user.mak
microblaze-softmmu.mak hw: move SSI controllers to hw/ssi/, configure via default-configs/ 2013-04-08 18:13:13 +02:00
microblazeel-linux-user.mak
microblazeel-softmmu.mak defconfigs: Piggyback microblazeel on microblaze 2015-04-30 16:05:48 +03:00
mips64-linux-user.mak
mips64-softmmu.mak default-configs: add mips-softmmu-common.mak 2016-03-23 13:36:56 +00:00
mips64el-linux-user.mak
mips64el-softmmu.mak default-configs: add mips-softmmu-common.mak 2016-03-23 13:36:56 +00:00
mips-linux-user.mak
mips-softmmu-common.mak hw/mips: implement ITC Configuration Tags and Storage Cells 2016-03-30 09:14:00 +01:00
mips-softmmu.mak default-configs: add mips-softmmu-common.mak 2016-03-23 13:36:56 +00:00
mipsel-linux-user.mak
mipsel-softmmu.mak default-configs: add mips-softmmu-common.mak 2016-03-23 13:36:56 +00:00
mipsn32-linux-user.mak
mipsn32el-linux-user.mak
moxie-softmmu.mak hw: move MC146818RTC to hw/timer/, configure via default-configs/ 2013-04-08 18:13:13 +02:00
or32-linux-user.mak target-or32: Add linux user support 2012-07-27 21:13:05 +00:00
or32-softmmu.mak target-or32: Add target stubs and QOM cpu 2012-07-27 21:12:55 +00:00
pci.mak net: Introduce e1000e device emulation 2016-06-02 10:42:29 +08:00
ppc64-linux-user.mak target-ppc: Enable Building of libdecnumber 2014-06-16 13:24:29 +02:00
ppc64-softmmu.mak ppc/spapr: Allow VIRTIO_VGA 2015-10-20 09:26:36 +02:00
ppc64abi32-linux-user.mak target-ppc: Enable Building of libdecnumber 2014-06-16 13:24:29 +02:00
ppc64le-linux-user.mak target-ppc: Add a new user mode target for little-endian PPC64. 2014-06-16 13:24:40 +02:00
ppc-linux-user.mak target-ppc: Enable Building of libdecnumber 2014-06-16 13:24:29 +02:00
ppc-softmmu.mak PPC: Remove duplicate OPENPIC defines in default-configs 2015-03-09 15:00:07 +01:00
ppcemb-softmmu.mak PPC: Remove duplicate OPENPIC defines in default-configs 2015-03-09 15:00:07 +01:00
s390x-linux-user.mak
s390x-softmmu.mak s390x/watchdog: introduce diag288 watchdog device 2015-06-11 17:45:49 +02:00
sh4-linux-user.mak
sh4-softmmu.mak default-configs: add SuperIO to SH4 2013-07-25 08:12:28 -05:00
sh4eb-linux-user.mak
sh4eb-softmmu.mak default-configs: add SuperIO to SH4 2013-07-25 08:12:28 -05:00
sound.mak audio: Enable all cards 2013-05-03 12:04:49 -05:00
sparc32plus-linux-user.mak
sparc64-bsd-user.mak
sparc64-linux-user.mak
sparc64-softmmu.mak pci: Move PCI VGA to pci.mak 2015-02-13 05:46:08 +00:00
sparc-bsd-user.mak
sparc-linux-user.mak
sparc-softmmu.mak sun4m: Add Sun CG3 framebuffer and corresponding OpenBIOS FCode ROM 2014-02-27 10:01:41 +00:00
tilegx-linux-user.mak target-tilegx: Add TILE-Gx building files 2015-09-15 07:45:32 -07:00
tricore-softmmu.mak target-tricore: Add initialization for translation and activate target 2014-09-01 14:49:20 +01:00
unicore32-linux-user.mak
unicore32-softmmu.mak unicore32-softmmu: Add ps2 support 2012-08-11 09:37:02 +00:00
usb.mak hw/usb: Include USB files only if necessary 2015-03-18 11:50:47 +01:00
x86_64-bsd-user.mak
x86_64-linux-user.mak
x86_64-softmmu.mak nvdimm acpi: build ACPI NFIT table 2015-12-22 18:39:20 +02:00
xtensa-softmmu.mak
xtensaeb-softmmu.mak