From: Stefan Hajnoczi <stefanha@gmail.com>
To: sfeldma@gmail.com
Cc: jiri@resnulli.us, roopa@cumulusnetworks.com,
john.fastabend@gmail.com, qemu-devel@nongnu.org,
dsahern@gmail.com, pbonzini@redhat.com, jasowang@redhat.com
Subject: Re: [Qemu-devel] [PATCH v5 00/10] rocker: add new rocker ethernet switch device
Date: Mon, 2 Feb 2015 18:13:24 +0100 [thread overview]
Message-ID: <20150202171324.GE10862@stefanha-thinkpad> (raw)
In-Reply-To: <1421913839-22448-1-git-send-email-sfeldma@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 7139 bytes --]
On Thu, Jan 22, 2015 at 12:03:49AM -0800, sfeldma@gmail.com wrote:
> From: Scott Feldman <sfeldma@gmail.com>
>
> v5:
>
> - Per Jason Wang review:
> - Fix some missing/wrong references in the rocker.txt spec
> - mark rocker as unmigratable.
>
> v4:
>
> - Per Paolo Bonzini review:
> - move reg_guide.txt to docs/specs/rocker.txt
> - fix some spelling/grammer mistakes in the rocker.txt doc
> - fix some misleading/wrong statements in rocker.txt
> - add double 4-byte access for 64-bit registers
> - define new ROCKER_Exxx to replace usage of errno.h return codes
> - Add patch from David Ahern to timestamp debug output
>
> v3:
>
> - Per Stefan Hajnoczi review:
> - move HMP rocker cmds to "info rocker"
> - prefix QMP rocker cmds with query-
> - tag QMP cmds as "Since 2.3"
> - convert structs to typedef with CamelCase naming
> - Remove SDHCI device ID move patch...Paolo Bonzini is addressing
> SDHCI move is separate patch.
>
> v2:
>
> - Address reg_guide.txt review comments from Eric Blake
> - Address QMP review comments from Eric Blake
>
> v1:
>
> [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.
>
> David Ahern (1):
> rocker: timestamp on the debug logs helps correlate with events in
> the VM
>
> Scott Feldman (9):
> 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 | 1 +
> docs/specs/rocker.txt | 1006 ++++++++++++++
> hmp-commands.hx | 24 +
> hmp.c | 303 +++++
> hmp.h | 4 +
> hw/net/Makefile.objs | 3 +
> hw/net/rocker/rocker.c | 1517 +++++++++++++++++++++
> hw/net/rocker/rocker.h | 85 ++
> hw/net/rocker/rocker_desc.c | 379 ++++++
> hw/net/rocker/rocker_desc.h | 57 +
> hw/net/rocker/rocker_fp.c | 242 ++++
> hw/net/rocker/rocker_fp.h | 54 +
> hw/net/rocker/rocker_hw.h | 491 +++++++
> hw/net/rocker/rocker_of_dpa.c | 2622 ++++++++++++++++++++++++++++++++++++
> hw/net/rocker/rocker_of_dpa.h | 25 +
> hw/net/rocker/rocker_tlv.h | 244 ++++
> 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 | 1 +
> include/hw/pci/pci_ids.h | 1 +
> include/net/net.h | 1 +
> monitor.c | 28 +
> net/net.c | 7 +
> qapi-schema.json | 3 +
> qapi/rocker.json | 259 ++++
> qmp-commands.hx | 97 ++
> 37 files changed, 7900 insertions(+), 9 deletions(-)
> create mode 100644 docs/specs/rocker.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
> create mode 100644 qapi/rocker.json
Thanks, this series is in good shape. I have left some final comments
including memory leaks and moving the test code (these are worth
fixing).
Looking forward to merging the next revision!
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
prev parent reply other threads:[~2015-02-03 9:43 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-22 8:03 [Qemu-devel] [PATCH v5 00/10] rocker: add new rocker ethernet switch device sfeldma
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 01/10] net: add MAC address string printer sfeldma
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 02/10] virtio-net: use qemu_mac_strdup_printf sfeldma
2015-02-03 16:19 ` Eric Blake
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 03/10] rocker: add register programming guide sfeldma
2015-02-02 16:16 ` Stefan Hajnoczi
2015-02-02 16:19 ` Stefan Hajnoczi
2015-02-03 11:08 ` Paolo Bonzini
2015-02-05 10:45 ` Stefan Hajnoczi
2015-02-05 6:29 ` Scott Feldman
2015-02-03 16:40 ` Eric Blake
2015-02-05 6:25 ` Scott Feldman
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 04/10] pci: add rocker device ID sfeldma
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 05/10] pci: add network device class 'other' for network switches sfeldma
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 06/10] rocker: add new rocker switch device sfeldma
2015-02-02 17:12 ` Stefan Hajnoczi
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 07/10] qmp: add rocker device support sfeldma
2015-02-03 15:10 ` Eric Blake
2015-02-05 6:10 ` Scott Feldman
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 08/10] rocker: add tests sfeldma
2015-02-02 16:36 ` Stefan Hajnoczi
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 09/10] MAINTAINERS: add rocker sfeldma
2015-01-22 8:03 ` [Qemu-devel] [PATCH v5 10/10] rocker: timestamp on the debug logs helps correlate with events in the VM sfeldma
2015-01-22 8:21 ` Jiri Pirko
2015-02-02 17:13 ` Stefan Hajnoczi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150202171324.GE10862@stefanha-thinkpad \
--to=stefanha@gmail.com \
--cc=dsahern@gmail.com \
--cc=jasowang@redhat.com \
--cc=jiri@resnulli.us \
--cc=john.fastabend@gmail.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=roopa@cumulusnetworks.com \
--cc=sfeldma@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).