All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: sfeldma@gmail.com, qemu-devel@nongnu.org, jiri@resnulli.us,
	roopa@cumulusnetworks.com, john.fastabend@gmail.com
Subject: Re: [Qemu-devel] [PATCH 00/10] rocker: add new rocker ethernet switch device
Date: Sun, 04 Jan 2015 17:47:31 +0800	[thread overview]
Message-ID: <54A90C33.8040705@redhat.com> (raw)
In-Reply-To: <1419916451-49258-1-git-send-email-sfeldma@gmail.com>


On 12/30/2014 01:14 PM, sfeldma@gmail.com wrote:
> From: Scott Feldman <sfeldma@gmail.com>
>
> [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?

Thanks

  parent reply	other threads:[~2015-01-04  9:47 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-30  5:14 [Qemu-devel] [PATCH 00/10] rocker: add new rocker ethernet switch device sfeldma
2015-01-02 14:41 ` Stefan Hajnoczi
2015-01-04  9:47 ` Jason Wang [this message]
2015-01-04 20:15   ` 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=54A90C33.8040705@redhat.com \
    --to=jasowang@redhat.com \
    --cc=jiri@resnulli.us \
    --cc=john.fastabend@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.