2013-03-01 16:59:19 +04:00
|
|
|
common-obj-$(CONFIG_DP8393X) += dp8393x.o
|
|
|
|
common-obj-$(CONFIG_XEN_BACKEND) += xen_nic.o
|
|
|
|
|
|
|
|
# PCI network cards
|
|
|
|
common-obj-$(CONFIG_NE2000_PCI) += ne2000.o
|
|
|
|
common-obj-$(CONFIG_EEPRO100_PCI) += eepro100.o
|
|
|
|
common-obj-$(CONFIG_PCNET_PCI) += pcnet-pci.o
|
|
|
|
common-obj-$(CONFIG_PCNET_COMMON) += pcnet.o
|
2016-06-01 11:23:44 +03:00
|
|
|
common-obj-$(CONFIG_E1000_PCI) += e1000.o e1000x_common.o
|
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-01 11:23:45 +03:00
|
|
|
common-obj-$(CONFIG_E1000E_PCI) += e1000e.o e1000e_core.o e1000x_common.o
|
2013-03-01 16:59:19 +04:00
|
|
|
common-obj-$(CONFIG_RTL8139_PCI) += rtl8139.o
|
2016-06-01 11:23:39 +03:00
|
|
|
common-obj-$(CONFIG_VMXNET3_PCI) += net_tx_pkt.o net_rx_pkt.o
|
2013-03-01 16:59:19 +04:00
|
|
|
common-obj-$(CONFIG_VMXNET3_PCI) += vmxnet3.o
|
|
|
|
|
|
|
|
common-obj-$(CONFIG_SMC91C111) += smc91c111.o
|
|
|
|
common-obj-$(CONFIG_LAN9118) += lan9118.o
|
|
|
|
common-obj-$(CONFIG_NE2000_ISA) += ne2000-isa.o
|
|
|
|
common-obj-$(CONFIG_OPENCORES_ETH) += opencores_eth.o
|
|
|
|
common-obj-$(CONFIG_XGMAC) += xgmac.o
|
|
|
|
common-obj-$(CONFIG_MIPSNET) += mipsnet.o
|
|
|
|
common-obj-$(CONFIG_XILINX_AXI) += xilinx_axienet.o
|
2014-01-31 02:02:06 +04:00
|
|
|
common-obj-$(CONFIG_ALLWINNER_EMAC) += allwinner_emac.o
|
2015-09-07 12:39:30 +03:00
|
|
|
common-obj-$(CONFIG_IMX_FEC) += imx_fec.o
|
2013-03-01 16:59:19 +04:00
|
|
|
|
|
|
|
common-obj-$(CONFIG_CADENCE) += cadence_gem.o
|
2013-02-05 15:33:56 +04:00
|
|
|
common-obj-$(CONFIG_STELLARIS_ENET) += stellaris_enet.o
|
|
|
|
common-obj-$(CONFIG_LANCE) += lance.o
|
|
|
|
|
|
|
|
obj-$(CONFIG_ETRAXFS) += etraxfs_eth.o
|
|
|
|
obj-$(CONFIG_COLDFIRE) += mcf_fec.o
|
|
|
|
obj-$(CONFIG_MILKYMIST) += milkymist-minimac2.o
|
|
|
|
obj-$(CONFIG_PSERIES) += spapr_llan.o
|
|
|
|
obj-$(CONFIG_XILINX_ETHLITE) += xilinx_ethlite.o
|
2013-02-05 15:42:31 +04:00
|
|
|
|
|
|
|
obj-$(CONFIG_VIRTIO) += virtio-net.o
|
|
|
|
obj-y += vhost_net.o
|
2014-02-05 17:59:28 +04:00
|
|
|
|
|
|
|
obj-$(CONFIG_ETSEC) += fsl_etsec/etsec.o fsl_etsec/registers.o \
|
|
|
|
fsl_etsec/rings.o fsl_etsec/miim.o
|
rocker: add new rocker switch device
Rocker is a simulated ethernet switch device. The device supports up to 62
front-panel ports and supports L2 switching and L3 routing functions, as well
as L2/L3/L4 ACLs. The device presents a single PCI device for each switch,
with a memory-mapped register space for device driver access.
Rocker device is invoked with -device, for example a 4-port switch:
-device rocker,name=sw1,len-ports=4,ports[0]=dev0,ports[1]=dev1, \
ports[2]=dev2,ports[3]=dev3
Each port is a netdev and can be paired with using -netdev id=<port name>.
Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Acked-by: Scott Feldman <sfeldma@gmail.com>
Acked-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David Ahern <dsahern@gmail.com>
Message-id: 1426306173-24884-7-git-send-email-sfeldma@gmail.com
rocker: fix clang compiler errors
Consolidate all forward typedef declarations to rocker.h.
Signed-off-by: David Ahern <dsahern@gmail.com>
Acked-by: Scott Feldman <sfeldma@gmail.com>
Acked-by: Jiri Pirko <jiri@resnulli.us>
rocker: add support for flow modification
We had support for flow add/del. This adds support for flow mod. I needed
this for L3 support where an existing route is modified using NLM_F_REPLACE.
For example:
ip route add 12.0.0.0/30 nexthop via 11.0.0.1 dev swp1
ip route change 12.0.0.0/30 nexthop via 11.0.0.9 dev swp2
The first cmd adds the route. The second cmd changes the existing route by
changing its nexthop info.
In the device, a mod operation results in the matching flow enty being modified
with the new settings. This is atomic to the device.
Signed-off-by: Scott Feldman <sfeldma@gmail.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2015-03-14 07:09:30 +03:00
|
|
|
|
|
|
|
common-obj-$(CONFIG_ROCKER) += rocker/rocker.o rocker/rocker_fp.o \
|
|
|
|
rocker/rocker_desc.o rocker/rocker_world.o \
|
|
|
|
rocker/rocker_of_dpa.o
|
2015-06-11 04:21:21 +03:00
|
|
|
obj-$(call lnot,$(CONFIG_ROCKER)) += rocker/qmp-norocker.o
|