From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f53.google.com (mail-wm0-f53.google.com [74.125.82.53]) by dpdk.org (Postfix) with ESMTP id E22B17D02 for ; Mon, 29 May 2017 15:42:46 +0200 (CEST) Received: by mail-wm0-f53.google.com with SMTP id m7so19882805wmg.0 for ; Mon, 29 May 2017 06:42:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+eFD9D0ufcXx3OiA3ouP8BB4H1nHlBWiWCqnbGE4dPI=; b=nNh83B+lEzXOJMlJOKRnD7q1POAyAMBWWbSMqz+1NUK2OPLa+RuOqyYCCbP5opeWZA 1mGuauMxUSW/Fn/TbviqvSBvflqWEj0AGwE3Yh7c5lbC5R6vdMyHcWatftOAGGOsf5hY aTbbvqXR2R6NiZB5AV6zdboTpYSYgZ2G5s4L1T46bPpLlrEc8fi8bap1bcOcgkqv5h3O QDvMtaVSkwoUFW1SIImDb+g6RwRa5byO17VhDE3ngC1v6x1f3WqaoUHn/WsRsYsRUWYa KKKmmbAXkrIfBUGWdv4FWybV6BP6Cbpqu2LQ7vz2RZpvrC7gHEMzMNp9FSddEG9MrIvI C5uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=+eFD9D0ufcXx3OiA3ouP8BB4H1nHlBWiWCqnbGE4dPI=; b=o6H8KLOO6fGhT2Atr9WUidGbdKW1LRkfK8i6c6LYAvUk8hCW2szwncObvYSqdsp5Fw iS2zBA8Hlq66d0L0PAxVJcJKaqtsgJQgZtp7TmzsKqN1pvS2InaNOJJr+mb3NmMNo1V7 DOR3Vv5a4pweV3H4Dt4ARLELAwyA5MnEFThQD+kWVsIggTSDKvVlYQjB3LfpWGGushJN vot6jDVsI0/uGBWFBlQq4PLy7vjAkfyKBrDR2U1H/Pq55AQkJW3a/Cul/Mcer39uwhZ3 Fk86ekulVSKafgS9XI+9KWifV8Gn+adG3v5ogJa4hwN1K5M59rzpq1AsVrw0r6QGUzYL fPaw== X-Gm-Message-State: AODbwcAxHXB/tfDGhPLbvngIyEISfia5plpYMHnGCtggPJqNXlT0O100 745yFJxtSweI0XH34YU= X-Received: by 10.28.57.6 with SMTP id g6mr23181507wma.112.1496065366056; Mon, 29 May 2017 06:42:46 -0700 (PDT) Received: from bidouze.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id l8sm12906671wmd.8.2017.05.29.06.42.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 29 May 2017 06:42:44 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: Gaetan Rivet Date: Mon, 29 May 2017 15:42:12 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [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: Mon, 29 May 2017 13:42:47 -0000 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 -- 2.1.4