From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52505) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y73Pj-0003NK-Bx for qemu-devel@nongnu.org; Fri, 02 Jan 2015 09:41:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y73Pf-0006Gg-89 for qemu-devel@nongnu.org; Fri, 02 Jan 2015 09:41:19 -0500 Received: from mail-wi0-x233.google.com ([2a00:1450:400c:c05::233]:53893) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y73Pe-0006Ga-U4 for qemu-devel@nongnu.org; Fri, 02 Jan 2015 09:41:15 -0500 Received: by mail-wi0-f179.google.com with SMTP id ex7so27860907wid.12 for ; Fri, 02 Jan 2015 06:41:14 -0800 (PST) Date: Fri, 2 Jan 2015 14:41:11 +0000 From: Stefan Hajnoczi Message-ID: <20150102144111.GO10823@stefanha-thinkpad.redhat.com> References: <1419916451-49258-1-git-send-email-sfeldma@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="w6U88vdWm8UqIXvc" Content-Disposition: inline In-Reply-To: <1419916451-49258-1-git-send-email-sfeldma@gmail.com> Subject: Re: [Qemu-devel] [PATCH 00/10] rocker: add new rocker ethernet switch device List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: sfeldma@gmail.com Cc: jasowang@redhat.com, john.fastabend@gmail.com, roopa@cumulusnetworks.com, jiri@resnulli.us, qemu-devel@nongnu.org --w6U88vdWm8UqIXvc Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Dec 29, 2014 at 09:14:01PM -0800, sfeldma@gmail.com wrote: > From: Scott Feldman >=20 > [This is a collaboration between myself and Jiri Pirko]. >=20 > 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 i= n 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 offlo= ading > of L3 routing functions and ACLs, as well as support for a flow-based mod= es, > such as OpenVSwitch with OpenFlow. Future support for terminating L2-ove= r-L3 > tunnels is also planned. >=20 > The core network processing functions are based on the spec of a real dev= ice: > Broadcom's OF-DPA. Specifically, rocker borrows OF-DPA's network process= ing > 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. >=20 > 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 thems= elves > 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 forwa= rding > 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). T= he > slow path for control packets will forward packets to the CPU via the dev= ice > driver for host OS processing. >=20 > A QMP/HMP interface is added to give inside into the device's internal po= rt > configuration and flow/group tables. >=20 > A test directory is included with some basic sanity tests to verify the d= evice > and driver. >=20 > 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 >=20 > 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 CCing Jason Wang, who may also be interested in reviewing this series. Stefan --w6U88vdWm8UqIXvc Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJUpq4HAAoJEJykq7OBq3PInUQH/1eOfLG6undsUlZNmzhl3UMP dHlI9g22HAczJq00mKauwhDQyK5zxQahQbAveXbREmIJ549HevDNXxsz84TZVuob bfq/QAtBRs6AzrBIOtZ6STtSPRjMj5RvIBoJQpwRk69YzXWubIsuOz2TzPSdZgBS o8LWZ9wqsDW+vGOOpgwVPfFxMfgOkPi832biC3JQZZtHt3h4eR76ilhppVqnqwHt DBA51l3Sd1UtVDEdNeSlRj6IZmqfDXaY+7gU5DtPwJkiWIkkwMp7A+fL2Zz6D2Ob 7C/+Gc92qY0VNgBw6/BYnp+Y+Yv8zHg7Ozseh3daGeEJOYFHAypFovQL+JkDbQ4= =y1tt -----END PGP SIGNATURE----- --w6U88vdWm8UqIXvc--