]> git.proxmox.com Git - mirror_qemu.git/commit - hw/net/Makefile.objs
rocker: add new rocker switch device
authorScott Feldman <sfeldma@gmail.com>
Sat, 14 Mar 2015 04:09:30 +0000 (21:09 -0700)
committerStefan Hajnoczi <stefanha@redhat.com>
Mon, 11 May 2015 13:49:04 +0000 (14:49 +0100)
commitdc488f888060afdc129e0cc8812cf50c4c083423
treee0f534912a160080fa7cbb726894b6a02c1ff2b2
parentdc407ae8a75d03cf48e114d3812d077fa29a8bd9
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>
14 files changed:
default-configs/pci.mak
hw/net/Makefile.objs
hw/net/rocker/rocker.c [new file with mode: 0644]
hw/net/rocker/rocker.h [new file with mode: 0644]
hw/net/rocker/rocker_desc.c [new file with mode: 0644]
hw/net/rocker/rocker_desc.h [new file with mode: 0644]
hw/net/rocker/rocker_fp.c [new file with mode: 0644]
hw/net/rocker/rocker_fp.h [new file with mode: 0644]
hw/net/rocker/rocker_hw.h [new file with mode: 0644]
hw/net/rocker/rocker_of_dpa.c [new file with mode: 0644]
hw/net/rocker/rocker_of_dpa.h [new file with mode: 0644]
hw/net/rocker/rocker_tlv.h [new file with mode: 0644]
hw/net/rocker/rocker_world.c [new file with mode: 0644]
hw/net/rocker/rocker_world.h [new file with mode: 0644]