From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6D293A0582; Wed, 19 Oct 2022 12:29:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0C13F40E03; Wed, 19 Oct 2022 12:29:05 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 1C26540A8B; Wed, 19 Oct 2022 12:29:03 +0200 (CEST) Received: from [192.168.38.17] (aros.oktetlabs.ru [192.168.38.17]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPSA id 9E8FD62; Wed, 19 Oct 2022 13:29:02 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 9E8FD62 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=oktetlabs.ru; s=default; t=1666175342; bh=WYtjazeXI72qywxxI8v0ZIzgO2I7eToA/FmynanT9CQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=ylec+LGDPbTjpeFgErB2pLsmEA2uyAWg5h1sX6eqLicpWsDMBVWUORl4BG++EvieB ohvPnGXMlZDyTKjCiyPwnaSEi3cYjwW76VmJELye3wcH7A4INBIou898v0B91t6aNB AumKF67l65YZPICWs5/8A7Z6fpO+cyAK4qy5yIdQ= Message-ID: <6bf67a5b-6171-07cd-bd1a-6d6feb642487@oktetlabs.ru> Date: Wed, 19 Oct 2022 13:29:02 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [PATCH] net/bonding: fix flow flush order on bonded device close Content-Language: en-US To: Chas Williams , "Min Hu (Connor)" , Ivan Malov , Chas Williams <3chas3@gmail.com> Cc: stable@dpdk.org, Declan Doherty , Matan Azrad , dev@dpdk.org References: <20220911122221.3993511-1-ivan.malov@oktetlabs.ru> <28f8636e-bef9-c569-9cbc-2445630e4fae@oktetlabs.ru> <965bc75e-5012-8c9e-06af-06c5f3aaf71b@gmail.com> From: Andrew Rybchenko Organization: OKTET Labs In-Reply-To: <965bc75e-5012-8c9e-06af-06c5f3aaf71b@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 10/17/22 15:34, Chas Williams wrote: > This appears to be correct, but it needs to be coordinated with the > proposed changes in net/bonding: make bonded device configure method > re-entrant Ivan, could you comment and send rebased v2 version anyway. > > > On 10/17/22 04:41, Andrew Rybchenko wrote: >> Chas, Cornor, could you review the patch, please. >> >> Thanks, >> Andrew. >> >> On 9/11/22 15:22, Ivan Malov wrote: >>> The current code first removes all back-end devices of >>> the bonded device and then invokes flush operation to >>> remove flows in such back-end devices, which makes no >>> sense. Fix that by re-ordering the steps accordingly. >>> >>> Fixes: 49dad9028e2a ("net/bonding: support flow API") >>> Cc: stable@dpdk.org >>> >>> Signed-off-by: Ivan Malov >>> Reviewed-by: Andrew Rybchenko >>> --- >>>   drivers/net/bonding/rte_eth_bond_pmd.c | 5 ++++- >>>   1 file changed, 4 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c >>> b/drivers/net/bonding/rte_eth_bond_pmd.c >>> index a5429f5e97..d01c954296 100644 >>> --- a/drivers/net/bonding/rte_eth_bond_pmd.c >>> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c >>> @@ -2155,6 +2155,10 @@ bond_ethdev_close(struct rte_eth_dev *dev) >>>           return 0; >>>       RTE_BOND_LOG(INFO, "Closing bonded device %s", dev->device->name); >>> + >>> +    /* Flush flows in all back-end devices before removing them */ >>> +    bond_flow_ops.flush(dev, &ferror); >>> + >>>       while (internals->slave_count != skipped) { >>>           uint16_t port_id = internals->slaves[skipped].port_id; >>> @@ -2172,7 +2176,6 @@ bond_ethdev_close(struct rte_eth_dev *dev) >>>               skipped++; >>>           } >>>       } >>> -    bond_flow_ops.flush(dev, &ferror); >>>       bond_ethdev_free_queues(dev); >>>       rte_bitmap_reset(internals->vlan_filter_bmp); >>>       rte_bitmap_free(internals->vlan_filter_bmp); >>