From nobody Fri Dec 19 11:30:24 2025 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 8DDEF283157; Tue, 20 May 2025 20:36:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747773381; cv=none; b=bX28DWQoEwqvkDa6OQQctwDX4/xV1xqoGwxOBbALb5o54WeRzGfJAtbcRCKUbnutWFjB8ef3PenN+cFQQ8dLhH64lDi72r3BfVo2dAwDgbvBsYQmrw/kVUHvO94653ENTQm13WKgO2BurLrsLc2uGuj9Rnl360Wxt2N22SQ6w/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747773381; c=relaxed/simple; bh=c2cggQALUIf/dfn5q+vkgGV3x9yZgrUpIWuuES4L2mE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t+RO/KjztyGdlGUrrmen2Of90lCXr5qT2FtiI6aMcAqQu6CE4sTJfEGo+LAZziFcz1DqKH87msoFt73LnT5//3451UXdhOwOTlYPUV5mevIcNoYu5GF/yFN5tx8Yk5AqLjCOX/dKJFv1VNEgEPxN48j6rcpKhx6COFudArLlgtQ= 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=nEPMihI2; arc=none smtp.client-ip=209.85.216.49 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="nEPMihI2" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-306b6ae4fb2so4820695a91.3; Tue, 20 May 2025 13:36:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747773377; x=1748378177; 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=a5Y9lrCw7xR2ho0EkMK1AgoBE7OrT8n9eYd5ybPQld0=; b=nEPMihI2CJLXoOg85w94bJPWy1dgF/C5RmvAv+qxSmYXVMEMEyPlYSq1o7s6IVFfaG 99Gnnr2rseZxxG3rSI9w+Re8di1q/6w/Xi8pJISIbHm9tJGGkFxpobQRBXN1GruPqhVZ haqKn3/4SW8jJ7a4mQkNnpFQGhPu6JU57XeW+bWt44Wvd4lhRzKkbAK3jD4iZAtqPdC0 cgYG8LnJ7swq3WKWhxzUhqjhrmiEZEWfDklGZWYd+E9JWkSmWZswpX0x7YrdznPzQfYY VAbnQ62G301YoZYhNVHQy4JtFbwCK17mgqTYNSQg6/j5/3hXuUZRzCc8cT6crDJCHOqe a4Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747773377; x=1748378177; 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=a5Y9lrCw7xR2ho0EkMK1AgoBE7OrT8n9eYd5ybPQld0=; b=ed5wkPN3MsavUFOmR2/fy5eDl5Olu7coP/6uNdtgbDDP8GyRud/9LdCfw5+FDi1OfW 0pydoK0uO792Q2P91nqg/pmDHVzgrgUHjU4oNLkvHfHoixZhiPU0O9d34OVuQSqKhtLj u5BGEIP0RcN2T7DNEf4IVTKWhefJncTP+lO4BIcM7jBMkQD6xGoahfLWe+ydfCHiPTMs 3K8RPVJ6PdsbpSOd2NwzTwSgEBbDihsvukM5EfrVoFzpgYUfQSn8QmBjmtlOEe4REBXL s3zqvmYNHzqr0K+rGTPztPB8YZOgvM1HPiVJt0sPtC618oKnAHnsrX8ZkZEyY05nT53s b8KA== X-Forwarded-Encrypted: i=1; AJvYcCWYXg7PDRrvlc+GexpGOTNq7KbYeFkGAvuI4Fq/OxUTzVTeGrT3jIBHsVCZalz9tRHFK7EidZVXy7kd+g==@vger.kernel.org, AJvYcCXPooGkYhAPi6j6zD66PTRTuVF1Tukup4ojgX2gDWpymIowJODUmdxzbQObB9rJIhP//WavHDj1ivhrVug=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4FthFSZ6YYiV/Ti28oNR6h+C8i44FdGqEJ+fUtyTaYH0tgEqQ diiKxtSRhMYeZMZzEsx60eW0P/zT2m613sZlWrFfjQuzjO+cbudW5rEz2trC X-Gm-Gg: ASbGncvDC1zQKc3c4d8SzdorPdmEIOMcJDLo3W+TnWFgCaNFiIaoSWYEqP9m35+xKtS eIIAHuC/f5yj07uO4tcKh+GTuOomI/oqDp+oxDy6VR5i5/3AJGcGCQJhEEfbRv4EhS8kYEWkoRl YHF1Q4cbn8ieO4JKNIyniXgAaT66EDfbhPpohnSYJBYH2pE2r6rgBi/RvCLG9bH/+8120+KNU8f /XKKHSlsgwCS59KYxREvjM7FaB+Jpl6fMIMGfoi3gf/vJfjdckd/zEfM+0adLQFbt/uIHSZ0wH0 69ZJq39huO6s1LX1xmdXL0+CxLE9vJsAn8BACOrRhlQYWExktbPW8rDr2IBU2umD675JMIP6m6/ Yo6bxNMY91S8s X-Google-Smtp-Source: AGHT+IHWgke1DG8ChG5fslNyhSb3j/oJctAD2YHyTgUEC0y6COR53m/9wy1aosXnbUA1AqrRETKSPg== X-Received: by 2002:a17:90b:5105:b0:2ff:62f8:9a12 with SMTP id 98e67ed59e1d1-30e7d5b763emr25797392a91.23.1747773377342; Tue, 20 May 2025 13:36:17 -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 98e67ed59e1d1-30f36491d85sm2158936a91.29.2025.05.20.13.36.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 May 2025 13:36:16 -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, ruanjinjie@huawei.com, mheib@redhat.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, leon@kernel.org Subject: [PATCH net-next 1/3] net: ASSERT_RTNL remove netif_set_real_num_{rx,tx}_queues Date: Tue, 20 May 2025 13:36:12 -0700 Message-ID: <20250520203614.2693870-2-stfomichev@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250520203614.2693870-1-stfomichev@gmail.com> References: <20250520203614.2693870-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" Existing netdev_ops_assert_locked takes care of asserting either netdev lock or RTNL. 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 fccf2167b235..5ea718036921 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 Fri Dec 19 11:30:24 2025 Received: from mail-pg1-f175.google.com (mail-pg1-f175.google.com [209.85.215.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 125D028D83C; Tue, 20 May 2025 20:36:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747773383; cv=none; b=aeMvBMbkWH0TPVZgpeoXDh/49t3gjwkfJnYZPApK8qp4z5RhyMw729GHtykE+WXU/PiL+I7E8oe6ifh5s3NyucWqr+2ghTAeU8/Ez5kcPB8CAkiX2gIYzDc68nJzTRHDhFjAshI0wFrmWtMcHaN+9LawkYNZOAYKOjolWwzrdhA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747773383; c=relaxed/simple; bh=sAscxlcgGBd/189r8Q8WYI+rNCaB+9/SMMe0AGShgsw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hPmldu/P2+zkwXW7/sfj3ZXAlpRU8ciCafRwHnA7/n4xylwjquySh2491/tfaRuJ5CUwkDRfI68pIIRHqKT1xoLMQ1WZ7p0f6m/2ji7kroCtCnOw1zS0hx/pZTz5hboY0p842/o1+86dY3AWuEL9fOUMj3/B3qDYB6C48nCgwFo= 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=gKN7ALGR; arc=none smtp.client-ip=209.85.215.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="gKN7ALGR" Received: by mail-pg1-f175.google.com with SMTP id 41be03b00d2f7-b074d908e56so3955216a12.2; Tue, 20 May 2025 13:36:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747773379; x=1748378179; 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=bSNz3/YOImSKHMykX/C1xULfEybHzA6bJIyQbld+P2Q=; b=gKN7ALGRJmNt0rR7E8KZCB8wSakg4k2OyjfzmR3Vnv09CW5k9eilNhRLHxdNtuq9Oa UnIc2eZvwduLKajp9U0KvfNvKkuRaFijB8EoAy3YgqNir971CVLCXbn/XoDy5MC+T2Gy JH0fA5Y9KbvvQXeC7wLzAEXNrj8PHrdTNECrRsLiVEMnQUdkGRKIIFSoVykuzB9susHG bA8Plk+MmRuO0P5ti/aUJS91m121O9n+n3CdwHz8WKHx7XWnGZWVwdZJ5Np2k1w0afhj EpL3GAZLO+HAijltaNAGg3KTd1y5gcfAKOp80BJnuaM46t+wiCcHxnILKQggunpCQ4ki +JJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747773379; x=1748378179; 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=bSNz3/YOImSKHMykX/C1xULfEybHzA6bJIyQbld+P2Q=; b=ZoH+sgZ3Nq1aGPdhCdNkB7Wv0W0P6Qdg5TXZlFQbodWsmIoYSFw5z6sBrtMWA9EW6g vjdHlyhUCUGdKRBWP6k0X91YJfQL5UpuMRUaP7gZmrdYMtUGFcA30gPEHqvihj9voEOU kKrzT+e37HcaBuivW0GllVGl1rPoXhbT7w7RFrYE8OqUWerTfrRL3Ob/nKSDkqjp+jdG bUAbZQWGWtecGCodqUdPhcAXG2frZoNRAjYn94wzmfOEBYsA7rVdwpcJXE8QJjC9owZs WManbjiEy/MbCgFJXwpO3lUlfzRGCmpIDY0afJoLtLAiAE/aQs+vqj0gHuwnj2X2Py+u L+Hg== X-Forwarded-Encrypted: i=1; AJvYcCW9CWlQ0wmvUVBLAMFT9HKQeRYaxnbEfapmSKjXQ6Buv2qjKiSGrNfYygn022Gpeu7mK+mckfn12vIbxzk=@vger.kernel.org, AJvYcCWPKkssl9WjS0BU/LBNmLdsSySa4V9PR/2GUrCerz1kNMDf0dA2iyLni88Lv67eINTzBDdpBMHhHYzAiQ==@vger.kernel.org X-Gm-Message-State: AOJu0YyfEtxpiwvyiCH/MzIG7zm3VfygqGP21eeawGArwqPtN5zt7vBV jnNfydBTXfcNw1pWLdLXV2AqLj2FlIlr5y70Ns0tqqH04ZFhtutkp22l/0MI X-Gm-Gg: ASbGncvkXvyQBZPrrzLxHco5aA5KLmNqCF7IssJ66ntVAxZG2Gjk0EpEZPbpGqtcwqD WCAfKCWJF83BPJ+r7sPdb0gJXDop09Mx0pkaimqdE7uqiOeAIz0NMrGhSuvtdJ26OhYuXZUXbX/ 3z2j+1ciZqJXqki/gVLMLaTt5jt7qNQLbUtt9CHBbNK3ZwtYa0yo8bPgTOvOd2MIr21DM0iBesJ 8qqRMWphVDF3yTpPDh3DG6ajaRCg9awD79xOBp1MAwJumMVblD8oizdNVvTHzyIvR2dgR1jYxxg N1ubI/640Eh1FnyzugqbkdhS7gKJM7n8rM3EGt3hu5h0dWbGnJf4ZM8LIxBd/BDQX8yI/yXBok5 jCyZNQ9e7KmcQ X-Google-Smtp-Source: AGHT+IFUsNDTBoIbjOoYBaGscM+WZ3RCx9bKIEKIW9VuUttnbmbneY+jkZ9nAC88mbQ+4HKviMBegA== X-Received: by 2002:a17:903:41ce:b0:223:4d5e:789d with SMTP id d9443c01a7336-231de31207cmr245719295ad.19.1747773378711; Tue, 20 May 2025 13:36:18 -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-231d4adba85sm80863375ad.73.2025.05.20.13.36.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 May 2025 13:36:18 -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, ruanjinjie@huawei.com, mheib@redhat.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, leon@kernel.org Subject: [PATCH net-next 2/3] udp_tunnel: remove rtnl_lock dependency Date: Tue, 20 May 2025 13:36:13 -0700 Message-ID: <20250520203614.2693870-3-stfomichev@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250520203614.2693870-1-stfomichev@gmail.com> References: <20250520203614.2693870-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 --- .../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/netdevsim.h | 1 - drivers/net/netdevsim/udp_tunnels.c | 12 ------- include/net/udp_tunnel.h | 9 +++-- net/ipv4/udp_tunnel_nic.c | 33 ++++++++----------- net/ipv4/udp_tunnel_stub.c | 2 ++ 16 files changed, 27 insertions(+), 58 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 20d3baf955e3..5a60ede84091 100644 --- a/drivers/net/ethernet/intel/ice/ice_main.c +++ b/drivers/net/ethernet/intel/ice/ice_main.c @@ -4745,7 +4745,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 9bd166f489e7..d5eff6c06b2c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -5292,8 +5292,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/netdevsim.h b/drivers/net/netdevsim/netd= evsim.h index d04401f0bdf7..738da596f60a 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; diff --git a/drivers/net/netdevsim/udp_tunnels.c b/drivers/net/netdevsim/ud= p_tunnels.c index 640b4983a9a0..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 @@ -112,12 +107,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; } @@ -172,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; @@ -181,8 +173,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) @@ -217,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/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index 2df3b8344eb5..7f5537fdf2c9 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; @@ -328,6 +326,7 @@ struct udp_tunnel_nic_ops { =20 #ifdef CONFIG_INET extern const struct udp_tunnel_nic_ops *udp_tunnel_nic_ops; +extern struct mutex udp_tunnel_nic_lock; #else #define udp_tunnel_nic_ops ((struct udp_tunnel_nic_ops *)NULL) #endif diff --git a/net/ipv4/udp_tunnel_nic.c b/net/ipv4/udp_tunnel_nic.c index b6d2d16189c0..4852397a595e 100644 --- a/net/ipv4/udp_tunnel_nic.c +++ b/net/ipv4/udp_tunnel_nic.c @@ -298,22 +298,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,11 +543,11 @@ static void __udp_tunnel_nic_reset_ntf(struct net_dev= ice *dev) struct udp_tunnel_nic *utn; unsigned int i, j; =20 - ASSERT_RTNL(); + mutex_lock(&udp_tunnel_nic_lock); =20 utn =3D dev->udp_tunnel_nic; if (!utn) - return; + goto unlock; =20 utn->need_sync =3D false; for (i =3D 0; i < utn->n_tables; i++) @@ -569,7 +558,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 udp_tunnel_nic_lock across ops */ WARN_ON(entry->flags & UDP_TUNNEL_NIC_ENTRY_FROZEN); if (!entry->use_cnt) continue; @@ -579,6 +568,9 @@ static void __udp_tunnel_nic_reset_ntf(struct net_devic= e *dev) } =20 __udp_tunnel_nic_device_sync(dev, utn); + +unlock: + mutex_unlock(&udp_tunnel_nic_lock); } =20 static size_t @@ -709,13 +701,16 @@ static void udp_tunnel_nic_device_sync_work(struct wo= rk_struct *work) struct udp_tunnel_nic *utn =3D container_of(work, struct udp_tunnel_nic, work); =20 - rtnl_lock(); + mutex_lock(&udp_tunnel_nic_lock); utn->work_pending =3D 0; __udp_tunnel_nic_device_sync(utn->dev, utn); =20 - if (utn->need_replay) + if (utn->need_replay) { + rtnl_lock(); udp_tunnel_nic_replay(utn->dev, utn); - rtnl_unlock(); + rtnl_unlock(); + } + mutex_unlock(&udp_tunnel_nic_lock); } =20 static struct udp_tunnel_nic * diff --git a/net/ipv4/udp_tunnel_stub.c b/net/ipv4/udp_tunnel_stub.c index c4b2888f5fef..d60b3262beb3 100644 --- a/net/ipv4/udp_tunnel_stub.c +++ b/net/ipv4/udp_tunnel_stub.c @@ -3,5 +3,7 @@ =20 #include =20 +DEFINE_MUTEX(udp_tunnel_nic_lock); +EXPORT_SYMBOL_GPL(udp_tunnel_nic_lock); const struct udp_tunnel_nic_ops *udp_tunnel_nic_ops; EXPORT_SYMBOL_GPL(udp_tunnel_nic_ops); --=20 2.49.0 From nobody Fri Dec 19 11:30:24 2025 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 5932A28D8CA; Tue, 20 May 2025 20:36:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747773382; cv=none; b=scaKQQq27aQiaoNlgqSBx8dWa7IYjbS90/BFk7RLp/785aOrtUO3GksBAUVD+wzU33GWvr4nKDA2QUu6Y2UwcT4t2jwYAK1a4zNWev44dmu/6fdoU5W3GANlEWw1BQYYdT8AL4NgHts+fTFwymkjYmiTHC0Pfna0UhszYi092W8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747773382; c=relaxed/simple; bh=BpT/h0vYVM/F7Qu3OnVojwEelU9Q3/KKLsVzvM8EYjc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U0HLNqxyofNbaLTvQUZsXu1dihMVSHyEXDM3QkyvO9i0eHZFuNnpYniq1bgbLmjyaMauTRtxeauWiGym38CPcC5g8i1Kc+wc5KMJTwMmr4FxRSivEmNRR1pMjpwGOFRSxQbbOWaR4x05nVAMv+ifZrNsARkmW6TVc6kJMCIspLk= 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=X4OgE11w; arc=none smtp.client-ip=209.85.214.177 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="X4OgE11w" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-22e033a3a07so62200235ad.0; Tue, 20 May 2025 13:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747773380; x=1748378180; 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=jCeM+ec5B4gH6tk0fEnypFNTVZat6T1JxRuML0u4Z8U=; b=X4OgE11wIVAJ3sMCkW/jiN7DY51oFZi+t4XvJ4JTcuazjOXy/k2sfa17vg4Y4YM/wf NwGZydMJ9c5RleXwnteuNrfi0bj0IsPNHK6ZkHIcGUmWLDedwCfSqhuGW3t5lt9x3qmk gM1OpYngj5X7gFPV8njPAa2Xhk5rNIvgjd1Vms4WoZ0gZXPDe4YmRA/TN780iwbZ2dV8 4Ml51vGAcInVtTHV+eag8YsEUT2Rmi4GDeSMSXe/tqFpQUtsWZ+pEuFL9XZikJ/Xd0ja ZdOr+S3HxqOmQmWOR6+nJ9jPYrBLFTkqLuYgUSpYn1gZ/UijlcscpGjqFp/xeFwTBupV ZTZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747773380; x=1748378180; 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=jCeM+ec5B4gH6tk0fEnypFNTVZat6T1JxRuML0u4Z8U=; b=GJk0q+8f81cqVVUtEu1PXN150y4/qqVIFjBFJVd9uVxvXaGQNalbxUh2/ryMOSHgmu Fe7AT6Av6Zv9tNIhh5L5y9I+YBalA+JgmHGLQBEa81qHnGyGVm/eiufhlSsMd1pMvd4k kgg/nb+S/uFsSuoG3NmeC3BYsNKQsnEF07/KzCLeP7K2D7ujJifsMiOrK6JnZTp7+HLA bj7btpBxIZ1yqSmQeNIenxlzbwUvUngBWCkHsZnb8Ss1dEy8ME47IH61tfeBGesxkiSM 4QtosZRxw9UTx62ds7nPoXT3KikajFmvUPL2DY1PsTmgNSfZ0njbeWHiu6+c//b/nGNX rpaw== X-Forwarded-Encrypted: i=1; AJvYcCWuyPAEqLEP6WkK19t2clgTac8MMkoHs8DkP0l5mGOKM++F38IORGD1dFZhQbx7xEVIPfx9tnMWXtchpdA=@vger.kernel.org, AJvYcCX3Yp2WikiilciWobUi6uWXI1uEPE4FndNOPoX/NSc0xziYWdzUOSHaKZwxWiwJdtxSRVI9CRxrwaJMbA==@vger.kernel.org X-Gm-Message-State: AOJu0YzlnKCOmCsMqtL8ZMQevvErugsqimccRudQ33zzB3wiD4huB6B4 t+npbYJD7oUwPMUkl4MUgcOcl1X3wOvtRvB2mxRtxSmgFngMDT5HGBWAAJmW X-Gm-Gg: ASbGnctnEjs4fk8neLD/kwIUkj14na7jrLEVXjwtrSXYccp65lOqIhELydDimm2SJAA kVicJK372o1NQDJspsowxvO0CEuLgcRRnEVMeR+8ixpPOOLGwMOsyecpMQi+ABV7w4zcGeu/N4t 104cRmksGYJ6NK3q7aofSVEjAYShAK6ZjdWK7iG3l+Da6oPUB2JZeEU7d46u0W17NtTaYXF0pzN ItgIVq0Q1TWenwvmZ+MWNmicnAYqk6dv0bOt2Kxkx5zdvdx+j30LUm6ulEobxvAH4DMFEfBZ3bP 6KK5Vv18xgjHA8HxY4xWEiJ+xXFrK91LQqM7lP+Z2cOCHH5l7U4nD8E0kemv21FRtDuyHHClJ+L mdnQ6I+c6skiz X-Google-Smtp-Source: AGHT+IHZAUIjrGWx7MHglWxuwcEk9khRmWgUQFYbF5wFZSXKA6EsR94YaJWuTX/WLyK6xZKL0cxykw== X-Received: by 2002:a17:902:d483:b0:232:17d8:486 with SMTP id d9443c01a7336-23217d81153mr195813465ad.22.1747773380107; Tue, 20 May 2025 13:36:20 -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-231d4ebba01sm80212605ad.208.2025.05.20.13.36.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 May 2025 13:36:19 -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, ruanjinjie@huawei.com, mheib@redhat.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, leon@kernel.org Subject: [PATCH net-next 3/3] Revert "bnxt_en: bring back rtnl_lock() in the bnxt_open() path" Date: Tue, 20 May 2025 13:36:14 -0700 Message-ID: <20250520203614.2693870-4-stfomichev@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250520203614.2693870-1-stfomichev@gmail.com> References: <20250520203614.2693870-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 Signed-off-by: Stanislav Fomichev Reviewed-by: Aleksandr Loktionov --- 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