From patchwork Sun Sep 27 23:42:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 78925 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4AF9AA04C0; Mon, 28 Sep 2020 01:43:03 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4DD651D5ED; Mon, 28 Sep 2020 01:43:01 +0200 (CEST) Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com [66.111.4.29]) by dpdk.org (Postfix) with ESMTP id 13C481D5E5 for ; Mon, 28 Sep 2020 01:42:58 +0200 (CEST) Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 72DE05C00F7; Sun, 27 Sep 2020 19:42:57 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute7.internal (MEProxy); Sun, 27 Sep 2020 19:42:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monjalon.net; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; s=fm2; bh=LVmIdqSN9+E5V xPwBFNAW8JQuj9Q6X3oRT/aCw7OyB0=; b=KaWwggwYOdUz95/GJBFQGJCyxunFZ OTCl/luq6X7VHq2HrgatiKCXigCsboKGJKlGvHR4e28D6mARKPl7KVoPMu9ypIlt Ji1CeKhgLbpJX1zJ/qYDqPbVGWgBm0dwsYYQoVa6zTl6loehx5R6QOYokU7jTAek SHqCLxfSJ0CSXfxj1OR/n4lhuIA5qXzPxiE2c9wFaeiqdXgEuPqKDnD/0w0SjdkZ /VkoCUKviuWKKjaWKy6xIMHkwS9GsEc4KpwHPS+xDl1jzO/uE8gLxn1pHHjnTEaS +3z5zcELvTckmRBbjVzV87V2ROZgR3eHAwyQO6xaiSbZc8ikZdSbx00CQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=LVmIdqSN9+E5VxPwBFNAW8JQuj9Q6X3oRT/aCw7OyB0=; b=VXvMtd4l PiryzhYs5J3s/OcXLMGeuv6Bysmt+OLkJ0c7TAQiJ2sTaOH0gbpSJTYOX9HhkbBs LreYRkpMp7OzPoFPignRmf4rmVmYJo9f7VnVUWn9I15hQq1ajae6qncuwZigmI10 lwktPuLyaHdzR4YiPlSk/b0j7HFRhiXt6B/IfNKaLYIa/ER9X5LRhOYMhC/UzNfU 4fQpHgkMJotfB5pehnR7m1MtdlRjBaXhC5LhvyPh9hn0t/kqoeHruHs+5Qe6K6En Fi0ZoyMj6xsDo1L5O5MxWtBGBHhcllLT/5i2iUN9v4Z4FrOZhiM681MCdmk75cWU /bcy3eoKSmJH1g== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrvdehgddvhecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhephffvufffkffojghfggfgsedtkeertd ertddtnecuhfhrohhmpefvhhhomhgrshcuofhonhhjrghlohhnuceothhhohhmrghssehm ohhnjhgrlhhonhdrnhgvtheqnecuggftrfgrthhtvghrnhepvdehgfeivdejgedtveehfe fhteelfefgieevgfffveefjeegtdfguedthedtgeevnecukfhppeejjedrudefgedrvddt fedrudekgeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpehthhhomhgrshesmhhonhhjrghlohhnrdhnvght X-ME-Proxy: Received: from xps.monjalon.net (184.203.134.77.rev.sfr.net [77.134.203.184]) by mail.messagingengine.com (Postfix) with ESMTPA id 88B53328005D; Sun, 27 Sep 2020 19:42:56 -0400 (EDT) From: Thomas Monjalon To: dev@dpdk.org Cc: ferruh.yigit@intel.com, arybchenko@solarflare.com Date: Mon, 28 Sep 2020 01:42:24 +0200 Message-Id: <20200927234249.3198780-1-thomas@monjalon.net> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200913220711.3768597-1-thomas@monjalon.net> References: <20200913220711.3768597-1-thomas@monjalon.net> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 00/25] cleanup ethdev close operation 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" This is the end of a process started two years ago, to have a close which reliably releases an ethdev port without the need of removing the device (which can have more ports). Unfortunately, some drivers might be broken because did not follow the migration recommendations. We cannot wait more, this should be merged before the 20.11-rc1 release. v2 (big thanks to Ferruh for the reviews): - rebase on top of cxgbe updates - integrate updated patches for tap, bnx2x, qede - return 0 in atlantic PMD - fix failsafe mutex free - remove useless check in pcap - fix testpmd port state transition - add primary process check - reset more pointers in rte_eth_dev_release_port() - remove dev_started reset in rte_eth_dev_close() - return int from rte_eth_dev_close() Note for future: fix old memory leak when releasing port, i.e. free callbacks link_intr_cbs, post_rx_burst_cbs, pre_tx_burst_cbs. The last 3 patches are optional changes to ethdev close/release which were requested by Ferruh but may take longer to be accepted: - memset 0 - keep start state - int return Rasesh Mody (2): net/bnx2x: release port upon close net/qede: release port upon close Thomas Monjalon (22): ethdev: reset device and interrupt pointers on release ethdev: allow drivers to return error on close net/af_packet: release port upon close net/atlantic: release port upon close net/axgbe: release port upon close net/bonding: release port upon close net/failsafe: release port upon close net/mlx4: release port upon close net/null: release port upon close net/octeontx: release port upon close net/pcap: release port upon close net/ring: release port upon close net/softnic: release port upon close ethdev: remove old close behaviour drivers/net: accept removing device without any port drivers/net: check process type in close operation drivers/net: remove redundant MAC addresses freeing app/testpmd: reset port status on close notification app/testpmd: align behaviour of multi-port detach ethdev: remove forcing stopped state upon close ethdev: reset all when releasing a port ethdev: allow close function to return an error Yunjian Wang (1): net/tap: release port upon close MAINTAINERS | 14 ++--- app/test-pmd/config.c | 7 ++- app/test-pmd/testpmd.c | 53 ++++++------------ app/test/virtual_pmd.c | 6 +- doc/guides/rel_notes/deprecation.rst | 7 --- doc/guides/rel_notes/release_20_11.rst | 4 +- drivers/net/af_packet/rte_eth_af_packet.c | 58 ++++++++++---------- drivers/net/af_xdp/rte_eth_af_xdp.c | 9 ++- drivers/net/ark/ark_ethdev.c | 17 +++--- drivers/net/atlantic/atl_ethdev.c | 62 ++++++++------------- drivers/net/avp/avp_ethdev.c | 10 ++-- drivers/net/axgbe/axgbe_ethdev.c | 17 +----- drivers/net/bnx2x/bnx2x_ethdev.c | 16 +++++- drivers/net/bnxt/bnxt_ethdev.c | 16 ++---- drivers/net/bnxt/bnxt_reps.c | 11 ++-- drivers/net/bnxt/bnxt_reps.h | 2 +- drivers/net/bonding/eth_bond_private.h | 2 +- drivers/net/bonding/rte_eth_bond_pmd.c | 33 +++++------ drivers/net/cxgbe/cxgbe_ethdev.c | 18 ++++-- drivers/net/cxgbe/cxgbe_main.c | 2 - drivers/net/cxgbe/cxgbe_pfvf.h | 2 +- drivers/net/cxgbe/cxgbevf_ethdev.c | 5 +- drivers/net/cxgbe/cxgbevf_main.c | 2 - drivers/net/dpaa/dpaa_ethdev.c | 11 ++-- drivers/net/dpaa2/dpaa2_ethdev.c | 13 +++-- drivers/net/e1000/em_ethdev.c | 18 +++--- drivers/net/e1000/igb_ethdev.c | 36 +++++------- drivers/net/ena/ena_ethdev.c | 20 +++---- drivers/net/enetc/enetc_ethdev.c | 7 ++- drivers/net/enic/enic_ethdev.c | 9 ++- drivers/net/enic/enic_vf_representor.c | 8 +-- drivers/net/failsafe/failsafe.c | 24 +------- drivers/net/failsafe/failsafe_ether.c | 6 +- drivers/net/failsafe/failsafe_ops.c | 67 +++++++++++++++-------- drivers/net/failsafe/failsafe_private.h | 1 + drivers/net/fm10k/fm10k_ethdev.c | 22 ++------ drivers/net/hinic/hinic_pmd_ethdev.c | 22 +++----- drivers/net/hns3/hns3_ethdev.c | 15 ++--- drivers/net/hns3/hns3_ethdev_vf.c | 16 ++---- drivers/net/i40e/i40e_ethdev.c | 16 ++---- drivers/net/i40e/i40e_ethdev_vf.c | 17 ++---- drivers/net/iavf/iavf_ethdev.c | 18 +++--- drivers/net/ice/ice_dcf_ethdev.c | 12 ++-- drivers/net/ice/ice_ethdev.c | 21 +++---- drivers/net/igc/igc_ethdev.c | 17 ++---- drivers/net/ionic/ionic_ethdev.c | 17 +++--- drivers/net/ipn3ke/ipn3ke_ethdev.c | 6 +- drivers/net/ipn3ke/ipn3ke_representor.c | 7 ++- drivers/net/ixgbe/ixgbe_ethdev.c | 33 ++++------- drivers/net/kni/rte_eth_kni.c | 25 +++++---- drivers/net/liquidio/lio_ethdev.c | 11 ++-- drivers/net/memif/rte_eth_memif.c | 11 ++-- drivers/net/mlx4/mlx4.c | 7 ++- drivers/net/mlx5/linux/mlx5_os.c | 2 - drivers/net/mlx5/mlx5.c | 16 +++--- drivers/net/mlx5/mlx5.h | 2 +- drivers/net/mvneta/mvneta_ethdev.c | 15 +++-- drivers/net/mvpp2/mrvl_ethdev.c | 15 +++-- drivers/net/netvsc/hn_ethdev.c | 19 +++---- drivers/net/netvsc/hn_var.h | 2 +- drivers/net/netvsc/hn_vf.c | 7 ++- drivers/net/nfb/nfb_ethdev.c | 11 ++-- drivers/net/nfp/nfp_net.c | 11 +++- drivers/net/null/rte_eth_null.c | 26 ++++++--- drivers/net/octeontx/octeontx_ethdev.c | 17 ++---- drivers/net/octeontx2/otx2_ethdev.c | 8 +-- drivers/net/pcap/rte_eth_pcap.c | 31 +++++------ drivers/net/pfe/pfe_ethdev.c | 17 +++--- drivers/net/qede/qede_ethdev.c | 20 +++---- drivers/net/ring/rte_eth_ring.c | 53 +++++++++++------- drivers/net/sfc/sfc_ethdev.c | 35 +++++------- drivers/net/softnic/rte_eth_softnic.c | 67 ++++++++++++----------- drivers/net/szedata2/rte_eth_szedata2.c | 23 ++++---- drivers/net/tap/rte_eth_tap.c | 52 ++++++++++-------- drivers/net/thunderx/nicvf_ethdev.c | 11 ++-- drivers/net/vhost/rte_eth_vhost.c | 15 ++--- drivers/net/virtio/virtio_ethdev.c | 17 ++---- drivers/net/virtio/virtio_user_ethdev.c | 4 +- drivers/net/vmxnet3/vmxnet3_ethdev.c | 16 ++---- lib/librte_ethdev/rte_ethdev.c | 31 +++-------- lib/librte_ethdev/rte_ethdev.h | 13 ++--- lib/librte_ethdev/rte_ethdev_driver.h | 2 +- lib/librte_ethdev/rte_ethdev_pci.h | 14 +---- 83 files changed, 669 insertions(+), 789 deletions(-)