From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 8CAAA1B3B6 for ; Thu, 29 Nov 2018 09:57:05 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Nov 2018 00:57:04 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,294,1539673200"; d="scan'208";a="97012715" Received: from fyigit-mobl.ger.corp.intel.com (HELO [10.237.221.75]) ([10.237.221.75]) by fmsmga007.fm.intel.com with ESMTP; 29 Nov 2018 00:57:03 -0800 From: Ferruh Yigit To: Radu Nicolau , dev@dpdk.org Cc: declan.doherty@intel.com, chas3@att.com References: <1542197949-15992-1-git-send-email-radu.nicolau@intel.com> <2e452920-4514-6395-27e5-f7457de01797@intel.com> <9425dd1c-877a-0bee-72b8-6aae9617286f@intel.com> Openpgp: preference=signencrypt Autocrypt: addr=ferruh.yigit@intel.com; prefer-encrypt=mutual; keydata= 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 vM8= Message-ID: <1dd2178e-168f-9d00-9ade-0426b8032931@intel.com> Date: Thu, 29 Nov 2018 08:57:03 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1 MIME-Version: 1.0 In-Reply-To: <9425dd1c-877a-0bee-72b8-6aae9617286f@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH] examples/bond: wait for slaves to become active 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: Thu, 29 Nov 2018 08:57:06 -0000 On 11/28/2018 1:48 PM, Radu Nicolau wrote: > Hi > > > On 11/28/2018 11:08 AM, Ferruh Yigit wrote: >> On 11/14/2018 12:19 PM, Radu Nicolau wrote: >>> Do not start the packet processing threads until all configured >>> slaves become active. >> Hi Radu, >> >> What happens if packet processing threads started before all slaves active? Exit >> app, error, crash? >> >> So can we say this patch is fixing packet forwarding? (fix in title?) >> >> And do we know what break it, why this was not required previously but required >> now? (Fixes line ?) > From what I see, the problem was always there: bond_ethdev_rx_burst > will cycle through slaves, but if called more times with no active > slaves the active slave index will point out of bounds, resulting in a > segfault. > While this may require a better fix, this patch is an improvement even > if that fix comes - the configured slaves needs to be checked, and if > none became active there is no point going further. > > in bond_ethdev_rx_burst: > > slave_count = internals->active_slave_count; > ... >     if (++internals->active_slave == slave_count) >         internals->active_slave = 0; > slave_count is zero, the if() will never be true and active_slave will > be continuously incremented. It was not written to work with no active > slaves. Thanks for clarification, are you OK with below updated commit log: " examples/bond: fix crash when there is no active slave If bond_ethdev_rx_burst() called more times with no active slaves the active slave index will point out of bounds, resulting in a segfault. The configured slaves needs to be checked, and if none became active there is no point going further. Do not start the packet processing threads until all configured slaves become active. Fixes: cc7e8ae84faa ("examples/bond: add example application for link bonding mode 6") Cc: stable@dpdk.org " > >> >> Thanks, >> ferruh >> >>> Signed-off-by: Radu Nicolau >>> --- >>> examples/bond/main.c | 15 +++++++++++++++ >>> 1 file changed, 15 insertions(+) >>> >>> diff --git a/examples/bond/main.c b/examples/bond/main.c >>> index b282e68..6623cae 100644 >>> --- a/examples/bond/main.c >>> +++ b/examples/bond/main.c >>> @@ -220,6 +220,7 @@ bond_port_init(struct rte_mempool *mbuf_pool) >>> struct rte_eth_rxconf rxq_conf; >>> struct rte_eth_txconf txq_conf; >>> struct rte_eth_conf local_port_conf = port_conf; >>> + uint16_t wait_counter = 20; >>> >>> retval = rte_eth_bond_create("net_bonding0", BONDING_MODE_ALB, >>> 0 /*SOCKET_ID_ANY*/); >>> @@ -274,6 +275,20 @@ bond_port_init(struct rte_mempool *mbuf_pool) >>> if (retval < 0) >>> rte_exit(retval, "Start port %d failed (res=%d)", BOND_PORT, retval); >>> >>> + printf("Waiting for slaves to become active..."); >>> + while (wait_counter) { >>> + uint16_t act_slaves[16] = {0}; >>> + if (rte_eth_bond_active_slaves_get(BOND_PORT, act_slaves, 16) == >>> + slaves_count) { >>> + printf("\n"); >>> + break; >>> + } >>> + sleep(1); >>> + printf("..."); >>> + if (--wait_counter == 0) >>> + rte_exit(-1, "\nFailed to activate slaves\n"); >>> + } >>> + >>> rte_eth_promiscuous_enable(BOND_PORT); >>> >>> struct ether_addr addr; >>> >