From patchwork Thu Apr 6 11:59:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ilya Maximets X-Patchwork-Id: 23284 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 95ECD2A6C; Thu, 6 Apr 2017 14:00:06 +0200 (CEST) Received: from mailout3.w1.samsung.com (mailout3.w1.samsung.com [210.118.77.13]) by dpdk.org (Postfix) with ESMTP id 6E8F829C7 for ; Thu, 6 Apr 2017 14:00:05 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0ONZ00IWWLC3JM90@mailout3.w1.samsung.com> for dev@dpdk.org; Thu, 06 Apr 2017 13:00:03 +0100 (BST) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170406120002eucas1p22f723171ff4ee2dc3441059c85721226~yzSkIfW4r0582605826eucas1p2x; Thu, 6 Apr 2017 12:00:02 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1.samsung.com (EUCPMTA) with SMTP id FA.DD.14140.5CD26E85; Thu, 6 Apr 2017 13:00:05 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170406120001eucas1p2a05d5006e760aee92254fe462c6c8bd2~yzSjVWKIN1299112991eucas1p2W; Thu, 6 Apr 2017 12:00:01 +0000 (GMT) X-AuditID: cbfec7ef-f796a6d00000373c-be-58e62dc5076b Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 51.DC.17452.93E26E85; Thu, 6 Apr 2017 13:02:01 +0100 (BST) Received: from imaximets.rnd.samsung.ru ([106.109.129.180]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0ONZ00EEYLBW9F60@eusync1.samsung.com>; Thu, 06 Apr 2017 13:00:01 +0100 (BST) From: Ilya Maximets To: dev@dpdk.org, Declan Doherty Cc: Heetae Ahn , Eric Kinzie , Bernard Iremonger , Jan Blunck , Ilya Maximets Date: Thu, 06 Apr 2017 14:59:51 +0300 Message-id: <1491479991-26802-1-git-send-email-i.maximets@samsung.com> X-Mailer: git-send-email 2.7.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrNIsWRmVeSWpSXmKPExsWy7djPc7pHdZ9FGFzZym+xuVHY4s2DJhaL d5+2M1nMO7WX3WLa59vsFlfaf7JbtD5sZXJg9/i1YCmrx85Zd9k9Nq/Q8li85yWTR9+WVYwB rFFcNimpOZllqUX6dglcGXff72IqeMpTsaGtjbGB8RxXFyMHh4SAicSeE+ZdjJxAppjEhXvr 2boYuTiEBJYxSlx/vZcdwvnMKHFh7Rl2iCoTiX8fJyJU3Zl3hwXCaWaSWNa0iRWkik1AR+LU 6iOMILaIgDVQ9wqwDmaBM4wSrbNvs4DsFhawkFi02AKkhkVAVaL1yh4WEJtXwE3i4eYDrBDb 5CRunutkhrBvs0n8vyEAcbasxKYDUGEXidUrtjNB2MISr45vgTpURqKz4yATyFoJgWZGiYZV lxghnAmMEl+al0N12EucunkVzGYW4JOYtG06M8QCXomONiGIEg+JKz8usEDYjhJz+zeA3SYk ECvxrGEq+wRG6QWMDKsYRVJLi3PTU4sN9YoTc4tL89L1kvNzNzECo/T0v+PvdzA+bQ45xCjA wajEw+vx+EmEEGtiWXFl7iFGCQ5mJRHePulnEUK8KYmVValF+fFFpTmpxYcYpTlYlMR5eU9d ixASSE8sSc1OTS1ILYLJMnFwSjUwBp+cedlxu/fljoy3vYundv198sVqnYBnR8Zzw5O2MWvW v+TsvMEev0GM+2nLmcxTJqpGVkwbdYNf5/9a+2x/UOGsKznJP9kfdpUvE2I6NY+/4lpaoHzS wgUznvwsey/Qdy/+SMqZbJHO+b7iV2sTWZ3eW99/+S5F4OT3y0x2393C+jQyufLNlViKMxIN tZiLihMBe+CMbM4CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrALMWRmVeSWpSXmKPExsVy+t/xy7qWes8iDDac5bDY3Chs8eZBE4vF u0/bmSzmndrLbjHt8212iyvtP9ktWh+2Mjmwe/xasJTVY+esu+wem1doeSze85LJo2/LKsYA 1ig3m4zUxJTUIoXUvOT8lMy8dFul0BA3XQslhbzE3FRbpQhd35AgJYWyxJxSIM/IAA04OAe4 Byvp2yW4Zdx9v4up4ClPxYa2NsYGxnNcXYycHBICJhL/Pk5kg7DFJC7cWw9kc3EICSxhlPg5 fRsjhNPKJHF951N2kCo2AR2JU6uPMILYIgLWEhfWrgDrYBY4wyjRcHAeUxcjB4ewgIXEosUW IDUsAqoSrVf2sIDYvAJuEg83H2CF2CYncfNcJ/MERu4FjAyrGEVSS4tz03OLDfWKE3OLS/PS 9ZLzczcxAkNz27Gfm3cwXtoYfIhRgINRiYd3wdMnEUKsiWXFlbmHGCU4mJVEePukn0UI8aYk VlalFuXHF5XmpBYfYjQFWj6RWUo0OR8YN3kl8YYmhuaWhkbGFhbmRkZK4rwlH66ECwmkJ5ak ZqemFqQWwfQxcXBKNTBOdCsSkz82o2uWslzr5Q9+y5b5HJfJvMCY9i6OK5AjQbV7k7P58tT7 FS8qgi45HjRSypafs6a0Rmqdb6ttleDC/Exj/tQJ7tzV8QsX75q97G3v/Dc8KxbuON5XbfP0 yx6/e5vVeN9GZ/7olXs/8/PLhEwf58fpy/JeGLoYvVG9fadXbBPz8fNKLMUZiYZazEXFiQC6 PP6hYwIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170406120001eucas1p2a05d5006e760aee92254fe462c6c8bd2 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?utf-8?q?Ilya_Maximets=1BSRR-Virtualization_Lab=1B?= =?utf-8?b?7IK87ISx7KCE7J6QG0xlYWRpbmcgRW5naW5lZXI=?= X-Global-Sender: =?utf-8?q?Ilya_Maximets=1BSRR-Virtualization_Lab=1BSamsu?= =?utf-8?q?ng_Electronics=1BLeading_Engineer?= X-Sender-Code: =?utf-8?q?C10=1BCISHQ=1BC10GD01GD010154?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170406120001eucas1p2a05d5006e760aee92254fe462c6c8bd2 X-RootMTR: 20170406120001eucas1p2a05d5006e760aee92254fe462c6c8bd2 References: Subject: [dpdk-dev] [PATCH] net/bonding: remove all slaves on close 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" Some applications like OVS knows nothing about the device type and wants to use same API to work with all of them. But bond_pmd, unlike other pmds, requires additional step (removing of all the slaves) before closing the device. In fact that bond_pmd automatically adds all the devices from kvargs to bonding on configuration it also should remove all of them on close. This change is intended to have the same API for physical and virtual devices. It allows us to handle virtual devices in OVS in a common way. Signed-off-by: Ilya Maximets Acked-by: Declan Doherty --- drivers/net/bonding/rte_eth_bond_pmd.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 77d3bee..c398fdb 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1659,7 +1659,22 @@ void bond_ethdev_close(struct rte_eth_dev *dev) { struct bond_dev_private *internals = dev->data->dev_private; + uint8_t bond_port_id = internals->port_id; + int skipped = 0; + RTE_LOG(INFO, EAL, "Closing bonded device %s\n", dev->data->name); + while (internals->slave_count != skipped) { + uint8_t port_id = internals->slaves[skipped].port_id; + + rte_eth_dev_stop(port_id); + + if (rte_eth_bond_slave_remove(bond_port_id, port_id) != 0) { + RTE_LOG(ERR, EAL, + "Failed to remove port %d from bonded device " + "%s\n", port_id, dev->data->name); + skipped++; + } + } bond_ethdev_free_queues(dev); rte_bitmap_reset(internals->vlan_filter_bmp); }