qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 00/10] rocker: add new rocker ethernet switch de


From: Scott Feldman
Subject: Re: [Qemu-devel] [PATCH 00/10] rocker: add new rocker ethernet switch device
Date: Sun, 4 Jan 2015 12:15:45 -0800

On Sun, Jan 4, 2015 at 1:47 AM, Jason Wang <address@hidden> wrote:
>
> On 12/30/2014 01:14 PM, address@hidden wrote:
>> From: Scott Feldman <address@hidden>
>>
>> [This is a collaboration between myself and Jiri Pirko].
>>
>> This patch set adds a new ethernet switch device, called rocker.  Rocker is
>> intended to emulate HW features of switch ASICs found in today's
>> data-center-class switch/routers.  The original motivation in creating a new
>> device is to accelerate device driver development for ethernet switches in 
>> the
>> Linux kernel.  A device driver for rocker already exists in the Linux 3.18
>> kernel and loads against this device.  Basic L2 switching (bridging)
>> functionality is offloaded to the device.  Work continues to enable 
>> offloading
>> of L3 routing functions and ACLs, as well as support for a flow-based modes,
>> such as OpenVSwitch with OpenFlow.  Future support for terminating L2-over-L3
>> tunnels is also planned.
>>
>> The core network processing functions are based on the spec of a real device:
>> Broadcom's OF-DPA.  Specifically, rocker borrows OF-DPA's network processing
>> pipeline comprised of flow match and action tables.  Only the OF-DPA spec was
>> used in constructing rocker.  The rocker developers do not have access to the
>> real OF-DPA's software source code, so this is a clean-room, ground-up
>> development.
>>
>> Each rocker device is a PCI device with a memory-mapped register space and
>> MSI-X interrupts for command and event processing, as well as CPU-bound I/O.
>> Each device can support up to 62 "front-panel" ports, which present 
>> themselves
>> as -netdev attachment points.  The device is programmed using OF-DPA flow and
>> group tables to setup the flow pipeline.  The programming defines the
>> forwarding path for packets ingressing on 'front-panel' ports.  The 
>> forwarding
>> path can look at L2/L3/L4 packet header to forward the packet to its
>> destination.  For the performance path, packets would ingress and egress only
>> on the device, and not be passed up to the device driver (or host OS).  The
>> slow path for control packets will forward packets to the CPU via the device
>> driver for host OS processing.
>>
>> A QMP/HMP interface is added to give inside into the device's internal port
>> configuration and flow/group tables.
>>
>> A test directory is included with some basic sanity tests to verify the 
>> device
>> and driver.
>>
>> Scott Feldman (10):
>>   pci: move REDHAT_SDHCI device ID to make room for Rocker
>>   net: add MAC address string printer
>>   virtio-net: use qemu_mac_strdup_printf
>>   rocker: add register programming guide
>>   pci: add rocker device ID
>>   pci: add network device class 'other' for network switches
>>   rocker: add new rocker switch device
>>   qmp: add rocker device support
>>   rocker: add tests
>>   MAINTAINERS: add rocker
>>
>>  MAINTAINERS                        |    6 +
>>  default-configs/pci.mak            |    1 +
>>  docs/specs/pci-ids.txt             |    3 +-
>>  hmp-commands.hx                    |   56 +
>>  hmp.c                              |  303 +++++
>>  hmp.h                              |    4 +
>>  hw/net/Makefile.objs               |    3 +
>>  hw/net/rocker/reg_guide.txt        |  957 +++++++++++++
>>  hw/net/rocker/rocker.c             | 1440 ++++++++++++++++++++
>>  hw/net/rocker/rocker.h             |   76 ++
>>  hw/net/rocker/rocker_desc.c        |  379 ++++++
>>  hw/net/rocker/rocker_desc.h        |   57 +
>>  hw/net/rocker/rocker_fp.c          |  243 ++++
>>  hw/net/rocker/rocker_fp.h          |   54 +
>>  hw/net/rocker/rocker_hw.h          |  475 +++++++
>>  hw/net/rocker/rocker_of_dpa.c      | 2644 
>> ++++++++++++++++++++++++++++++++++++
>>  hw/net/rocker/rocker_of_dpa.h      |   25 +
>>  hw/net/rocker/rocker_tlv.h         |  247 ++++
>>  hw/net/rocker/rocker_world.c       |  108 ++
>>  hw/net/rocker/rocker_world.h       |   63 +
>>  hw/net/rocker/test/README          |    5 +
>>  hw/net/rocker/test/all             |   19 +
>>  hw/net/rocker/test/bridge          |   43 +
>>  hw/net/rocker/test/bridge-stp      |   52 +
>>  hw/net/rocker/test/bridge-vlan     |   52 +
>>  hw/net/rocker/test/bridge-vlan-stp |   64 +
>>  hw/net/rocker/test/port            |   22 +
>>  hw/net/rocker/test/tut.dot         |    8 +
>>  hw/net/virtio-net.c                |   12 +-
>>  include/hw/pci/pci.h               |    3 +-
>>  include/hw/pci/pci_ids.h           |    1 +
>>  include/net/net.h                  |    1 +
>>  net/net.c                          |    7 +
>>  qapi-schema.json                   |   51 +
>>  qmp-commands.hx                    |   24 +
>>  35 files changed, 7497 insertions(+), 11 deletions(-)
>>  create mode 100644 hw/net/rocker/reg_guide.txt
>>  create mode 100644 hw/net/rocker/rocker.c
>>  create mode 100644 hw/net/rocker/rocker.h
>>  create mode 100644 hw/net/rocker/rocker_desc.c
>>  create mode 100644 hw/net/rocker/rocker_desc.h
>>  create mode 100644 hw/net/rocker/rocker_fp.c
>>  create mode 100644 hw/net/rocker/rocker_fp.h
>>  create mode 100644 hw/net/rocker/rocker_hw.h
>>  create mode 100644 hw/net/rocker/rocker_of_dpa.c
>>  create mode 100644 hw/net/rocker/rocker_of_dpa.h
>>  create mode 100644 hw/net/rocker/rocker_tlv.h
>>  create mode 100644 hw/net/rocker/rocker_world.c
>>  create mode 100644 hw/net/rocker/rocker_world.h
>>  create mode 100644 hw/net/rocker/test/README
>>  create mode 100755 hw/net/rocker/test/all
>>  create mode 100755 hw/net/rocker/test/bridge
>>  create mode 100755 hw/net/rocker/test/bridge-stp
>>  create mode 100755 hw/net/rocker/test/bridge-vlan
>>  create mode 100755 hw/net/rocker/test/bridge-vlan-stp
>>  create mode 100755 hw/net/rocker/test/port
>>  create mode 100644 hw/net/rocker/test/tut.dot
>>
>
> Hi:
>
> Did you have a git tree for us to review or play?

I do, it's at https://github.com/scottfeldman/qemu-rocker.git.  The
Qemu bits are 2.1.12, so it's a little stale, but fine for rocker
review purposes.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]