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
arm-linux-user.mak
arm-softmmu.mak i.MX: Add i.MX6 SOC implementation. 2016-05-12 13:22:29 +01:00
armeb-linux-user.mak
cris-linux-user.mak
cris-softmmu.mak
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
m68k-linux-user.mak
m68k-softmmu.mak
microblaze-linux-user.mak
microblaze-softmmu.mak
microblazeel-linux-user.mak
microblazeel-softmmu.mak
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
or32-linux-user.mak
or32-softmmu.mak
pci.mak net: Introduce e1000e device emulation 2016-06-02 10:42:29 +08:00
ppc64-linux-user.mak
ppc64-softmmu.mak ppc/spapr: Allow VIRTIO_VGA 2015-10-20 09:26:36 +02:00
ppc64abi32-linux-user.mak
ppc64le-linux-user.mak
ppc-linux-user.mak
ppc-softmmu.mak
ppcemb-softmmu.mak
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
sh4eb-linux-user.mak
sh4eb-softmmu.mak
sound.mak
sparc32plus-linux-user.mak
sparc64-bsd-user.mak
sparc64-linux-user.mak
sparc64-softmmu.mak
sparc-bsd-user.mak
sparc-linux-user.mak
sparc-softmmu.mak
tilegx-linux-user.mak target-tilegx: Add TILE-Gx building files 2015-09-15 07:45:32 -07:00
tricore-softmmu.mak
unicore32-linux-user.mak
unicore32-softmmu.mak
usb.mak
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