From patchwork Mon Sep 9 11:58:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Rybchenko X-Patchwork-Id: 58999 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 [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9308D1ECD9; Mon, 9 Sep 2019 13:59:25 +0200 (CEST) Received: from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com [148.163.129.52]) by dpdk.org (Postfix) with ESMTP id 7F83F1EB86 for ; Mon, 9 Sep 2019 13:59:08 +0200 (CEST) X-Virus-Scanned: Proofpoint Essentials engine Received: from webmail.solarflare.com (webmail.solarflare.com [12.187.104.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mx1-us3.ppe-hosted.com (PPE Hosted ESMTP Server) with ESMTPS id 51137B40069; Mon, 9 Sep 2019 11:59:07 +0000 (UTC) Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Mon, 9 Sep 2019 04:59:02 -0700 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1395.4 via Frontend Transport; Mon, 9 Sep 2019 04:59:02 -0700 Received: from ukv-loginhost.uk.solarflarecom.com (ukv-loginhost.uk.solarflarecom.com [10.17.10.39]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id x89Bx00U027723; Mon, 9 Sep 2019 12:59:01 +0100 Received: from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1]) by ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id 91D961613D2; Mon, 9 Sep 2019 12:59:01 +0100 (BST) From: Andrew Rybchenko To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger CC: , Ivan Ilchenko Date: Mon, 9 Sep 2019 12:58:44 +0100 Message-ID: <1568030331-16526-8-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1568030331-16526-1-git-send-email-arybchenko@solarflare.com> References: <1567699852-31693-1-git-send-email-arybchenko@solarflare.com> <1568030331-16526-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.5.1010-24898.005 X-TM-AS-Result: No-5.010700-4.000000-10 X-TMASE-MatchedRID: lZQXsOY9JGPbS0m47m6fSn84FZpy/6JVAPiR4btCEeY7FE26mju9OwZe An7ANE0aPqH3M3bmiaYDfZ2MQc5YmiHhSBQfglfsA9lly13c/gHYuVu0X/rOkFIxScKXZnK0anE x6Q9PkPC5bvomy5N3Za4HpZyNqGRRR6tbXaatOblwju9EALAXQkpFpc3bJiMeV4i674aSi3wGs/ +hIg7uQXXIzUT/gAJgtv3G1gBXNYf3gr9T3KhP3khwlOfYeSqxUOGrEH3Kt5wkt9BigJAcVppbq x0S2iPGWiVYX64wRWhqLTBqgniCU587xECPSepO3zSg/bkXzGmO7tU+Bv65zZsoi2XrUn/Jn6Kd MrRsL14qtq5d3cxkNcT8aBMM9lA7X5ZefpMZYyMb2LuJg5PbmesH8LgV75gI4j7BxbqlPFk= X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--5.010700-4.000000 X-TMASE-Version: SMEX-12.5.0.1300-8.5.1010-24898.005 X-MDID: 1568030347-Got_LvWwPxmZ Subject: [dpdk-dev] [PATCH v2 07/13] app/testpmd: check code of promiscuous mode switch 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" From: Ivan Ilchenko rte_eth_promiscuous_enable()/rte_eth_promiscuous_disable() return value was changed from void to int, so this patch modify usage of these functions across app/testpmd according to new return type. Signed-off-by: Ivan Ilchenko Signed-off-by: Andrew Rybchenko --- app/test-pmd/cmdline.c | 23 ++++++++++------------- app/test-pmd/testpmd.c | 14 +++++++++++--- app/test-pmd/testpmd.h | 1 + app/test-pmd/util.c | 16 ++++++++++++++++ 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index b1be6b4c82..6b9444f42d 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -6082,6 +6082,7 @@ static void cmd_create_bonded_device_parsed(void *parsed_result, struct cmd_create_bonded_device_result *res = parsed_result; char ethdev_name[RTE_ETH_NAME_MAX_LEN]; int port_id; + int ret; if (test_done == 0) { printf("Please stop forwarding first\n"); @@ -6103,7 +6104,11 @@ static void cmd_create_bonded_device_parsed(void *parsed_result, /* Update number of ports */ nb_ports = rte_eth_dev_count_avail(); reconfig(port_id, res->socket); - rte_eth_promiscuous_enable(port_id); + ret = rte_eth_promiscuous_enable(port_id); + if (ret != 0) + printf("Failed to enable promiscuous mode for port %u: %s - ignore\n", + port_id, rte_strerror(-ret)); + ports[port_id].need_setup = 0; ports[port_id].port_status = RTE_PORT_STOPPED; } @@ -6525,18 +6530,10 @@ static void cmd_set_promisc_mode_parsed(void *parsed_result, /* all ports */ if (allports) { - RTE_ETH_FOREACH_DEV(i) { - if (enable) - rte_eth_promiscuous_enable(i); - else - rte_eth_promiscuous_disable(i); - } - } - else { - if (enable) - rte_eth_promiscuous_enable(res->port_num); - else - rte_eth_promiscuous_disable(res->port_num); + RTE_ETH_FOREACH_DEV(i) + eth_set_promisc_mode(i, enable); + } else { + eth_set_promisc_mode(res->port_num, enable); } } diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index de91e1b72d..2a57978fdb 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -2433,13 +2433,17 @@ static void setup_attached_port(portid_t pi) { unsigned int socket_id; + int ret; socket_id = (unsigned)rte_eth_dev_socket_id(pi); /* if socket_id is invalid, set to the first available socket. */ if (check_socket_id(socket_id) < 0) socket_id = socket_ids[0]; reconfig(pi, socket_id); - rte_eth_promiscuous_enable(pi); + ret = rte_eth_promiscuous_enable(pi); + if (ret != 0) + printf("Error during enabling promiscuous mode for port %u: %s - ignore\n", + pi, rte_strerror(-ret)); ports_ids[nb_ports++] = pi; fwd_ports_ids[nb_fwd_ports++] = pi; @@ -3373,8 +3377,12 @@ main(int argc, char** argv) rte_exit(EXIT_FAILURE, "Start ports failed\n"); /* set all ports to promiscuous mode by default */ - RTE_ETH_FOREACH_DEV(port_id) - rte_eth_promiscuous_enable(port_id); + RTE_ETH_FOREACH_DEV(port_id) { + ret = rte_eth_promiscuous_enable(port_id); + if (ret != 0) + printf("Error during enabling promiscuous mode for port %u: %s - ignore\n", + port_id, rte_strerror(-ret)); + } /* Init metrics library */ rte_metrics_init(rte_socket_id()); diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index d73955da14..ab93062923 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -824,6 +824,7 @@ void show_gro(portid_t port_id); void setup_gso(const char *mode, portid_t port_id); int eth_dev_info_get_print_err(uint16_t port_id, struct rte_eth_dev_info *dev_info); +void eth_set_promisc_mode(uint16_t port_id, int enable); /* Functions to manage the set of filtered Multicast MAC addresses */ diff --git a/app/test-pmd/util.c b/app/test-pmd/util.c index 009d226764..4626751343 100644 --- a/app/test-pmd/util.c +++ b/app/test-pmd/util.c @@ -245,3 +245,19 @@ eth_dev_info_get_print_err(uint16_t port_id, return ret; } + +void +eth_set_promisc_mode(uint16_t port, int enable) +{ + int ret; + + if (enable) + ret = rte_eth_promiscuous_enable(port); + else + ret = rte_eth_promiscuous_disable(port); + + if (ret != 0) + printf("Error during %s promiscuous mode for port %u: %s\n", + enable ? "enabling" : "disabling", + port, rte_strerror(-ret)); +}