From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f181.google.com (mail-wr0-f181.google.com [209.85.128.181]) by dpdk.org (Postfix) with ESMTP id 1274D3DC for ; Wed, 8 Mar 2017 16:16:03 +0100 (CET) Received: by mail-wr0-f181.google.com with SMTP id u48so25597881wrc.0 for ; Wed, 08 Mar 2017 07:16:03 -0800 (PST) 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=025wPVbmzdaRFYFZa4Y3zt7hDDMh1eb0i2ZAMT054o8=; b=L1iTCtsft7OZpvAmlY8L//TiYvzaDD8Y/e02Z1uh4nqtdVHaJbiZI/41B7DeRxgISE 6ahlJVERkUaGS8EKmpSuoC8rhue9AwP2IU2AmfgX6krspJUkzdjaKbdJ29/QqUSMsYfG l6ry7k0YopZqKvL2Sj6guMDNPbvvI/5CqWLyVWk8bYYjeoGpxIjNsm0kG3TT2QcGi/VI xznkC3eBcU9WIlTXVVgIPW453KFvQ0IZUjRaklyv7pv0emq752zkwnA6JigR3NtZ2EQt 1sasmZoaF9QJ1GhATlxzaQOFwEAhgkkWY8OOn/HT5vEMyy0e5Z2Mkdvx4yNyhobdOUYv t6WA== 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=025wPVbmzdaRFYFZa4Y3zt7hDDMh1eb0i2ZAMT054o8=; b=JvLklDrTehW5ugJSXBOu64yz4qE4YrHbN5BjIgJt4X7L/NPnaeQ+f86AGLMFADfoVX nW6FhXAsHSdqRmY7Qi2MgZUjYSUaXSCjnB25C/FT2m6frFZ5SN8zfg59Snkxp87d4IRC gt/994J38KUIJzlm8NS1CRBLPbJVhZ7r6CeQI9TFIxJeGivTHksW3dyRduZOnMeL5+bX HXdXGjBe+HOAKKKDzJRp3YZ99IIDhp6KlJT7rpbXfQAg2nTbt1+CdvWNk82Z1eTW1lYB X6Ild+Y/gdO6TXVK2USM0H82IS/zqTy4sDn90dv2SJbANgRTuASjDsajIjfVoAO6LCbw tnOQ== X-Gm-Message-State: AMke39kMsba6HzE+9cAnBrU2QfPUKlIG/8adqiGvTkWUU/zrJmZ54K4Ks7n9dsz/j8ULtBmx X-Received: by 10.223.163.70 with SMTP id d6mr5670012wrb.71.1488986163423; Wed, 08 Mar 2017 07:16:03 -0800 (PST) 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 t103sm4553592wrc.43.2017.03.08.07.16.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 08 Mar 2017 07:16:02 -0800 (PST) From: Gaetan Rivet To: dev@dpdk.org Cc: Thomas Monjalon , Adrien Mazarguil Date: Wed, 8 Mar 2017 16:15:33 +0100 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2 00/13] 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, 08 Mar 2017 15:16:04 -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 series depends on the series [PATCH 0/4] clarify eth_dev state management [PATCH 0/5] add device removal event v1 --> v2: - Wrote documentation - Fixed commit logs, signed-off-by - Added LSC event support - A few minor fixes Gaetan Rivet (13): ethdev: save VLAN filter setting ethdev: add flow API rule copy function ethdev: add deferred intermediate device state pci: expose device detach routine pci: expose parse and probe routines 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 MAINTAINERS | 5 + app/test-pmd/config.c | 263 ++----- app/test-pmd/testpmd.h | 5 +- config/common_base | 5 + doc/guides/nics/fail_safe.rst | 182 +++++ doc/guides/nics/features/failsafe.ini | 32 + doc/guides/nics/index.rst | 1 + drivers/net/Makefile | 1 + drivers/net/failsafe/Makefile | 74 ++ drivers/net/failsafe/failsafe.c | 299 ++++++++ drivers/net/failsafe/failsafe_args.c | 503 ++++++++++++++ drivers/net/failsafe/failsafe_eal.c | 300 ++++++++ drivers/net/failsafe/failsafe_ether.c | 394 +++++++++++ drivers/net/failsafe/failsafe_flow.c | 230 +++++++ drivers/net/failsafe/failsafe_ops.c | 867 ++++++++++++++++++++++++ drivers/net/failsafe/failsafe_private.h | 329 +++++++++ drivers/net/failsafe/failsafe_rxtx.c | 184 +++++ lib/librte_eal/bsdapp/eal/rte_eal_version.map | 6 + lib/librte_eal/common/eal_common_pci.c | 16 +- lib/librte_eal/common/include/rte_pci.h | 40 ++ lib/librte_eal/linuxapp/eal/eal_pci.c | 39 +- lib/librte_eal/linuxapp/eal/rte_eal_version.map | 7 + lib/librte_ether/rte_ethdev.c | 22 +- lib/librte_ether/rte_ethdev.h | 11 + lib/librte_ether/rte_flow.c | 283 ++++++++ lib/librte_ether/rte_flow.h | 59 ++ mk/rte.app.mk | 1 + 27 files changed, 3910 insertions(+), 248 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