From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg0-f50.google.com (mail-pg0-f50.google.com [74.125.83.50]) by dpdk.org (Postfix) with ESMTP id 591AA11C5 for ; Wed, 7 Jun 2017 19:30:21 +0200 (CEST) Received: by mail-pg0-f50.google.com with SMTP id f185so7516899pgc.0 for ; Wed, 07 Jun 2017 10:30:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/0bv22zgl+cauH7w7vivVab3tLYKRvK3hGpwYh53uJI=; b=XsIGYvcKivwI+EcWDpWF2ySxMTtr4Tm4MWXNY9+vIXHs5xN9/jJ67SH7w2QcwweFkC 8fBakPRUkwrWpeGir03kqQ9SeK2FuNjlhuz3nyywL0Ggut4UOXjKiIO0T6ye1coWiV52 /sPwPGHEQetHEYeQ9Dg2RHvhHY4KbfXVqQiVvenN5mk0/0YYQ8yDUmiGSaNDGU+cVhzp LPL6mDMgf7ju/XGi1CctQpBOcgGzVwUe8YdWOt84a8jgQCIkV6QEnnaAPgZ6ucGLebaX l/m4oYybdUK2nEnJRMj4QXKOsKENgebeU7Qai+vo4r1GIrtaJvlvsGRnHrVK5ysvqEVo Q7hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/0bv22zgl+cauH7w7vivVab3tLYKRvK3hGpwYh53uJI=; b=rjbVV21o7qIF56HRoekxOBfSUlfcTkKtyeGCm4ihq0BKNLVniwHmPqvTgMx3Dbk4Dm P4izTFRX0Bhy2Y/Q93Nt1Y+WpF08tBBNCzIu3M0PnpYOeCBETfS0U7lTD+DNvw/pg5p/ 7352Xo9yLlmrYXJSTUtAvfoeI2QzXbe5ui+OdNvdplji76Z+0+r9gK0TrsKnsCGOsiKi oPt9QmgEwAlXMKEuQTiJ02+jWbiv3f9zvUJn/L8e6VlrTIwRcklJNf5hy9X+b5ZnSOG4 Bjzh9Go048s52utymqG0NDS1bh6/b8RIyfU/D5BqXGCCqWjwauDdhWm6p0+JhLrzk6D2 ZtYg== X-Gm-Message-State: AODbwcCjLDJQIbGETjtW0OxTUkxsrUdwJcQExnvkghl43LvMtYyuNKob pG0pvKbXZKGjHJ8aGMz9rg== X-Received: by 10.98.194.132 with SMTP id w4mr32282581pfk.176.1496856620441; Wed, 07 Jun 2017 10:30:20 -0700 (PDT) Received: from xeon-e3 (76-14-207-240.or.wavecable.com. [76.14.207.240]) by smtp.gmail.com with ESMTPSA id o192sm4889059pfg.117.2017.06.07.10.30.19 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 07 Jun 2017 10:30:20 -0700 (PDT) Date: Wed, 7 Jun 2017 10:30:11 -0700 From: Stephen Hemminger To: Gaetan Rivet Cc: dev@dpdk.org Message-ID: <20170607103011.49495964@xeon-e3> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v4 00/12] introduce fail-safe PMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Jun 2017 17:30:21 -0000 On Mon, 29 May 2017 15:42:12 +0200 Gaetan Rivet wrote: > This PMD intercepts and manages Ethernet device removal events issued by > slave PMDs and re-initializes them transparently when brought back so that > existing applications do not need to be modified to benefit from true > hot-plugging support. > > The stacked PMD approach shares many similarities with the bonding PMD but > with a different purpose. While bonding provides the ability to group > several links into a single logical device for enhanced throughput and > supports fail-over at link level, this one manages the sudden disappearance > of the underlying device; it guarantees applications face a valid device in > working order at all times. > > Each fail-safe instance is configured to run atop one or several > devices, with one defined as the preferred device. Hot-plug events are > handled on all of them, and Tx is always directed to the preferred device > if present or to the next available failover device (Rx is always performed > on all devices for simplicity). > > Moreover, the configured slaves (preferred or failover) do not need to be > present at initialization time and may appear later. > > Slaves configuration is continuously synchronized with that of the virtual > device, which exposes their common set of capabilities to the application. > Failure to apply the current configuration state to a slave for any reason > simply reschedules its initialization. > > This patchset depends on: > > eal: complete attach / detach support > http://dpdk.org/ml/archives/dev/2017-May/066366.html > http://dpdk.org/dev/patchwork/patch/24522/ > > ethdev: add flow API rule copy function > http://dpdk.org/ml/archives/dev/2017-May/066145.html > http://dpdk.org/dev/patchwork/patch/24406/ > > ethdev: add isolated mode to flow API > http://dpdk.org/ml/archives/dev/2017-April/064327.html > http://dpdk.org/dev/patchwork/patch/23741/ > > v1 --> v2: > > - Wrote documentation > - Fixed commit logs, signed-off-by > - Added LSC event support > - A few minor fixes > > v2 --> v3: > > - Numerous bug fixes. > - Complete sub-EAL rework to follow new bus API. > - burst protection on sub removal. > - more flexible sub definition. > - flow isolated mode support. > > v3 --> v4: > > - Split back commits > net/failsafe: add fast burst functions > net/failsafe: support device removal > That were squashed by error during a rebase > - Fix segfault on port plugin > - Fix isolate mode support for MLX4 ports plugin > > Gaetan Rivet (12): > ethdev: save VLAN filter setting > ethdev: add deferred intermediate device state > ethdev: count devices consistently > net/failsafe: add fail-safe PMD > net/failsafe: add plug-in support > net/failsafe: add flexible device definition > net/failsafe: support flow API > net/failsafe: support offload capabilities > net/failsafe: add fast burst functions > net/failsafe: support device removal > net/failsafe: support link status change event > net/failsafe: support flow API isolation mode > > MAINTAINERS | 5 + > config/common_base | 6 + > doc/guides/nics/fail_safe.rst | 186 +++++++ > doc/guides/nics/features/failsafe.ini | 32 ++ > doc/guides/nics/index.rst | 1 + > drivers/net/Makefile | 2 + > drivers/net/failsafe/Makefile | 74 +++ > drivers/net/failsafe/failsafe.c | 305 +++++++++++ > drivers/net/failsafe/failsafe_args.c | 475 +++++++++++++++++ > drivers/net/failsafe/failsafe_eal.c | 140 +++++ > drivers/net/failsafe/failsafe_ether.c | 431 ++++++++++++++++ > drivers/net/failsafe/failsafe_flow.c | 245 +++++++++ > drivers/net/failsafe/failsafe_ops.c | 869 ++++++++++++++++++++++++++++++++ > drivers/net/failsafe/failsafe_private.h | 377 ++++++++++++++ > drivers/net/failsafe/failsafe_rxtx.c | 204 ++++++++ > lib/librte_ether/rte_ethdev.c | 38 +- > lib/librte_ether/rte_ethdev.h | 24 +- > mk/rte.app.mk | 1 + > 18 files changed, 3399 insertions(+), 16 deletions(-) > create mode 100644 doc/guides/nics/fail_safe.rst > create mode 100644 doc/guides/nics/features/failsafe.ini > create mode 100644 drivers/net/failsafe/Makefile > create mode 100644 drivers/net/failsafe/failsafe.c > create mode 100644 drivers/net/failsafe/failsafe_args.c > create mode 100644 drivers/net/failsafe/failsafe_eal.c > create mode 100644 drivers/net/failsafe/failsafe_ether.c > create mode 100644 drivers/net/failsafe/failsafe_flow.c > create mode 100644 drivers/net/failsafe/failsafe_ops.c > create mode 100644 drivers/net/failsafe/failsafe_private.h > create mode 100644 drivers/net/failsafe/failsafe_rxtx.c > Discussed in tech-board meeting and accepted for inclusion in 17.08 release. Longer term this driver would benefit from better hot plug support Reviewed-by: Stephen Hemminger