From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9FAF8A051C for ; Tue, 11 Feb 2020 12:24:06 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 94B9C1BF87; Tue, 11 Feb 2020 12:24:06 +0100 (CET) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by dpdk.org (Postfix) with ESMTP id DBEEC1BF87 for ; Tue, 11 Feb 2020 12:24:05 +0100 (CET) Received: by mail-wr1-f68.google.com with SMTP id g3so10781805wrs.12 for ; Tue, 11 Feb 2020 03:24:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JNPhM8l0fW+aVfosL3XVZkghgaZK90el0bkGFd/d3Hg=; b=OxN+ek3mDLpKYJyGCDMlpU5tG2QISTsDcClWn5i0R2UXkxCQkTjrVB04+cNDH46djP 5HJb/SiD9H7dzP7QmJvulukOwgpgqLxEXIXhv5vjYPOMDYCxJYbwA3Ck5Vr5hYs6IT0O kpo15RCigWMLnilhWwS4p4ESypp+KiKyGSshiKZd2F36mjvaTLZs5cY9wJmni8yYVC9M Xd8KJpsK+44GOzMTqpqgNwzRwGJKuqS1/IncXE8mh2iyzhbaeptzBreDwxYlhzR7S+h3 WN9YrVxQsTYbcOgxmHLNSB06DgsVzsBE/G+RXSR//rkzGO54i2k2xi1S04+VX+4s/wFU KkMA== 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:mime-version:content-transfer-encoding; bh=JNPhM8l0fW+aVfosL3XVZkghgaZK90el0bkGFd/d3Hg=; b=WbnFOnJBEomdvfQfP+Eb9fKrBhor+F/ZEJ075/neceVf6huMSfBiFKnv0sqEBkm0Nj 6fZkgnJ34aIYfKqXMeWRcYym6AUS2JTBxTw/ooA1H/egLzxEpNKcdOVvg3+NsvWIVG6r 61FAmUSfOC/4QvUylllnyQ+CVoJKh72V2V65fLJN8fGnQKe1yVJZO+EVlOKrXyJ/jOlA glx1H6eRsJ8p4TLxVjiNGGe8mFUJeUvJBdP1jP/+E+Zz5XdZn8cvsIfOWGsFy8LF7yXr NgMhRF2/Z6O8U64THwho3amkPiHreWmcnl24+QRR2hwQu633WXSz8NSSEbmKyXKmP3Sp imMg== X-Gm-Message-State: APjAAAX+VHRkq2WuLCHU8fS4SrGpNlG4usU5BwGxQVjmpz3dkza7yKYO MjEnoKqev6ZXVEX8n20YjMg= X-Google-Smtp-Source: APXvYqyJq2uH/uig71+3FdQaeOttYUvUSV/tm62UTMr/lcTDjGjTiVrvGVHJ2Jjah4XMB1rSgeBSwQ== X-Received: by 2002:a05:6000:10d1:: with SMTP id b17mr8010956wrx.298.1581420245625; Tue, 11 Feb 2020 03:24:05 -0800 (PST) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id y20sm3226692wmi.25.2020.02.11.03.24.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Feb 2020 03:24:05 -0800 (PST) From: luca.boccassi@gmail.com To: Ciara Power Cc: Ferruh Yigit , dpdk stable Date: Tue, 11 Feb 2020 11:19:31 +0000 Message-Id: <20200211112216.3929-25-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200211112216.3929-1-luca.boccassi@gmail.com> References: <20200211112216.3929-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'app/testpmd: fix device mcast list error handling' has been queued to stable release 19.11.1 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/13/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From 64e14ce91ca077ba5696c1c79eac9523b1593d8e Mon Sep 17 00:00:00 2001 From: Ciara Power Date: Wed, 4 Dec 2019 16:38:15 +0000 Subject: [PATCH] app/testpmd: fix device mcast list error handling [ upstream commit c11562a1215aaff6651f9c59ef91ad0a53292571 ] The multicast set list function now has a return value, which is checked by the calling functions. A rollback occurs on detection of failure, to realign local config with the device config. The error print statement in the function had included the port_id and mc_addr_nb values in the wrong order, these are now swapped. Fixes: 8fff667578a7 ("app/testpmd: new command to add/remove multicast MAC addresses") Signed-off-by: Ciara Power Reviewed-by: Ferruh Yigit --- app/test-pmd/config.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index d599682788..8c86217796 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -3707,6 +3707,14 @@ mcast_addr_pool_extend(struct rte_port *port) } +static void +mcast_addr_pool_append(struct rte_port *port, struct rte_ether_addr *mc_addr) +{ + if (mcast_addr_pool_extend(port) != 0) + return; + rte_ether_addr_copy(mc_addr, &port->mc_addr_pool[port->mc_addr_nb - 1]); +} + static void mcast_addr_pool_remove(struct rte_port *port, uint32_t addr_idx) { @@ -3725,7 +3733,7 @@ mcast_addr_pool_remove(struct rte_port *port, uint32_t addr_idx) sizeof(struct rte_ether_addr) * (port->mc_addr_nb - addr_idx)); } -static void +static int eth_port_multicast_addr_list_set(portid_t port_id) { struct rte_port *port; @@ -3734,10 +3742,11 @@ eth_port_multicast_addr_list_set(portid_t port_id) port = &ports[port_id]; diag = rte_eth_dev_set_mc_addr_list(port_id, port->mc_addr_pool, port->mc_addr_nb); - if (diag == 0) - return; - printf("rte_eth_dev_set_mc_addr_list(port=%d, nb=%u) failed. diag=%d\n", - port->mc_addr_nb, port_id, -diag); + if (diag < 0) + printf("rte_eth_dev_set_mc_addr_list(port=%d, nb=%u) failed. diag=%d\n", + port_id, port->mc_addr_nb, diag); + + return diag; } void @@ -3762,10 +3771,10 @@ mcast_addr_add(portid_t port_id, struct rte_ether_addr *mc_addr) } } - if (mcast_addr_pool_extend(port) != 0) - return; - rte_ether_addr_copy(mc_addr, &port->mc_addr_pool[i]); - eth_port_multicast_addr_list_set(port_id); + mcast_addr_pool_append(port, mc_addr); + if (eth_port_multicast_addr_list_set(port_id) < 0) + /* Rollback on failure, remove the address from the pool */ + mcast_addr_pool_remove(port, i); } void @@ -3792,7 +3801,9 @@ mcast_addr_remove(portid_t port_id, struct rte_ether_addr *mc_addr) } mcast_addr_pool_remove(port, i); - eth_port_multicast_addr_list_set(port_id); + if (eth_port_multicast_addr_list_set(port_id) < 0) + /* Rollback on failure, add the address back into the pool */ + mcast_addr_pool_append(port, mc_addr); } void -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-02-11 11:17:40.064230402 +0000 +++ 0025-app-testpmd-fix-device-mcast-list-error-handling.patch 2020-02-11 11:17:38.336000150 +0000 @@ -1,8 +1,10 @@ -From c11562a1215aaff6651f9c59ef91ad0a53292571 Mon Sep 17 00:00:00 2001 +From 64e14ce91ca077ba5696c1c79eac9523b1593d8e Mon Sep 17 00:00:00 2001 From: Ciara Power Date: Wed, 4 Dec 2019 16:38:15 +0000 Subject: [PATCH] app/testpmd: fix device mcast list error handling +[ upstream commit c11562a1215aaff6651f9c59ef91ad0a53292571 ] + The multicast set list function now has a return value, which is checked by the calling functions. A rollback occurs on detection of failure, to realign local config with the device config. @@ -11,7 +13,6 @@ mc_addr_nb values in the wrong order, these are now swapped. Fixes: 8fff667578a7 ("app/testpmd: new command to add/remove multicast MAC addresses") -Cc: stable@dpdk.org Signed-off-by: Ciara Power Reviewed-by: Ferruh Yigit @@ -20,7 +21,7 @@ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c -index 4e1c3cab59..9da1ffb034 100644 +index d599682788..8c86217796 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -3707,6 +3707,14 @@ mcast_addr_pool_extend(struct rte_port *port)