qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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 v8 0/9] rocker: add new rocker ethernet switch device
Date: Mon, 30 Mar 2015 15:52:13 +0100	[thread overview]
Message-ID: <20150330145213.GL25181@stefanha-thinkpad.redhat.com> (raw)
In-Reply-To: <1426306173-24884-1-git-send-email-sfeldma@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 7661 bytes --]

On Fri, Mar 13, 2015 at 09:09:24PM -0700, sfeldma@gmail.com wrote:
> From: Scott Feldman <sfeldma@gmail.com>
> 
> v8:
> 
>  - From Stefan Hajnoczi's net-pull-request v3, merge in these changes:
>      - Squash David Ahern's clang struct definition warnings fix
>      - Squash in Jiri's fix for rocker format string specifiers [Peter]
>      - Squash in Windows build fix [Peter]
> 
>  - In addition, fix 2 compile warnings from net-pull-request v4:
>      - Fix compile issue for min glibc 2.12
>      - w32: fix 64 bit constant without ULL suffix
> 
> v7:
> 
>  - Per Stefan Hajnoczi comments:
>      - #ifdef CONFIG_ROCKER wrapper around qmp/hmp to fix compile when PCI is
>        disabled or rocker is disabled.
> 
> v6:
> 
>  - Per Stefan Hajnoczi review:
>      - Move tests to tests/rocker
>      - Fix some mem leaks
>      - Fix doc grammer/spelling
>  - Per Eric Blake review:
>      - Add #optional to optional args comments in qmp interface
>      - Add "query-" prefix to qmp cmds
>      - Fix doc grammer/spelling
> 
> 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 (8):
>   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
>   rocker: add tests
>   MAINTAINERS: add rocker
> 
>  MAINTAINERS                   |    6 +
>  default-configs/pci.mak       |    1 +
>  docs/specs/pci-ids.txt        |    1 +
>  docs/specs/rocker.txt         | 1009 ++++++++++++++++++
>  hw/net/Makefile.objs          |    4 +
>  hw/net/rocker/rocker.c        | 1480 ++++++++++++++++++++++++++
>  hw/net/rocker/rocker.h        |   84 ++
>  hw/net/rocker/rocker_desc.c   |  377 +++++++
>  hw/net/rocker/rocker_desc.h   |   53 +
>  hw/net/rocker/rocker_fp.c     |  234 +++++
>  hw/net/rocker/rocker_fp.h     |   51 +
>  hw/net/rocker/rocker_hw.h     |  491 +++++++++
>  hw/net/rocker/rocker_of_dpa.c | 2315 +++++++++++++++++++++++++++++++++++++++++
>  hw/net/rocker/rocker_of_dpa.h |   22 +
>  hw/net/rocker/rocker_tlv.h    |  244 +++++
>  hw/net/rocker/rocker_world.c  |  106 ++
>  hw/net/rocker/rocker_world.h  |   60 ++
>  hw/net/virtio-net.c           |   12 +-
>  include/hw/pci/pci.h          |    1 +
>  include/hw/pci/pci_ids.h      |    1 +
>  include/net/net.h             |    1 +
>  net/net.c                     |    7 +
>  tests/rocker/README           |    5 +
>  tests/rocker/all              |   19 +
>  tests/rocker/bridge           |   48 +
>  tests/rocker/bridge-stp       |   57 +
>  tests/rocker/bridge-vlan      |   57 +
>  tests/rocker/bridge-vlan-stp  |   69 ++
>  tests/rocker/port             |   22 +
>  tests/rocker/tut.dot          |    8 +
>  30 files changed, 6836 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 tests/rocker/README
>  create mode 100755 tests/rocker/all
>  create mode 100755 tests/rocker/bridge
>  create mode 100755 tests/rocker/bridge-stp
>  create mode 100755 tests/rocker/bridge-vlan
>  create mode 100755 tests/rocker/bridge-vlan-stp
>  create mode 100755 tests/rocker/port
>  create mode 100644 tests/rocker/tut.dot
> 
> -- 
> 1.7.10.4
> 

Applied to net-next for QEMU 2.4.  Due to the build issues that have
been experienced, I'm less confident about pushing this into QEMU 2.3
right before release.

If there is a strong reason to get it into QEMU 2.3, please let me know.

Thanks, applied to my net-next tree:
https://github.com/stefanha/qemu/commits/net-next

Stefan

[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]

  parent reply	other threads:[~2015-03-30 14:52 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-14  4:09 [Qemu-devel] [PATCH v8 0/9] rocker: add new rocker ethernet switch device sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 1/9] net: add MAC address string printer sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 2/9] virtio-net: use qemu_mac_strdup_printf sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 3/9] rocker: add register programming guide sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 4/9] pci: add rocker device ID sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 5/9] pci: add network device class 'other' for network switches sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 6/9] rocker: add new rocker switch device sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 7/9] rocker: add tests sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 8/9] MAINTAINERS: add rocker sfeldma
2015-03-14  4:09 ` [Qemu-devel] [PATCH v8 9/9] rocker: timestamp on the debug logs helps correlate with events in the VM sfeldma
2015-03-26  7:47 ` [Qemu-devel] [PATCH v8 0/9] rocker: add new rocker ethernet switch device Scott Feldman
2015-03-30 14:52 ` Stefan Hajnoczi [this message]
2015-03-30 16:59   ` Scott Feldman

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=20150330145213.GL25181@stefanha-thinkpad.redhat.com \
    --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).