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 Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
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 Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
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 Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
i386-linux-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
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 Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
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 microblaze: Correct copy+paste:o in defconfigs 2011-03-01 22:17:52 +01:00
microblazeel-softmmu.mak defconfigs: Piggyback microblazeel on microblaze 2015-04-30 16:05:48 +03:00
mips64-linux-user.mak linux-user: Add default configs for mips64[el] 2012-02-02 17:51:20 +02:00
mips64-softmmu.mak default-configs: add mips-softmmu-common.mak 2016-03-23 13:36:56 +00:00
mips64el-linux-user.mak linux-user: Add default configs for mips64[el] 2012-02-02 17:51:20 +02:00
mips64el-softmmu.mak default-configs: add mips-softmmu-common.mak 2016-03-23 13:36:56 +00:00
mips-linux-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
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 Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
mipsel-softmmu.mak default-configs: add mips-softmmu-common.mak 2016-03-23 13:36:56 +00:00
mipsn32-linux-user.mak linux-user: Add default-configs for mipsn32[el] 2012-02-02 17:51:20 +02:00
mipsn32el-linux-user.mak linux-user: Add default-configs for mipsn32[el] 2012-02-02 17:51:20 +02:00
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: build s390x by default 2011-05-20 17:35:12 +02:00
s390x-softmmu.mak s390x/watchdog: introduce diag288 watchdog device 2015-06-11 17:45:49 +02:00
sh4-linux-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
sh4-softmmu.mak default-configs: add SuperIO to SH4 2013-07-25 08:12:28 -05:00
sh4eb-linux-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
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 Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
sparc64-bsd-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
sparc64-linux-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
sparc64-softmmu.mak pci: Move PCI VGA to pci.mak 2015-02-13 05:46:08 +00:00
sparc-bsd-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
sparc-linux-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
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: necessary modifications for other files to support unicore32 2011-04-12 18:49:05 +00:00
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 Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
x86_64-linux-user.mak Add new config-devices.mak for each target 2009-10-08 21:17:10 -05:00
x86_64-softmmu.mak nvdimm acpi: build ACPI NFIT table 2015-12-22 18:39:20 +02:00
xtensa-softmmu.mak xtensa_lx60: add FLASH support 2011-11-02 05:05:52 +04:00
xtensaeb-softmmu.mak xtensa_lx60: add FLASH support 2011-11-02 05:05:52 +04:00