From patchwork Wed Feb 22 09:57:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?N=C3=A9lio_Laranjeiro?= X-Patchwork-Id: 20664 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id A2E902B88; Wed, 22 Feb 2017 10:58:19 +0100 (CET) Received: from mail-wr0-f174.google.com (mail-wr0-f174.google.com [209.85.128.174]) by dpdk.org (Postfix) with ESMTP id 5E99D2B88 for ; Wed, 22 Feb 2017 10:58:17 +0100 (CET) Received: by mail-wr0-f174.google.com with SMTP id z61so4490847wrc.1 for ; Wed, 22 Feb 2017 01:58:17 -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; bh=o9q48sC2IkeSAYIErvHoQEC5JZZnYHEI/4t7j2g+qn8=; b=bb7UVH4zYoovfABG5M8cg05h5s9in7j9QMT0Gt7ip0GpYo0mKZtVNhFm0IBXhbp5S8 r0vXQ/fXzmDLYX3s5dJIPszXBZcB1xcc1RMkLFmhEQJvOTNVyJXCYP+g0dUfkfl3l46Z EgxJXnDGFhLcmfUPkSGXuywc4va+FDTg8Oaenv0RvKbcszXffgV23FM7v91Gha79Chxw ZzfR8NmJAYh+GySTPpPUksCUoC/R7Ijum6xB2EimCDs0SeUQlYBgrDc97eic41YtaYHz V4JjAJU6kwtoE8Qs8uNMbbyPawCAx92kwN9jBRnje/kI9ZL8N3EOvTrg0Pxrgpc73jui zsGA== 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; bh=o9q48sC2IkeSAYIErvHoQEC5JZZnYHEI/4t7j2g+qn8=; b=owOAod0wJGTOhoK45erg9Yxs3/evRCCchE1RDY9rNcdEFpb66UX1RK5W8SmAZbF7aK hOZg1LVEpEtfatYFHNWfrln0JXWPvC4Gq7iKyqhExkO+yCefAGMj5ePc2ZnVhUY6nz+7 Mtkyf/Jv4x0WexQCKfUGSD28gP/REBky4ZBCi0yKGyl24gcE5P7LdU+vSDwXJMtiXbqA tcWBLfe156mSRVcwQnzS/Iu304eDJAVZDPuJX28I7s3BjstIgont8eRYs91y4G7CyveW x3CcVOhRyg5STkp/zdLmqrOa4v8jwknHvjDh2TF0v0dflZYLcPqhsPv45rl7CboQi/Gt zf4w== X-Gm-Message-State: AMke39mKOMQdvMCRW6cQwnk61Zh2GQj5yFeaJD+GOp5dajWxYsUW37jfgwptNIjTYCfDKc3v X-Received: by 10.223.155.135 with SMTP id d7mr21639696wrc.99.1487757496902; Wed, 22 Feb 2017 01:58:16 -0800 (PST) Received: from ping.vm.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id s26sm1062330wra.26.2017.02.22.01.58.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 22 Feb 2017 01:58:16 -0800 (PST) From: Nelio Laranjeiro To: dev@dpdk.org Cc: Adrien Mazarguil , stable@dpdk.org Date: Wed, 22 Feb 2017 10:57:52 +0100 Message-Id: <26de01836a8fa17050f44aed05ccda3853773c78.1487757419.git.nelio.laranjeiro@6wind.com> X-Mailer: git-send-email 2.1.4 Subject: [dpdk-dev] [PATCH] net/mlx5: fix startup when flow cannot be applied 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" When flows cannot be re-applied due to configuration modifications, the start function should rollback the configuration done. Fixes: 2097d0d1e2cc ("net/mlx5: support basic flow items and actions") Cc: stable@dpdk.org Signed-off-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_trigger.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index 30addd2..683b57c 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -82,17 +82,28 @@ mlx5_dev_start(struct rte_eth_dev *dev) ERROR("%p: an error occurred while configuring hash RX queues:" " %s", (void *)priv, strerror(err)); - /* Rollback. */ - priv_special_flow_disable_all(priv); - priv_mac_addrs_disable(priv); - priv_destroy_hash_rxqs(priv); + goto error; } if (dev->data->dev_conf.fdir_conf.mode != RTE_FDIR_MODE_NONE) priv_fdir_enable(priv); - priv_dev_interrupt_handler_install(priv, dev); err = priv_flow_start(priv); + if (!err) { + priv->started = 0; + ERROR("%p: an error occurred while configuring flows:" + " %s", + (void *)priv, strerror(err)); + goto error; + } + priv_dev_interrupt_handler_install(priv, dev); priv_xstats_init(priv); priv_unlock(priv); + return 0; +error: + /* Rollback. */ + priv_special_flow_disable_all(priv); + priv_mac_addrs_disable(priv); + priv_destroy_hash_rxqs(priv); + priv_flow_stop(priv); return -err; }