From nobody Sun Feb 8 03:20:55 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFCA32192F3; Mon, 9 Jun 2025 16:25:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486347; cv=none; b=GnoCzFeKijZZOY5RIOngCZvCdGybQMZG7gRlpuPlAXVKvMXFZG01EV8xxHU1KQoGzI57b73kFGLYJVUwVkBY0kl9N7R9l6xV3X8PVOTqlkZr7MwAwrrqMru9yxmV9IpwxeLm7SDiRgWAUSFdkLb77FXHZdGJiYQX92w0HIMcgb4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486347; c=relaxed/simple; bh=mHhPOqinpFEERdGM+Rti2TVQdt9tAiHA9fEwsPLz4ME=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qithMixSSz2ptwi9g2iw71/qaBKB9cD8VwAFRPCSDEPVu/CraP/0OZaCUP3AY6baOTXUXLNWTE0BxzF84WwbBOETYDp/d8oyIz488khLe2LvgfO451EsAw3Rsb2Howhza5QpCBmJOdwQ/M3dyySzXQ7LH9P9Ooch0B+qG+UGduQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=j/O/jKIB; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="j/O/jKIB" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-22c336fcdaaso36398695ad.3; Mon, 09 Jun 2025 09:25:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749486345; x=1750091145; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZcBIQof9ewBwA3bnnT7zG7+z04Cojvm1rhsE7IhHazI=; b=j/O/jKIBktjdmWtBQhMfGZGapDVS2JWTVox7iU06eu7BNpM27E1Ee5FCwpekG+dID0 388PURw2+e9UXAyhHZ4kXrPRcjl3IWe72OV09cCScAq9aRzCW4Y5CfNIfywAb8YI+vvf RqDLYS5qx3EHCrQfJgYhIN0xKyym/G6AROEIQBPvPFCzNEsxhiAOHJRz5HykBlMCjlVO KS25LDDpicPi1y5DWXybD0VLU4YUm5kLh0j7i2kkmNveWLDi7YfbAbaKRZi6zoOvTyZx ISIiIjPx2hLP6OhwY8VuPXO+8zIxw9NcyuOLPz0OFJmtZBJ5/m/RNFb5tmdFDu9fCNSD /ZvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749486345; x=1750091145; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZcBIQof9ewBwA3bnnT7zG7+z04Cojvm1rhsE7IhHazI=; b=sYhJpYlKzZxze2f73qkH+qVdVA2fhjZEjgrf8Fb9ZA7bDJdIqrZGBgP6ok5nDPUeLe wqDkMTfCkpKq5d099k5ywt9hiremAFM9QjjrXCvsUavyHc0H97YjAlFRJg10tiR025O5 3APCSjsQZbdOpZIfR6D4xfCa9rMPX4E/GCRl3jeXPKH2R5rjE92441b5d6qtCqggTz/O bwRWxd2ijCouadSofJHgn2GgabJuP5kCP+wmnUxM+41Tcyx047Mk6Lfb7LTgIcLDOydx K1qvNsdsx43odfIiyPxKtnU/0UuGBkf+4YTHjH8eIbiRHKzaoSLcHCzeFme9krsXTRAG 3Kog== X-Forwarded-Encrypted: i=1; AJvYcCVhbp5Fo99IXELNh72kFef5WayDb5zxGh50eYVH5FwYiFXCI2JizhA7wdKEVL+bj+/4VNA9kuDFR6e0yZdtMmF1@vger.kernel.org, AJvYcCWec5mCGqmnXKS9B598F3nL+0+ZgLQevSJPzv9HMmcDGyYZRmMYFn26erYAI7nmcEuuHVcaexzieBbiQA==@vger.kernel.org, AJvYcCWpDDD7N8HT3ihxDY7BXsLoTrZ/1CF5qLe+RD39rLBygJ2nJRIkXKaah/DzgeA1VoSHm7rZBtusev5GTmA=@vger.kernel.org X-Gm-Message-State: AOJu0YxaLNUaVIdxBd03mimkaMTu0HpPubbz4Ryq4wZlnkmo5+ZvSqOf qTfqZDmQ00l/boOlfBtQcxxWUcv5/Hg8sI5dW7jSKckuV50AUX8DhPQu/RfQ X-Gm-Gg: ASbGncscjNABvb9VcCIVKaXocmH1WQ0r/cv0tJvV5welh2rpQK4PODQCuegzyikn9xZ IPsNDgNBeFE1kSsike/8nnyGqZ4GE+t4Ub+V/NY8xOAYdPPUEPSopZxa7Vkpovc4+9CgM63JpdI jld6TC8d6mbikrrtRbS3Lm6vrqUaB+Jw1Z3tHKWcD+2dHTNESDnhR1c26iSikAu3bu/xqYFtrHh BCFIKcK3fKf+l3Fr54QCEvgEYWB/tlGFlAX+ysMN7+Hgk37yR/2upySqhP2SkKOpcYNe8rJ9GCc S5gWh22wIkQhWyqooWzIa5+TBiOxmnPUBsHhAKZQkS0A8O/TU2VmoDoY0tYKLGBoJbjmuw/1uq9 7UFYmo6mawcrfR06U+fzL0B0= X-Google-Smtp-Source: AGHT+IFvP9iX5PgjA0qZtolo71nDPI7fhS39r0wgpkj3XRGGQnYnHscpU4aBJcy7odn2bsDb65c2gQ== X-Received: by 2002:a17:903:2348:b0:235:f21d:6fce with SMTP id d9443c01a7336-23601dd787emr162761175ad.47.1749486344665; Mon, 09 Jun 2025 09:25:44 -0700 (PDT) Received: from localhost (c-73-158-218-242.hsd1.ca.comcast.net. [73.158.218.242]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-23603b6a5aasm56408125ad.112.2025.06.09.09.25.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 09:25:44 -0700 (PDT) From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, skalluru@marvell.com, manishc@marvell.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, ajit.khaparde@broadcom.com, sriharsha.basavapatna@broadcom.com, somnath.kotur@broadcom.com, anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, tariqt@nvidia.com, saeedm@nvidia.com, louis.peens@corigine.com, shshaikh@marvell.com, GR-Linux-NIC-Dev@marvell.com, ecree.xilinx@gmail.com, horms@kernel.org, dsahern@kernel.org, shuah@kernel.org, mheib@redhat.com, ruanjinjie@huawei.com, stfomichev@gmail.com, linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-rdma@vger.kernel.org, oss-drivers@corigine.com, linux-net-drivers@amd.com, linux-kselftest@vger.kernel.org, leon@kernel.org Subject: [PATCH net-next v2 1/4] udp_tunnel: remove rtnl_lock dependency Date: Mon, 9 Jun 2025 09:25:38 -0700 Message-ID: <20250609162541.1230022-2-stfomichev@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250609162541.1230022-1-stfomichev@gmail.com> References: <20250609162541.1230022-1-stfomichev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Drivers that are using ops lock and don't depend on RTNL lock still need to manage it because udp_tunnel's RTNL dependency. Introduce new udp_tunnel_nic_lock and use it instead of rtnl_lock. Drop non-UDP_TUNNEL_NIC_INFO_MAY_SLEEP mode from udp_tunnel infra (udp_tunnel_nic_device_sync_work needs to grab udp_tunnel_nic_lock mutex and might sleep). Cc: Michael Chan Suggested-by: Jakub Kicinski Signed-off-by: Stanislav Fomichev Reviewed-by: Cosmin Ratiu --- .../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 3 +- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 ++-- drivers/net/ethernet/emulex/benet/be_main.c | 3 +- drivers/net/ethernet/intel/i40e/i40e_main.c | 1 - drivers/net/ethernet/intel/ice/ice_main.c | 1 - .../net/ethernet/mellanox/mlx4/en_netdev.c | 3 +- .../net/ethernet/mellanox/mlx5/core/en_main.c | 3 +- .../ethernet/netronome/nfp/nfp_net_common.c | 3 +- .../net/ethernet/qlogic/qede/qede_filter.c | 3 -- .../net/ethernet/qlogic/qlcnic/qlcnic_main.c | 1 - drivers/net/ethernet/sfc/ef10.c | 1 - drivers/net/netdevsim/udp_tunnels.c | 4 --- include/net/udp_tunnel.h | 8 ++--- net/ipv4/udp_tunnel_nic.c | 30 +++++++++---------- 14 files changed, 24 insertions(+), 46 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net= /ethernet/broadcom/bnx2x/bnx2x_main.c index f522ca8ff66b..fa7e5adf9804 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -10219,8 +10219,7 @@ static int bnx2x_udp_tunnel_sync(struct net_device = *netdev, unsigned int table) =20 static const struct udp_tunnel_nic_info bnx2x_udp_tunnels =3D { .sync_table =3D bnx2x_udp_tunnel_sync, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP | - UDP_TUNNEL_NIC_INFO_OPEN_ONLY, + .flags =3D UDP_TUNNEL_NIC_INFO_OPEN_ONLY, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_GENEVE, }, diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethern= et/broadcom/bnxt/bnxt.c index d5495762c945..a3dadde65b8d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -15573,8 +15573,7 @@ static int bnxt_udp_tunnel_unset_port(struct net_de= vice *netdev, unsigned int ta static const struct udp_tunnel_nic_info bnxt_udp_tunnels =3D { .set_port =3D bnxt_udp_tunnel_set_port, .unset_port =3D bnxt_udp_tunnel_unset_port, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP | - UDP_TUNNEL_NIC_INFO_OPEN_ONLY, + .flags =3D UDP_TUNNEL_NIC_INFO_OPEN_ONLY, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_GENEVE, }, @@ -15582,8 +15581,7 @@ static const struct udp_tunnel_nic_info bnxt_udp_tu= nnels =3D { }, bnxt_udp_tunnels_p7 =3D { .set_port =3D bnxt_udp_tunnel_set_port, .unset_port =3D bnxt_udp_tunnel_unset_port, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP | - UDP_TUNNEL_NIC_INFO_OPEN_ONLY, + .flags =3D UDP_TUNNEL_NIC_INFO_OPEN_ONLY, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_GENEVE, }, diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethe= rnet/emulex/benet/be_main.c index 3d2e21592119..f49400ba9729 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -4031,8 +4031,7 @@ static int be_vxlan_unset_port(struct net_device *net= dev, unsigned int table, static const struct udp_tunnel_nic_info be_udp_tunnels =3D { .set_port =3D be_vxlan_set_port, .unset_port =3D be_vxlan_unset_port, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP | - UDP_TUNNEL_NIC_INFO_OPEN_ONLY, + .flags =3D UDP_TUNNEL_NIC_INFO_OPEN_ONLY, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, }, diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethe= rnet/intel/i40e/i40e_main.c index 120d68654e3f..3d3da9d15348 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_main.c +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c @@ -15891,7 +15891,6 @@ static int i40e_probe(struct pci_dev *pdev, const s= truct pci_device_id *ent) =20 pf->udp_tunnel_nic.set_port =3D i40e_udp_tunnel_set_port; pf->udp_tunnel_nic.unset_port =3D i40e_udp_tunnel_unset_port; - pf->udp_tunnel_nic.flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP; pf->udp_tunnel_nic.shared =3D &pf->udp_tunnel_shared; pf->udp_tunnel_nic.tables[0].n_entries =3D I40E_MAX_PF_UDP_OFFLOAD_PORTS; pf->udp_tunnel_nic.tables[0].tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN | diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethern= et/intel/ice/ice_main.c index d97d4b25b30d..e309531f8c9d 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -4764,7 +4764,6 @@ int ice_init_dev(struct ice_pf *pf) =20 pf->hw.udp_tunnel_nic.set_port =3D ice_udp_tunnel_set_port; pf->hw.udp_tunnel_nic.unset_port =3D ice_udp_tunnel_unset_port; - pf->hw.udp_tunnel_nic.flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP; pf->hw.udp_tunnel_nic.shared =3D &pf->hw.udp_tunnel_shared; if (pf->hw.tnl.valid_count[TNL_VXLAN]) { pf->hw.udp_tunnel_nic.tables[0].n_entries =3D diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c b/drivers/net/e= thernet/mellanox/mlx4/en_netdev.c index 281b34af0bb4..d2071aff7b8f 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c @@ -2670,8 +2670,7 @@ static int mlx4_udp_tunnel_sync(struct net_device *de= v, unsigned int table) =20 static const struct udp_tunnel_nic_info mlx4_udp_tunnels =3D { .sync_table =3D mlx4_udp_tunnel_sync, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP | - UDP_TUNNEL_NIC_INFO_IPV4_ONLY, + .flags =3D UDP_TUNNEL_NIC_INFO_IPV4_ONLY, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, }, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/ne= t/ethernet/mellanox/mlx5/core/en_main.c index ea822c69d137..ccde53f94045 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -5303,8 +5303,7 @@ void mlx5e_vxlan_set_netdev_info(struct mlx5e_priv *p= riv) =20 priv->nic_info.set_port =3D mlx5e_vxlan_set_port; priv->nic_info.unset_port =3D mlx5e_vxlan_unset_port; - priv->nic_info.flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP | - UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN; + priv->nic_info.flags =3D UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN; priv->nic_info.tables[0].tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN; /* Don't count the space hard-coded to the IANA port */ priv->nic_info.tables[0].n_entries =3D diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/= net/ethernet/netronome/nfp/nfp_net_common.c index 28997ddab966..14ba38bcb07b 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -2394,8 +2394,7 @@ static int nfp_udp_tunnel_sync(struct net_device *net= dev, unsigned int table) =20 static const struct udp_tunnel_nic_info nfp_udp_tunnels =3D { .sync_table =3D nfp_udp_tunnel_sync, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP | - UDP_TUNNEL_NIC_INFO_OPEN_ONLY, + .flags =3D UDP_TUNNEL_NIC_INFO_OPEN_ONLY, .tables =3D { { .n_entries =3D NFP_NET_N_VXLAN_PORTS, diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/e= thernet/qlogic/qede/qede_filter.c index 985026dd816f..7e341e026489 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_filter.c +++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c @@ -987,20 +987,17 @@ static int qede_udp_tunnel_sync(struct net_device *de= v, unsigned int table) =20 static const struct udp_tunnel_nic_info qede_udp_tunnels_both =3D { .sync_table =3D qede_udp_tunnel_sync, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_GENEVE, }, }, }, qede_udp_tunnels_vxlan =3D { .sync_table =3D qede_udp_tunnel_sync, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, }, }, qede_udp_tunnels_geneve =3D { .sync_table =3D qede_udp_tunnel_sync, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_GENEVE, }, }, diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net= /ethernet/qlogic/qlcnic/qlcnic_main.c index eb69121df726..53cdd36c4123 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c @@ -486,7 +486,6 @@ static int qlcnic_udp_tunnel_sync(struct net_device *de= v, unsigned int table) =20 static const struct udp_tunnel_nic_info qlcnic_udp_tunnels =3D { .sync_table =3D qlcnic_udp_tunnel_sync, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP, .tables =3D { { .n_entries =3D 1, .tunnel_types =3D UDP_TUNNEL_TYPE_VXLAN, }, }, diff --git a/drivers/net/ethernet/sfc/ef10.c b/drivers/net/ethernet/sfc/ef1= 0.c index 47349c148c0c..fcec81f862ec 100644 --- a/drivers/net/ethernet/sfc/ef10.c +++ b/drivers/net/ethernet/sfc/ef10.c @@ -3985,7 +3985,6 @@ static int efx_ef10_udp_tnl_unset_port(struct net_dev= ice *dev, static const struct udp_tunnel_nic_info efx_ef10_udp_tunnels =3D { .set_port =3D efx_ef10_udp_tnl_set_port, .unset_port =3D efx_ef10_udp_tnl_unset_port, - .flags =3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP, .tables =3D { { .n_entries =3D 16, diff --git a/drivers/net/netdevsim/udp_tunnels.c b/drivers/net/netdevsim/ud= p_tunnels.c index 640b4983a9a0..10cbbf1c584b 100644 --- a/drivers/net/netdevsim/udp_tunnels.c +++ b/drivers/net/netdevsim/udp_tunnels.c @@ -112,12 +112,10 @@ nsim_udp_tunnels_info_reset_write(struct file *file, = const char __user *data, struct net_device *dev =3D file->private_data; struct netdevsim *ns =3D netdev_priv(dev); =20 - rtnl_lock(); if (dev->reg_state =3D=3D NETREG_REGISTERED) { memset(ns->udp_ports.ports, 0, sizeof(ns->udp_ports.__ports)); udp_tunnel_nic_reset_ntf(dev); } - rtnl_unlock(); =20 return count; } @@ -181,8 +179,6 @@ int nsim_udp_tunnels_info_create(struct nsim_dev *nsim_= dev, info->sync_table =3D NULL; } =20 - if (ns->udp_ports.sleep) - info->flags |=3D UDP_TUNNEL_NIC_INFO_MAY_SLEEP; if (nsim_dev->udp_ports.open_only) info->flags |=3D UDP_TUNNEL_NIC_INFO_OPEN_ONLY; if (nsim_dev->udp_ports.ipv4_only) diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index 2df3b8344eb5..606168b0b64a 100644 --- a/include/net/udp_tunnel.h +++ b/include/net/udp_tunnel.h @@ -221,19 +221,17 @@ static inline void udp_tunnel_encap_enable(struct soc= k *sk) #define UDP_TUNNEL_NIC_MAX_TABLES 4 =20 enum udp_tunnel_nic_info_flags { - /* Device callbacks may sleep */ - UDP_TUNNEL_NIC_INFO_MAY_SLEEP =3D BIT(0), /* Device only supports offloads when it's open, all ports * will be removed before close and re-added after open. */ - UDP_TUNNEL_NIC_INFO_OPEN_ONLY =3D BIT(1), + UDP_TUNNEL_NIC_INFO_OPEN_ONLY =3D BIT(0), /* Device supports only IPv4 tunnels */ - UDP_TUNNEL_NIC_INFO_IPV4_ONLY =3D BIT(2), + UDP_TUNNEL_NIC_INFO_IPV4_ONLY =3D BIT(1), /* Device has hard-coded the IANA VXLAN port (4789) as VXLAN. * This port must not be counted towards n_entries of any table. * Driver will not receive any callback associated with port 4789. */ - UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN =3D BIT(3), + UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN =3D BIT(2), }; =20 struct udp_tunnel_nic; diff --git a/net/ipv4/udp_tunnel_nic.c b/net/ipv4/udp_tunnel_nic.c index b6d2d16189c0..956a04c4bed4 100644 --- a/net/ipv4/udp_tunnel_nic.c +++ b/net/ipv4/udp_tunnel_nic.c @@ -34,6 +34,7 @@ struct udp_tunnel_nic_table_entry { * @work_pending: @work is currently scheduled * @n_tables: number of tables under @entries * @missed: bitmap of tables which overflown + * @lock: protects entries * @entries: table of tables of ports currently offloaded */ struct udp_tunnel_nic { @@ -47,6 +48,7 @@ struct udp_tunnel_nic { =20 unsigned int n_tables; unsigned long missed; + struct mutex lock; struct udp_tunnel_nic_table_entry *entries[] __counted_by(n_tables); }; =20 @@ -298,22 +300,11 @@ __udp_tunnel_nic_device_sync(struct net_device *dev, = struct udp_tunnel_nic *utn) static void udp_tunnel_nic_device_sync(struct net_device *dev, struct udp_tunnel_nic *= utn) { - const struct udp_tunnel_nic_info *info =3D dev->udp_tunnel_nic_info; - bool may_sleep; - if (!utn->need_sync) return; =20 - /* Drivers which sleep in the callback need to update from - * the workqueue, if we come from the tunnel driver's notification. - */ - may_sleep =3D info->flags & UDP_TUNNEL_NIC_INFO_MAY_SLEEP; - if (!may_sleep) - __udp_tunnel_nic_device_sync(dev, utn); - if (may_sleep || utn->need_replay) { - queue_work(udp_tunnel_nic_workqueue, &utn->work); - utn->work_pending =3D 1; - } + queue_work(udp_tunnel_nic_workqueue, &utn->work); + utn->work_pending =3D 1; } =20 static bool @@ -554,12 +545,12 @@ static void __udp_tunnel_nic_reset_ntf(struct net_dev= ice *dev) struct udp_tunnel_nic *utn; unsigned int i, j; =20 - ASSERT_RTNL(); - utn =3D dev->udp_tunnel_nic; if (!utn) return; =20 + mutex_lock(&utn->lock); + utn->need_sync =3D false; for (i =3D 0; i < utn->n_tables; i++) for (j =3D 0; j < info->tables[i].n_entries; j++) { @@ -569,7 +560,7 @@ static void __udp_tunnel_nic_reset_ntf(struct net_devic= e *dev) =20 entry->flags &=3D ~(UDP_TUNNEL_NIC_ENTRY_DEL | UDP_TUNNEL_NIC_ENTRY_OP_FAIL); - /* We don't release rtnl across ops */ + /* We don't release utn lock across ops */ WARN_ON(entry->flags & UDP_TUNNEL_NIC_ENTRY_FROZEN); if (!entry->use_cnt) continue; @@ -579,6 +570,8 @@ static void __udp_tunnel_nic_reset_ntf(struct net_devic= e *dev) } =20 __udp_tunnel_nic_device_sync(dev, utn); + + mutex_unlock(&utn->lock); } =20 static size_t @@ -710,11 +703,15 @@ static void udp_tunnel_nic_device_sync_work(struct wo= rk_struct *work) container_of(work, struct udp_tunnel_nic, work); =20 rtnl_lock(); + mutex_lock(&utn->lock); + utn->work_pending =3D 0; __udp_tunnel_nic_device_sync(utn->dev, utn); =20 if (utn->need_replay) udp_tunnel_nic_replay(utn->dev, utn); + + mutex_unlock(&utn->lock); rtnl_unlock(); } =20 @@ -730,6 +727,7 @@ udp_tunnel_nic_alloc(const struct udp_tunnel_nic_info *= info, return NULL; utn->n_tables =3D n_tables; INIT_WORK(&utn->work, udp_tunnel_nic_device_sync_work); + mutex_init(&utn->lock); =20 for (i =3D 0; i < n_tables; i++) { utn->entries[i] =3D kcalloc(info->tables[i].n_entries, --=20 2.49.0 From nobody Sun Feb 8 03:20:55 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7996221ADB5; Mon, 9 Jun 2025 16:25:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486349; cv=none; b=PD9cxr9ubX9vq7gtYue4YHkZZLnZV8EzHw+Pt/N1CQYiTSAYcLoQbsvNmpTP3I3GcAdE4g0HoPz0jbibxiux/ITwMjfgEP5gjNPl5xCJ+PXf3G5rhY6FR3JnZVn+0n/yXqdFZ/uh1OCuQ+3/5z9QZcwec0GocEt0H3JzjTWhQQs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486349; c=relaxed/simple; bh=gJFmnMD6We7T8CJJ9MqQYVPFTCjVQwwgiQcPRp9KYL8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SHsDfRAL4DZmi7TgLDxj85mRykT5jJY+b5W3sPhUkcwt214LSgMs50+duhGPabsWknGAKvg99IvJ8TBHZ0GJlzzYlImjexXyPlZ3z+KP69aEZAd63ZOZXicmqAyPLc32c6lQ/NrVsZt0RNEisR8HG0NUQw5qRTQqjTR26fsysiA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FE5HSZP7; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FE5HSZP7" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-23633a6ac50so4301645ad.2; Mon, 09 Jun 2025 09:25:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749486346; x=1750091146; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OIpCecH4yJO034nC1LHMnR1mqJnd63DXTBjtuXwa8mc=; b=FE5HSZP7dqdPNVPKRkgpY6mnZrQD4hXKzPvYiMJeKLVRMuDWFRQ93lDpn9g0dMh1ng Fv6/gozhcn8xU6I0iIScqnshfkRjbN3um4JJZap2rGhJkpNxCNHFpvhORKdMJtY1FDvZ 23yeIHoY/JbG5icayX+TLQsAHO9Z4Mq3PEeSyI2vgJcJXB13HNeAnM+4v3AAI9rsc4cV jINQwRnrVi+wkK+AjCYEQ58a2qsmrz8/geTlPls8AEykw76A06H6vElkaVfBcPNa+Q4p 486BpzEMSrpDIQgGbSzs7llA1SkHykd+ZbhFf8GU+1LCDcaESbvErg//aiBj+bDrwNXW +kvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749486346; x=1750091146; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OIpCecH4yJO034nC1LHMnR1mqJnd63DXTBjtuXwa8mc=; b=G+pXNhp4wCilAMQUh4hEmqQKsZYZVc52a9EZ0baiWl4dN7SDl2cQ/2IIEZ53F7mcCM GKvgku9H9rK9tQf4tLxxDNTLuU/Foy26ez95Wbpz4uo+ggXYTq4YOt5xEt7AnJMGpw3u QHw7iuWZzZIZigEl9DGskmQhNYXHTUHDOQaFwxNGn0UCYvbvq0uiVTsvf8BkyPsfMaw1 O6hj3CRXl9qA9LHZdYMYaV9rB32nMj0VAlrboScvd2VJbEE7k0Qm4S/hUCV5YBnEPE3b TkfCkWAvD/fArCBnIqxJNpu1YTcPRk0OMG9kr+uhEUHgpq+SCoHITHvZ0rpYfXFiggj2 J9Yg== X-Forwarded-Encrypted: i=1; AJvYcCUji70a+UFpuQvqTv9h/GNC7dTW6nMrUhjodMIEiMqY49GqAgwjrfioB3TBX4DAKsTyMs3R4XQ2lHi+7GI=@vger.kernel.org, AJvYcCWGnKpMwzHPidODFJt6HYOqq+Wg7v6t4SxNBUzeeczY4RWfUdCTlGCmCQKxXEG/d8RH8VkpmqIn2gAXh/qSfprc@vger.kernel.org, AJvYcCWnMvwWauLACO7rx5kfieNenDsh1dibeNPB0amssOPQo4dIYTPkVkC/o5J9TzXosjBxwMSS97eoelBtlQ==@vger.kernel.org X-Gm-Message-State: AOJu0YwK2+P/cPK5HLmknnQ0mhnVx1nBzE7QMYQc5o7tl6CoUnO3gI+Y zrfK8xiIKfF14PsCMgADs6/AqZPqX2O6x0zrcP77Jyj7dVDDqpACNhoJJ6hx X-Gm-Gg: ASbGncsCnWN8FpsMtUVRFDeUtuevzIL+gUK3PpM/Qfn2e55CEXdiFo17RGGfJc8atEF uDOQkSVbZjFeAnlgDJ3HzPVTCdOPk7hQl0W5eXkDJACVZpkfEWHh4GhkYuyO9TD06cDc8JEmfUo 3mAOCR2TVHRDKSBB7jOZ/ruxLrLRjKnPdkhW9GG4TyMGUvEV+F9VR0XwSX2jph+Oj7qXd22wtmC X7KRlUhLWMEpEIme5wCykN6Bi7oKjXNy1yv4kLlB47VohKxFG1hYewrwmUrYmMHQrTmzqixrM/Z Lfz6TJHc6Iou2fNcfw1vnk8me64qeXYaKZzSjJf+AOWfJ5ZtPYHRYCUZRZuUVjxv0fqbruef9Oz zA5S82+QleVp7jLS4JpL2l3M= X-Google-Smtp-Source: AGHT+IHYVWs/aBeS3lTlg3/K3udkjbze0k0eLP7AMX1rK05yCKVcKjArQ7KqvyIMbRkK2g9/HnBNFw== X-Received: by 2002:a17:903:41c8:b0:234:e3b7:5cd2 with SMTP id d9443c01a7336-23601da9abbmr211770595ad.46.1749486346165; Mon, 09 Jun 2025 09:25:46 -0700 (PDT) Received: from localhost (c-73-158-218-242.hsd1.ca.comcast.net. [73.158.218.242]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-23603078936sm56017125ad.21.2025.06.09.09.25.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 09:25:45 -0700 (PDT) From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, skalluru@marvell.com, manishc@marvell.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, ajit.khaparde@broadcom.com, sriharsha.basavapatna@broadcom.com, somnath.kotur@broadcom.com, anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, tariqt@nvidia.com, saeedm@nvidia.com, louis.peens@corigine.com, shshaikh@marvell.com, GR-Linux-NIC-Dev@marvell.com, ecree.xilinx@gmail.com, horms@kernel.org, dsahern@kernel.org, shuah@kernel.org, mheib@redhat.com, ruanjinjie@huawei.com, stfomichev@gmail.com, linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-rdma@vger.kernel.org, oss-drivers@corigine.com, linux-net-drivers@amd.com, linux-kselftest@vger.kernel.org, leon@kernel.org Subject: [PATCH net-next v2 2/4] net: remove redundant ASSERT_RTNL() in queue setup functions Date: Mon, 9 Jun 2025 09:25:39 -0700 Message-ID: <20250609162541.1230022-3-stfomichev@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250609162541.1230022-1-stfomichev@gmail.com> References: <20250609162541.1230022-1-stfomichev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The existing netdev_ops_assert_locked() already asserts that either the RTNL lock or the per-device lock is held, making the explicit ASSERT_RTNL() redundant. Cc: Michael Chan Signed-off-by: Stanislav Fomichev --- net/core/dev.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index be97c440ecd5..72997636b8ec 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3179,7 +3179,6 @@ int netif_set_real_num_tx_queues(struct net_device *d= ev, unsigned int txq) =20 if (dev->reg_state =3D=3D NETREG_REGISTERED || dev->reg_state =3D=3D NETREG_UNREGISTERING) { - ASSERT_RTNL(); netdev_ops_assert_locked(dev); =20 rc =3D netdev_queue_update_kobjects(dev, dev->real_num_tx_queues, @@ -3229,7 +3228,6 @@ int netif_set_real_num_rx_queues(struct net_device *d= ev, unsigned int rxq) return -EINVAL; =20 if (dev->reg_state =3D=3D NETREG_REGISTERED) { - ASSERT_RTNL(); netdev_ops_assert_locked(dev); =20 rc =3D net_rx_queue_update_kobjects(dev, dev->real_num_rx_queues, --=20 2.49.0 From nobody Sun Feb 8 03:20:55 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E8B2F21B9D9; Mon, 9 Jun 2025 16:25:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486350; cv=none; b=N2tE6Wi/bMismdjAsPgFyC0SmCIP/Pch1Bud4Dk8x9mxjA4YZeHkifWDuNxODIpt6UrBHkmJTgk2A+H2KSBsrmm7HTT6da9cFRo9vxY0/cl7yxYbScXMCYyoRJbaK5neJrdcxnK8hYQncy/UmqtpU0+1Nh1mIKUNln0jWJaJwZs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486350; c=relaxed/simple; bh=z7qmWniBIonNdhZeh8JAak8HTSJvBo7rSJQuyxUQ31g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RyZM9O0LnTPbhfiWIdRJM0lxIwkliKXoSTjSGPSVpmJVdc5Oi/V+15CBhfanGwbityfA0v5EfhxjxrU7kdeDNrRfKaQvHAxcuZJe4YQznjcZL9VK2RVghF1JXHF22nVbzAtpMAu/wcqJrTs6yM7DL/Q6JVAMz6yUC8hB7PwH+Wg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WjcUoWWo; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WjcUoWWo" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-231e98e46c0so41712375ad.3; Mon, 09 Jun 2025 09:25:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749486348; x=1750091148; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a7EpK0zw2/veQxMvxmxEv0B+FifXXBoF9kaDm9Vzf5w=; b=WjcUoWWosoYi/cg2837blpt0TkKpX40HFJiGp4o93AvwR8YfHkTJXVrRiMH2jWyfyg UOWG3rxEkW1fDMEiYNtW8LU6lSUu5y7q9Ht9J+TLN3COCVXYX72BIU+/owpnhK57oTS5 i3IqP4J0V9pg78v1cRT59+BKu75OCi7WfKAYxdxlJy9ElKD3NjM32Je6rnOmuZUzdUlY xZSkTWw8ziy/AguB7sTSY2YWR4ifE229BI4X7d7/YDeTynIULSrzcyUjnSomhJn/+UTR eehagIYMfkb3HpBsw2ZJThCT7TYw8OC5V+ZIQlAs4Zv13Zo5hVl5Hu6fX+TO6jMw8TQH CTGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749486348; x=1750091148; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=a7EpK0zw2/veQxMvxmxEv0B+FifXXBoF9kaDm9Vzf5w=; b=WrHs4SFN1yRL8s1Vu0ZKUGy9o8Mnw0Wu0ADpkXuOtLQiyQYxyZM/LTvL84/5DwONFR Z1IASJvq9LcR0Q0nDor4f+zs4ohAJktuNrCjdEuQ4xCM9gjEp1duyA4jwWBrgGAYuyOy TwHP1Z4/PNRpKsTg7tEbsUrNT05VgFUzVtEV/ZJ1GO5Mq/4mqf1ZTNJsd3waSHPTPjha WjcM95qViXhn/GszNeaOeYPofdnbIaRXKJNLrGk/iLyURj/HQSCutTBUe0uWlcTI8HD8 IBFc0aKICLkzUWkhZFxLSALG/RtloIhtKPCYE98PVcsbNLImdj2iONMz7xPvK6UJGjUH mcBQ== X-Forwarded-Encrypted: i=1; AJvYcCUfHAqnOKxSmPnRPCPB1yWBfqLUCqmjqpuJCJHO0H0k03Y1hXk7ycdUHH4aveKFmKC9EoYD2rHci5+JL/e4b/mX@vger.kernel.org, AJvYcCVr6cCPzX8Z+rQoQk98M59jwaFjrOe57yH5Bw4b73Wz6F86EPcDmnOfPYQzne4SWjpw84ZIs+Hf/vOWg5k=@vger.kernel.org, AJvYcCWutOl/Ud/4ALkgcRFDwOPcyW3yw3cgL3rJ3J1pDkQ/2Io0AE4ezRhICGW5u+05cQ8+Oh0J/VT/g/S8hg==@vger.kernel.org X-Gm-Message-State: AOJu0YxTnEAnI8tdhhpZsJruqVcfbsV9A4qnWt0ZnUlXoVnp2saqDcgJ 5s//YQMhVGdtw6gSoDeI7NQDg/Cr76To0z6WsNuQfM5/+2IxW2GtRQTMETYB X-Gm-Gg: ASbGncuGsX+Bs3f2Cn7lej1BUx4E7SrKFABLR+gmEDMzZPqzsL6nziEyJ2hKe3j1X4Q C3TVOrjgy8eJ8xhgj+A55Wlnwq3/X78ngkqfaBKU0JmsX48kUHveS06jP+Uo3MgXEkCvGdND7Vj 1VC42ezF3VTgIQ5v7F5UhqBkb+1++iTV1EFrOXM1QzOwxGN10Zp3u8IcyW6UN0erdM9wk9Qx3xS zcl2kBDquuae7jKMBBpJS/MsdcRnct2bLrgErIF5zQ27xjjUGhiJ+aVNZcUPzUpKo3NXladQ6Jr 8uQVleP1DAz0NztNQHIt10uRua1VSp3yAah1XcWdW659OkVyIWLcb05pfV4hFBDgd5vBBzuADAC Li2BzL6QyZiN7 X-Google-Smtp-Source: AGHT+IGapDPv1cHR0dWqimNSNGAmR6AOYZGplgx4b+X7CrIfkEPxGuAl3kbxQrojEm2Tk0pvayZItw== X-Received: by 2002:a17:902:f688:b0:234:b41e:378f with SMTP id d9443c01a7336-23601cfdb18mr199068395ad.15.1749486347764; Mon, 09 Jun 2025 09:25:47 -0700 (PDT) Received: from localhost (c-73-158-218-242.hsd1.ca.comcast.net. [73.158.218.242]) by smtp.gmail.com with UTF8SMTPSA id d9443c01a7336-236032fcfccsm56699935ad.101.2025.06.09.09.25.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 09:25:47 -0700 (PDT) From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, skalluru@marvell.com, manishc@marvell.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, ajit.khaparde@broadcom.com, sriharsha.basavapatna@broadcom.com, somnath.kotur@broadcom.com, anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, tariqt@nvidia.com, saeedm@nvidia.com, louis.peens@corigine.com, shshaikh@marvell.com, GR-Linux-NIC-Dev@marvell.com, ecree.xilinx@gmail.com, horms@kernel.org, dsahern@kernel.org, shuah@kernel.org, mheib@redhat.com, ruanjinjie@huawei.com, stfomichev@gmail.com, linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-rdma@vger.kernel.org, oss-drivers@corigine.com, linux-net-drivers@amd.com, linux-kselftest@vger.kernel.org, leon@kernel.org Subject: [PATCH net-next v2 3/4] netdevsim: remove udp_ports_sleep Date: Mon, 9 Jun 2025 09:25:40 -0700 Message-ID: <20250609162541.1230022-4-stfomichev@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250609162541.1230022-1-stfomichev@gmail.com> References: <20250609162541.1230022-1-stfomichev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now that there is only one path in udp_tunnel, there is no need to have udp_ports_sleep knob. Remove it and adjust the test. Cc: Michael Chan Signed-off-by: Stanislav Fomichev Reviewed-by: Aleksandr Loktionov --- drivers/net/netdevsim/netdevsim.h | 2 -- drivers/net/netdevsim/udp_tunnels.c | 8 -------- .../selftests/drivers/net/netdevsim/udp_tunnel_nic.sh | 10 ---------- 3 files changed, 20 deletions(-) diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netd= evsim.h index d04401f0bdf7..511ed72a93ce 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -131,7 +131,6 @@ struct netdevsim { struct nsim_macsec macsec; struct { u32 inject_error; - u32 sleep; u32 __ports[2][NSIM_UDP_TUNNEL_N_PORTS]; u32 (*ports)[NSIM_UDP_TUNNEL_N_PORTS]; struct dentry *ddir; @@ -342,7 +341,6 @@ struct nsim_dev { bool ipv4_only; bool shared; bool static_iana_vxlan; - u32 sleep; } udp_ports; struct nsim_dev_psample *psample; u16 esw_mode; diff --git a/drivers/net/netdevsim/udp_tunnels.c b/drivers/net/netdevsim/ud= p_tunnels.c index 10cbbf1c584b..89fff76e51cf 100644 --- a/drivers/net/netdevsim/udp_tunnels.c +++ b/drivers/net/netdevsim/udp_tunnels.c @@ -18,9 +18,6 @@ nsim_udp_tunnel_set_port(struct net_device *dev, unsigned= int table, ret =3D -ns->udp_ports.inject_error; ns->udp_ports.inject_error =3D 0; =20 - if (ns->udp_ports.sleep) - msleep(ns->udp_ports.sleep); - if (!ret) { if (ns->udp_ports.ports[table][entry]) { WARN(1, "entry already in use\n"); @@ -47,8 +44,6 @@ nsim_udp_tunnel_unset_port(struct net_device *dev, unsign= ed int table, ret =3D -ns->udp_ports.inject_error; ns->udp_ports.inject_error =3D 0; =20 - if (ns->udp_ports.sleep) - msleep(ns->udp_ports.sleep); if (!ret) { u32 val =3D be16_to_cpu(ti->port) << 16 | ti->type; =20 @@ -170,7 +165,6 @@ int nsim_udp_tunnels_info_create(struct nsim_dev *nsim_= dev, GFP_KERNEL); if (!info) return -ENOMEM; - ns->udp_ports.sleep =3D nsim_dev->udp_ports.sleep; =20 if (nsim_dev->udp_ports.sync_all) { info->set_port =3D NULL; @@ -213,6 +207,4 @@ void nsim_udp_tunnels_debugfs_create(struct nsim_dev *n= sim_dev) &nsim_dev->udp_ports.shared); debugfs_create_bool("udp_ports_static_iana_vxlan", 0600, nsim_dev->ddir, &nsim_dev->udp_ports.static_iana_vxlan); - debugfs_create_u32("udp_ports_sleep", 0600, nsim_dev->ddir, - &nsim_dev->udp_ports.sleep); } diff --git a/tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.s= h b/tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh index 92c2f0376c08..8c5fe7bdf1ce 100755 --- a/tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh @@ -266,7 +266,6 @@ for port in 0 1; do echo $NSIM_ID > /sys/bus/netdevsim/new_device else echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep echo 1 > $NSIM_DEV_SYS/new_port fi NSIM_NETDEV=3D`get_netdev_name old_netdevs` @@ -350,7 +349,6 @@ old_netdevs=3D$(ls /sys/class/net) port=3D0 echo $NSIM_ID > /sys/bus/netdevsim/new_device echo 0 > $NSIM_DEV_SYS/del_port -echo 1000 > $NSIM_DEV_DFS/udp_ports_sleep echo 0 > $NSIM_DEV_SYS/new_port NSIM_NETDEV=3D`get_netdev_name old_netdevs` =20 @@ -428,7 +426,6 @@ echo 0 > $NSIM_DEV_SYS/del_port for port in 0 1; do if [ $port -ne 0 ]; then echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep fi =20 echo $port > $NSIM_DEV_SYS/new_port @@ -486,7 +483,6 @@ echo 1 > $NSIM_DEV_DFS/udp_ports_sync_all for port in 0 1; do if [ $port -ne 0 ]; then echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep fi =20 echo $port > $NSIM_DEV_SYS/new_port @@ -543,7 +539,6 @@ echo 0 > $NSIM_DEV_SYS/del_port for port in 0 1; do if [ $port -ne 0 ]; then echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep fi =20 echo $port > $NSIM_DEV_SYS/new_port @@ -573,7 +568,6 @@ echo 1 > $NSIM_DEV_DFS/udp_ports_ipv4_only for port in 0 1; do if [ $port -ne 0 ]; then echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep fi =20 echo $port > $NSIM_DEV_SYS/new_port @@ -634,7 +628,6 @@ echo 0 > $NSIM_DEV_SYS/del_port for port in 0 1; do if [ $port -ne 0 ]; then echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep fi =20 echo $port > $NSIM_DEV_SYS/new_port @@ -690,7 +683,6 @@ echo 0 > $NSIM_DEV_SYS/del_port for port in 0 1; do if [ $port -ne 0 ]; then echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep fi =20 echo $port > $NSIM_DEV_SYS/new_port @@ -750,7 +742,6 @@ echo 0 > $NSIM_DEV_SYS/del_port for port in 0 1; do if [ $port -ne 0 ]; then echo 1 > $NSIM_DEV_DFS/udp_ports_open_only - echo 1 > $NSIM_DEV_DFS/udp_ports_sleep fi =20 echo $port > $NSIM_DEV_SYS/new_port @@ -809,7 +800,6 @@ echo $NSIM_ID > /sys/bus/netdevsim/new_device echo 0 > $NSIM_DEV_SYS/del_port =20 echo 0 > $NSIM_DEV_DFS/udp_ports_open_only -echo 1 > $NSIM_DEV_DFS/udp_ports_sleep echo 1 > $NSIM_DEV_DFS/udp_ports_shared =20 old_netdevs=3D$(ls /sys/class/net) --=20 2.49.0 From nobody Sun Feb 8 03:20:55 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4C74121C19C; Mon, 9 Jun 2025 16:25:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486351; cv=none; b=jtr0VRmbm9niXowKbT2RwQVzSKynxpNUu15wsuuDZMCE7Qc8vPuoHvpIfEZMi7tHMwq717EdG2YrHuhE85wvUYrwhfec/eyX+UOsKIxDTOEKTfWRK2KAwCvg1Rh6Q/sfZhYQEw8RVwyVkBX8776hOJX/tiWkbGVdGq2mmyVRmAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749486351; c=relaxed/simple; bh=u8r2Q+UtHJ4Nd9Z2cHIyBuA8VSeH+waJg4MzAJzv7o8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hpsANtuBtOeQr3FO5gvppNRwzr+YtytZBe+99a7z5U+zTsjVoM3xPaxSieJFTaL3WjEjEs6MI22J6up99WWEpWJFXLVz9b0EUX/1ztc06MiFRSuNTQv5eoOxzfkzlXg1bhQnMNISc+tFnoFJcwcySxe9C33Kd1UCMDpxKTb4F5k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gcG75G4N; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gcG75G4N" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-747fc77bb2aso3474288b3a.3; Mon, 09 Jun 2025 09:25:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749486349; x=1750091149; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=rIrnh6Y6z0RsAszSzJMckGXGP+N0IS1GPSV62LbBz1M=; b=gcG75G4Nf09QWzPIdG32NyX6gnNqq18Mq9ifc+BIYuEZD5S7gNNDohTp2ui4V7YPT0 Hi7/Iqo/YRy1Y9cLS+QOqeo7+dA1PtJTWFQNAqf4Y+VTJczxwaccTddx9rijDB2xWcWd NcIRR2tnSXOgJsNUjUYB4Odlo5X4d0l42EjnR2Fl21SLidQI5joiPe1T2XsfA+e9E9mQ oUaka6lm9TyY93wI0XC0IEwx6Jp3dPMFq+YQdE4Nz7eU0oxbMMsELA5LyrokvDOBJlwH xsi7Z94wh0rC7aKnGabngIqcAcPnPXuP0XDYDbVWLJDx6PSlwqMneMo3sMJhOfW71utF 8l4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749486349; x=1750091149; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rIrnh6Y6z0RsAszSzJMckGXGP+N0IS1GPSV62LbBz1M=; b=gzlYJoPbNKirj3JNf1CKoU62/Y4vv8+NdkfVhglHCprIQhPFPKRxwnIl0KY7szUvnJ PsnwHQbzvf5i4bYFA84Lm8i7pBx8lfmYzWcCHdpgT1qz3RjeQc/4sf8z1wcBMwCxpvqf OasTmlzwT9NR2t1KEEdyLUNjWGnHvNN0y1F7vmWTQqE+lXktP2v9lmkCVm5gJfmQYO7l iIu6dxWJ4oO13JezuW9xnHavsfu2e9em4c477BjeETf0hGLkjZUANHFBHOd6GTPI8j53 Z0jSZ0Rims4NmTj2bey/BEB30CaNvlgk/Uo4WWKwEDEkNe/UoTRYsbaojR5qg8wjW5AB gFsg== X-Forwarded-Encrypted: i=1; AJvYcCU62juxx5aIL8F8YIGIqSietfW5dOl5PhMYMn5GeajL0PyibLKcQCAw4tVeiImJj3iZvEMtqZjYkV9j1H2qv5Yc@vger.kernel.org, AJvYcCUDuvl8fey9387k8Jmedki9WHszDSEYKR/blwd/Tffgms6d8jwsUJGoV/+PeSERTyTLUxG7Ez8bkvBaiA==@vger.kernel.org, AJvYcCVvWo2lqQRwZqfAXjZy4ILqNA3ryt6pc6jLccBkf4sihJU8dFAHEuNKz4YQKCTBEOETFBRVQ/g3bmrS8NE=@vger.kernel.org X-Gm-Message-State: AOJu0YyCL0q/MuCxwRHPv9l3XX8IhYlzOXJuHQ1v2RbC6u5RdVZWGCop 8ZzL2gfI2lCwacC4ph8O9bkMu1BPjcK6A0D7yIMVX+M55w3VSaMyWWHsZS5Y X-Gm-Gg: ASbGncuf3eDyb+eTdZbphAZ/YihpI0mTYmWQDlPh897nCnbmmgypSzNTEp7JZaJpYb1 wkCdtSvL5ANRQLKWnJhlUBJ5JjSgTEH+bJUFjWmmZhTDOhNZuXpIENU/B6+Ou27/ky/qLRHZSEQ lAdgWShzJOomwyaouWumGI9SrnosvLhGlyZw7rs//c3pODhnO6BF/K+U6m2KCH9guueIejBKmKo bK6FYlffnQtFIuR+UPeky5iKujEYdoaik9t9V3R/MhvTBPeSMaSPTFD322JsoHAO7VivQ0qV3or naJ4WNF90uonBW1EpILY2rLgxnssD7zvoo8hi9+JKgxYpamZaavONcNhoJkcuK7eUjRCgYTGWm/ Osk47Dnh6oevK X-Google-Smtp-Source: AGHT+IHWJwEpttKcOYtxUVS3ky2ehdeYMgNt9I8XWQyiwY2W97FEQfM0AyDBiEXIyrcRZ6JMgZ6g5w== X-Received: by 2002:a05:6a21:1fc5:b0:1f5:7ba7:69d8 with SMTP id adf61e73a8af0-21ee25321f3mr19247516637.15.1749486349275; Mon, 09 Jun 2025 09:25:49 -0700 (PDT) Received: from localhost (c-73-158-218-242.hsd1.ca.comcast.net. [73.158.218.242]) by smtp.gmail.com with UTF8SMTPSA id d2e1a72fcca58-7482b0ea2b2sm5915308b3a.161.2025.06.09.09.25.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 09:25:48 -0700 (PDT) From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, skalluru@marvell.com, manishc@marvell.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, ajit.khaparde@broadcom.com, sriharsha.basavapatna@broadcom.com, somnath.kotur@broadcom.com, anthony.l.nguyen@intel.com, przemyslaw.kitszel@intel.com, tariqt@nvidia.com, saeedm@nvidia.com, louis.peens@corigine.com, shshaikh@marvell.com, GR-Linux-NIC-Dev@marvell.com, ecree.xilinx@gmail.com, horms@kernel.org, dsahern@kernel.org, shuah@kernel.org, mheib@redhat.com, ruanjinjie@huawei.com, stfomichev@gmail.com, linux-kernel@vger.kernel.org, intel-wired-lan@lists.osuosl.org, linux-rdma@vger.kernel.org, oss-drivers@corigine.com, linux-net-drivers@amd.com, linux-kselftest@vger.kernel.org, leon@kernel.org, Aleksandr Loktionov Subject: [PATCH net-next v2 4/4] Revert "bnxt_en: bring back rtnl_lock() in the bnxt_open() path" Date: Mon, 9 Jun 2025 09:25:41 -0700 Message-ID: <20250609162541.1230022-5-stfomichev@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250609162541.1230022-1-stfomichev@gmail.com> References: <20250609162541.1230022-1-stfomichev@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This reverts commit 325eb217e41fa14f307c7cc702bd18d0bb38fe84. udp_tunnel infra doesn't need RTNL, should be safe to get back to only netdev instance lock. Cc: Michael Chan Reviewed-by: Aleksandr Loktionov Signed-off-by: Stanislav Fomichev --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 36 +++++------------------ 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethern= et/broadcom/bnxt/bnxt.c index a3dadde65b8d..1da208c36572 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -14055,28 +14055,13 @@ static void bnxt_unlock_sp(struct bnxt *bp) netdev_unlock(bp->dev); } =20 -/* Same as bnxt_lock_sp() with additional rtnl_lock */ -static void bnxt_rtnl_lock_sp(struct bnxt *bp) -{ - clear_bit(BNXT_STATE_IN_SP_TASK, &bp->state); - rtnl_lock(); - netdev_lock(bp->dev); -} - -static void bnxt_rtnl_unlock_sp(struct bnxt *bp) -{ - set_bit(BNXT_STATE_IN_SP_TASK, &bp->state); - netdev_unlock(bp->dev); - rtnl_unlock(); -} - /* Only called from bnxt_sp_task() */ static void bnxt_reset(struct bnxt *bp, bool silent) { - bnxt_rtnl_lock_sp(bp); + bnxt_lock_sp(bp); if (test_bit(BNXT_STATE_OPEN, &bp->state)) bnxt_reset_task(bp, silent); - bnxt_rtnl_unlock_sp(bp); + bnxt_unlock_sp(bp); } =20 /* Only called from bnxt_sp_task() */ @@ -14084,9 +14069,9 @@ static void bnxt_rx_ring_reset(struct bnxt *bp) { int i; =20 - bnxt_rtnl_lock_sp(bp); + bnxt_lock_sp(bp); if (!test_bit(BNXT_STATE_OPEN, &bp->state)) { - bnxt_rtnl_unlock_sp(bp); + bnxt_unlock_sp(bp); return; } /* Disable and flush TPA before resetting the RX ring */ @@ -14125,7 +14110,7 @@ static void bnxt_rx_ring_reset(struct bnxt *bp) } if (bp->flags & BNXT_FLAG_TPA) bnxt_set_tpa(bp, true); - bnxt_rtnl_unlock_sp(bp); + bnxt_unlock_sp(bp); } =20 static void bnxt_fw_fatal_close(struct bnxt *bp) @@ -15017,17 +15002,15 @@ static void bnxt_fw_reset_task(struct work_struct= *work) bp->fw_reset_state =3D BNXT_FW_RESET_STATE_OPENING; fallthrough; case BNXT_FW_RESET_STATE_OPENING: - while (!rtnl_trylock()) { + while (!netdev_trylock(bp->dev)) { bnxt_queue_fw_reset_work(bp, HZ / 10); return; } - netdev_lock(bp->dev); rc =3D bnxt_open(bp->dev); if (rc) { netdev_err(bp->dev, "bnxt_open() failed during FW reset\n"); bnxt_fw_reset_abort(bp, rc); netdev_unlock(bp->dev); - rtnl_unlock(); goto ulp_start; } =20 @@ -15047,7 +15030,6 @@ static void bnxt_fw_reset_task(struct work_struct *= work) bnxt_dl_health_fw_status_update(bp, true); } netdev_unlock(bp->dev); - rtnl_unlock(); bnxt_ulp_start(bp, 0); bnxt_reenable_sriov(bp); netdev_lock(bp->dev); @@ -15996,7 +15978,7 @@ static int bnxt_queue_start(struct net_device *dev,= void *qmem, int idx) rc); napi_enable_locked(&bnapi->napi); bnxt_db_nq_arm(bp, &cpr->cp_db, cpr->cp_raw_cons); - netif_close(dev); + bnxt_reset_task(bp, true); return rc; } =20 @@ -16812,7 +16794,6 @@ static int bnxt_resume(struct device *device) struct bnxt *bp =3D netdev_priv(dev); int rc =3D 0; =20 - rtnl_lock(); netdev_lock(dev); rc =3D pci_enable_device(bp->pdev); if (rc) { @@ -16857,7 +16838,6 @@ static int bnxt_resume(struct device *device) =20 resume_exit: netdev_unlock(bp->dev); - rtnl_unlock(); bnxt_ulp_start(bp, rc); if (!rc) bnxt_reenable_sriov(bp); @@ -17023,7 +17003,6 @@ static void bnxt_io_resume(struct pci_dev *pdev) int err; =20 netdev_info(bp->dev, "PCI Slot Resume\n"); - rtnl_lock(); netdev_lock(netdev); =20 err =3D bnxt_hwrm_func_qcaps(bp); @@ -17041,7 +17020,6 @@ static void bnxt_io_resume(struct pci_dev *pdev) netif_device_attach(netdev); =20 netdev_unlock(netdev); - rtnl_unlock(); bnxt_ulp_start(bp, err); if (!err) bnxt_reenable_sriov(bp); --=20 2.49.0