[Openvpn-devel,net-next,v2,3/3] net: ovpn: use new noref xmit flow in ovpn_udp4_output
| Message ID | 20250912112420.4394-4-mmietus97@yahoo.com |
|---|---|
| State | Awaiting Upstream |
| Headers |
Return-Path: <openvpn-devel-bounces@lists.sourceforge.net>
Delivered-To: patchwork@openvpn.net
Received: by 2002:a05:7000:b149:b0:671:5a2c:6455 with SMTP id s9csp3736461maw;
Fri, 12 Sep 2025 04:35:23 -0700 (PDT)
X-Forwarded-Encrypted: i=2;
AJvYcCXP77gEOyPwUnfGJh+XnE0z2UmrZ7nUnyZLLtFY59yXd623ztSBrzZIHU74MNm96AnvIzJjkmvoq5w=@openvpn.net
X-Google-Smtp-Source:
AGHT+IG99032f0AGxZfEf38+A91E8OxZ0Jb6sX8DHwCfT9Q1zuLfEOHEGYpl5VUiEU1XOnwbhVpZ
X-Received: by 2002:a05:6870:6489:b0:30b:ae56:578b with SMTP id
586e51a60fabf-32e565c93camr1247344fac.39.1757676923387;
Fri, 12 Sep 2025 04:35:23 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1757676923; cv=none;
d=google.com; s=arc-20240605;
b=LtVWOEeT8tkqcdusgh1lYiyhlfTnS7OlL/9hcmSmwYRrrp72pyQAnrpnmSOoUG9ysE
OQ0UKOlCCRIM8OGypTG3YYGKlk/mC+Cn9jAfTPMPHYyegua02L3KnwxgUqQxOUwN0wGd
HlEI9ZFQnOYJNUCSqU6/MFnTRKfuWlsCnYW6Flpf/gHNPfqHOOTZKvtRGErr1JVNKbte
d171vD27mIGIHSe2K8QQ06xljO8Wi6rFK7vIWGEFa835CkjzU5B5X7QmNBg0ZxjO6yhY
xD6T3f6SkWNnN44MSLkRt7iqV1LB22Mgs+QD5DL0eO0Ob5SqROKUYJxk37s9IQo74hY5
/wng==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=errors-to:content-transfer-encoding:cc:reply-to:from:list-subscribe
:list-help:list-post:list-archive:list-unsubscribe:list-id
:precedence:subject:mime-version:references:in-reply-to:message-id
:date:to:dkim-signature:dkim-signature:dkim-signature:dkim-signature;
bh=ni6M5UTH+ljG6GdaAFhFRzNGC2aRTBSADq+z5QwBKh0=;
fh=Nld6ED5MA/hilqlwqNF+z3bWNSgobxU8XeD15u7QoP0=;
b=bakao2ViCwzQUymAM5hX2HzC5aTw8PsMeeehJYvffcy13IdCj4AZdPFfykMPL5wfr6
s3h5Tg8ywY4rN9xDELPA1BpTqXuviEGg8naAtFmPx5PEiGzpQAzipzVwTcMnib+cosq1
mWza85LbpcsoH1LjpTP9cI/gxTjyHKaDhX8twpqUXnm3/+41MLF0iXpuzBe/GilmzSbX
UU8CjiNeQAIUuoL0d8GpfUbLyvOv9HEm9n0/0OYgOozPO4B2XpR0r2b0YlRmYaDxRq39
UdK1Z34InykWNDbmyCLleHR4XFGLSIwVHk3AO5MsE3fatz7etFxmxOEdipfdbxkdGB7m
TmGg==;
dara=google.com
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=@lists.sourceforge.net header.s=beta
header.b="dpYBsB/l";
dkim=neutral (body hash did not verify) header.i=@sourceforge.net
header.s=x header.b=cneMqfQU;
dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x
header.b="Dd7o/HDw";
dkim=neutral (body hash did not verify) header.i=@yahoo.com
header.s=s2048 header.b=sCnMhxKO;
spf=pass (google.com: domain of
openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as
permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=lists.sourceforge.net
Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7])
by mx.google.com with ESMTPS id
46e09a7af769-7524abf2b59si1030264a34.198.2025.09.12.04.35.23
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Fri, 12 Sep 2025 04:35:23 -0700 (PDT)
Received-SPF: pass (google.com: domain of
openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as
permitted sender) client-ip=216.105.38.7;
Authentication-Results: mx.google.com;
dkim=pass header.i=@lists.sourceforge.net header.s=beta
header.b="dpYBsB/l";
dkim=neutral (body hash did not verify) header.i=@sourceforge.net
header.s=x header.b=cneMqfQU;
dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x
header.b="Dd7o/HDw";
dkim=neutral (body hash did not verify) header.i=@yahoo.com
header.s=s2048 header.b=sCnMhxKO;
spf=pass (google.com: domain of
openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as
permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=lists.sourceforge.net
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc:
Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive:
List-Unsubscribe:List-Id:Subject:MIME-Version:References:In-Reply-To:
Message-ID:Date:To:Sender:Content-ID:Content-Description:Resent-Date:
Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner;
bh=ni6M5UTH+ljG6GdaAFhFRzNGC2aRTBSADq+z5QwBKh0=; b=dpYBsB/lwm2dEfAP/+OGkxUI0F
wbwU2pM74sjgZ+Pk/IW04uGnw3N8Jh3SHCI6LQM4YTzy+JKM/Dl4d6VTpTKA2NCOxXcmLearyyfZv
V4ApMp7vzT8fhvgAxdvRCXowHgnCUKKmY279/Tz08hez/Dxr6Ho6OuPuVleu/kSqmN3o=;
Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com)
by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95)
(envelope-from <openvpn-devel-bounces@lists.sourceforge.net>)
id 1ux23j-0004dm-Cj;
Fri, 12 Sep 2025 11:35:20 +0000
Received: from [172.30.29.66] (helo=mx.sourceforge.net)
by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95)
(envelope-from <mmietus97@yahoo.com>) id 1ux23i-0004db-Ea
for openvpn-devel@lists.sourceforge.net;
Fri, 12 Sep 2025 11:35:19 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:References:
In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:
Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
List-Subscribe:List-Post:List-Owner:List-Archive;
bh=5tdcv9pUVVHNs+QwD5gb0mr+Chpp7ofQFMpu+NxUlmg=; b=cneMqfQUIGapZQ1uxxT4hZc3+s
JAesBEBpjzGv4Cjn1iovd2LNW43KfcEF+7DFdOD7RW2VpBfjH1UDDdKppJZnCyX/R79I97Sx82MhY
aHiePmijj43vRcsJcjcqFf1b9OWQHj7eGZXPZIGHGvcuz3dyDDKDkTMDKxm5MUmrcOek=;
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x
;
h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:
Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID:
Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
List-Post:List-Owner:List-Archive;
bh=5tdcv9pUVVHNs+QwD5gb0mr+Chpp7ofQFMpu+NxUlmg=; b=Dd7o/HDwFHwEYQlaB0XEgibx1O
vdIb6k6yYeaaESvDdjC4oFmZGOYNALU6i8D9QnojKg6R1Ne3WSFrHjiKYEs9VG7/BB/i65BNFH2uk
r7H0EP76IHxXnD2CDIkYw2vy1n1mT6T6C9+DFSQm3p4hmOtqRO78D67JGjPClS6isCZo=;
Received: from sonic306-20.consmr.mail.ne1.yahoo.com ([66.163.189.82])
by sfi-mx-2.v28.lw.sourceforge.com with esmtps
(TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95)
id 1ux23i-0003c5-Qj for openvpn-devel@lists.sourceforge.net;
Fri, 12 Sep 2025 11:35:19 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
t=1757676912; bh=5tdcv9pUVVHNs+QwD5gb0mr+Chpp7ofQFMpu+NxUlmg=;
h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To;
b=sCnMhxKOSz2Cy2QTo9wHOnMcgrzMUw7sCjsLIJ6QyZmiHGZwhHPytkIdmDcUZeZvs4KmkYsuQ6Ox/nEs9kVpc+mKnuj/kwzs0Ly6EmihfsjOqibbTb8ze9ImaajcLaMWgVeo8aJZzOxYs9ArMwrYvvMA80TQnyvRozR98i1WKeo1ljp4Ds/kTkE/kepU7GSoKAyHrvEn9aW7e2e768IzPJzRTGvgqk/Gnr71hIK0Ets2Ynjlempbc4bEJr+huK++3HfRpRYrsYNqRUa47+/YeqwPzzVctClCbGEA2xZeXZzTbUf1+8OriE7odghCcNBNz0XTxq8jX9q1/+YZCeneqw==
X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
t=1757676913; bh=FSFmoJ3G8E8inBNWfv/HqrK7GT+k7BiyGppOM7vAkW4=;
h=X-Sonic-MF:From:To:Subject:Date:From:Subject;
b=gswYaND7Em78YcX0Dn4ZPCdQBONYgDeWvuqadQRmWC7W+kmS0na+6h05UBRD0ku400EDL3AZtLj4TeZyXGtykNsvelTITSnuPrp6OPtneD0bBOKxJ+doAi/LfCGepWS81hALbL0cGRIRqKZyhOIqSU/mXrlsEaPicpohUANqCQIpeQTWYF7KqptxeXIUMaeCgsC4EsGxYD3faQnSmM4awGEH6sNSqSQwqaGTf6GJ6glBsjqjsIO4ADv7usZSCO7tRYJSkBEBfewjA+8lqRGkLqwLU4BBq3b1AgZ83kmjWArwsn/GC/1AHLwGFFFpCno1kJ7C37CfYtY9Unp4Yf4cKg==
X-YMail-OSG: sjMusMgVM1kbrsP_QoAyz0qrbkinPBdd4pjNcIpj655LT8OdKlVAtXxwLveG1Ui
TnTGBZJPRiDkBWTkM1WWk0xYMpR7K0siOIAoQjs1uZcKy.bX9sIfnkm5evVOs7o7HVuAkFktk6Z.
9tJYm2K3_hWqOEFoQKW9dUUOxmBIFJ3U0aY5ljNk1xW9C0TIfL7oCOtEb12mgujscXhszg3zBQ9c
68mspQph.FYjZJzQEUtUKWwwPf9WnUxZiQ__TXKSqPO4e9xR_eqXU1EyZXMHpMEXbAx.JDYHRXx2
My4iGgqXWkbkEkWLs3sKs5AL1IMaaaj.REEs8tyi.W7vcnWvSff8qmYfeZ4QC6GaR2SqeEQtpiPp
L5ktNh7WN6pR8RrCYI9HhLiKc7FTOvBvva4ULOQd7LsdVK0OutTSszVPaksvHwRPAGAzVdTyYJjB
bYlOWIn0SVQfKT.hzME.g55MlM8brQfw_P7GTE5CsLw081AifLb3lsDx7xXBwyYXeO86qZEEa6T0
CDKsHWebwaE3l7lskRXXgeNVTbOQKebk6G_qkcbQjSsfYcWZm5a5QwW2pWsRGc7cWGMPIPYL2Krk
M3FNwMrI_Io0aPC58QaVUDr.viOeXpS_iDPUS_xYdPt1nCOXsGIElb1TXM0QgDXabTkGqQVFLnOV
JzL4wtNfkzMbZvHBabFlLDKKXeq6DqXmwbXFmSgmQ_E3VsGoJXp7.xvKJLSqziYmnGlXLXV.OYOu
LLvyJK.Ch43eliiRNaKGU3AIedI4ntq_3y_x_cOovYRqnFGqgKd8qriWyiiXSb7PQ9VcxMizBSiP
rAY1syCZx8y7.y1L5V4yv_Xu6XVmp3dzD74ZdSDTN7Iss3OHQwZlqE7GuzaYOIKdBi8VH33tLtlU
sbgx8hB1aGaQJA5gBZoLN4mk19LIXrCTrjR7XHOlNgvvb78AP5IV9pokpceFTw9QpBdO4XCU57QD
RcyRmIqAM73_cxzgcXsT0OmDYuzt7kNH7fFyB75Qe6E1Y2qjqklKpBuszaT2.3JljDOseNxhp14_
ayfFgJKoaD8jo1cIqV4sYxLEVqvH8q6Qy6JQTayZubZKUC00qDvrg3lgr_BY27lXvbXNK6BWdg7U
cyxZV6zlIabckIPyAM2cop1qfYBKAH6MWf6OBgbnhacJlFWDo2YjWKcfhg7d3LQ7spEEZg1kGilg
rBWh.8y.zaRgzyYttVcFbTO726SJPRX2C1yKZL6guHDqpJaPmXL53LudDKJSVTN9v2vRh1vOiigN
1x7JhzM7uGgyvWTIMA9jKc0RIt_qntZOznjfr1cKmLQfPXZRW0PSjlqbx5P2SHCPdXaCPIZCQUQk
aHD259fHQTl0wfAdltkngYnpxey55U2GiYIOsXcv.WabBZFZe4DP_VSaELSuFw28_7cnKJZEwIAm
YrGOVMeeO061qYrVEJJU9htTLIJcmbB1ArvSlSGy5C0B4d_3SeFxkqdGehXt0Z8I1rKfAvfPJ5xV
gmNn8OcoCoPyZinCiH54nSrXL5xr5JwjBFaSGptWI1Hy0qNpS6ib8yUiCR4PtIQpLmjfy_ZWC1rN
_eV5eDhmB7QqDY_aHM854dMi6KjHGzNfkodE7TWUEYJDHyd53KI0GZ.24ujSWB1qQaOJabQ5gJe9
C1J3PZxTiwUHF5nZzaa7cvJvxfi1JEHFcIdhNCHb7kMLskFvXcWOQbaqF54_yIdnDeX6Dz9gr0Of
49ZjchR_txWRNVR4_NvFXseoSd9FMHqr3zg6eQuoBueEo2Jliwr_xTGZILzL4Ns79RmQ7uurkOm8
xEd.Mbjs5iGSdo_._uJ2a87iCoBnf8iEREb_9mIx88a4dxe137KH7H.leo9qXSKZFhWBBNqzZ.jA
rGe.MMUz9JtJlTAqFGKhVHS3L0xAuTc1aOm2gEUObLacwTTGAKXRgbVqfkq2MOTR.UFKfH7qseku
2DHLQzgBB8uUip3IoSG8v3gZCQ2kd31kapHZGp4gyu3HnVMO.k1lIvWwhJ9qYPRTzq0YfONfPggL
RYjzzg8H0KWt3STiZMDxPSSK2S5_aS3RTVys4Yb3e65jhKpZENGVnUMgUa2J4lYzuMMcNrIKZFn7
P_XPKTb0F32jtQxB8QtieMM45zK6M1Xf537sfIVnYdZK0i86dveN0D.SN.Gu59QxmQVn8Cho3P_l
8WvFiFVzRgGLOATwyez5MU85.hRhteCIOiQnXywTGYFeaq3Ib_l0-
X-Sonic-MF: <mmietus97@yahoo.com>
X-Sonic-ID: 5dc2c8ea-e83c-4326-a34e-d2b13ee2b719
Received: from sonic.gate.mail.ne1.yahoo.com by
sonic306.consmr.mail.ne1.yahoo.com with HTTP; Fri, 12 Sep 2025 11:35:12 +0000
Received: by hermes--production-ir2-7d8c9489f-pnggd (Yahoo Inc. Hermes SMTP
Server) with ESMTPA ID 93cda13a9625b3ea865113cded111022;
Fri, 12 Sep 2025 11:24:57 +0000 (UTC)
To: netdev@vger.kernel.org,
antonio@openvpn.net,
kuba@kernel.org
Date: Fri, 12 Sep 2025 13:24:20 +0200
Message-ID: <20250912112420.4394-4-mmietus97@yahoo.com>
X-Mailer: git-send-email 2.51.0
In-Reply-To: <20250912112420.4394-1-mmietus97@yahoo.com>
References: <20250912112420.4394-1-mmietus97@yahoo.com>
MIME-Version: 1.0
Content-Length: 1726
X-Spam-Score: 0.1 (/)
X-Spam-Report: Spam detection software,
running on the system "sfi-spamd-2.hosts.colo.sdot.me",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: ovpn_udp4_output unnecessarily references the dst_entry from
the dst_cache. Reduce this overhead by using the newly implemented
udp_tunnel_xmit_skb_noref
function and dst_cache helpers. Signed-off-by: Marek Mietus ---
drivers/net/ovpn/udp.c
| 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
Content analysis details: (0.1 points, 5.0 required)
pts rule name description
---- ----------------------
--------------------------------------------------
0.1 DKIM_SIGNED Message has a DKIM or DK signature,
not necessarily valid
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's
domain
-0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from
envelope-from domain
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
[mmietus97(at)yahoo.com]
0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in
digit [mmietus97(at)yahoo.com]
0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2)
[66.163.189.82 listed in wl.mailspike.net]
X-Headers-End: 1ux23i-0003c5-Qj
Subject: [Openvpn-devel] [PATCH net-next v2 3/3] net: ovpn: use new noref
xmit flow in ovpn_udp4_output
X-BeenThere: openvpn-devel@lists.sourceforge.net
X-Mailman-Version: 2.1.21
Precedence: list
List-Id: <openvpn-devel.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/options/openvpn-devel>,
<mailto:openvpn-devel-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive:
<http://sourceforge.net/mailarchive/forum.php?forum_name=openvpn-devel>
List-Post: <mailto:openvpn-devel@lists.sourceforge.net>
List-Help: <mailto:openvpn-devel-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/openvpn-devel>,
<mailto:openvpn-devel-request@lists.sourceforge.net?subject=subscribe>
From: Marek Mietus via Openvpn-devel <openvpn-devel@lists.sourceforge.net>
Reply-To: Marek Mietus <mmietus97@yahoo.com>
Cc: openvpn-devel@lists.sourceforge.net
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: openvpn-devel-bounces@lists.sourceforge.net
X-getmail-retrieved-from-mailbox: Inbox
X-GMAIL-THRID: =?utf-8?q?1843057837556544174?=
X-GMAIL-MSGID: =?utf-8?q?1843057837556544174?=
|
| Series |
net: tunnel: introduce noref xmit flows for tunnels
|
|
Commit Message
Marek Mietus
Sept. 12, 2025, 11:24 a.m. UTC
ovpn_udp4_output unnecessarily references the dst_entry from the
dst_cache.
Reduce this overhead by using the newly implemented
udp_tunnel_xmit_skb_noref function and dst_cache helpers.
Signed-off-by: Marek Mietus <mmietus97@yahoo.com>
---
drivers/net/ovpn/udp.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
Comments
2025-09-12, 13:24:20 +0200, Marek Mietus wrote: > ovpn_udp4_output unnecessarily references the dst_entry from the > dst_cache. This should probably include a description of why it's safe to skip the reference in this context. > Reduce this overhead by using the newly implemented > udp_tunnel_xmit_skb_noref function and dst_cache helpers. > > Signed-off-by: Marek Mietus <mmietus97@yahoo.com> > --- > drivers/net/ovpn/udp.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ovpn/udp.c b/drivers/net/ovpn/udp.c > index d6a0f7a0b75d..c5d289c23d2b 100644 > --- a/drivers/net/ovpn/udp.c > +++ b/drivers/net/ovpn/udp.c > @@ -158,7 +158,7 @@ static int ovpn_udp4_output(struct ovpn_peer *peer, struct ovpn_bind *bind, > int ret; > > local_bh_disable(); > - rt = dst_cache_get_ip4(cache, &fl.saddr); > + rt = dst_cache_get_ip4_rcu(cache, &fl.saddr); > if (rt) > goto transmit; > > @@ -194,12 +194,12 @@ static int ovpn_udp4_output(struct ovpn_peer *peer, struct ovpn_bind *bind, > ret); > goto err; > } > - dst_cache_set_ip4(cache, &rt->dst, fl.saddr); > + dst_cache_steal_ip4(cache, &rt->dst, fl.saddr); > > transmit: > - udp_tunnel_xmit_skb(rt, sk, skb, fl.saddr, fl.daddr, 0, > - ip4_dst_hoplimit(&rt->dst), 0, fl.fl4_sport, > - fl.fl4_dport, false, sk->sk_no_check_tx, 0); > + udp_tunnel_xmit_skb_noref(rt, sk, skb, fl.saddr, fl.daddr, 0, > + ip4_dst_hoplimit(&rt->dst), 0, fl.fl4_sport, > + fl.fl4_dport, false, sk->sk_no_check_tx, 0); > ret = 0; > err: > local_bh_enable(); > @@ -269,7 +269,7 @@ static int ovpn_udp6_output(struct ovpn_peer *peer, struct ovpn_bind *bind, > * fragment packets if needed. > * > * NOTE: this is not needed for IPv4 because we pass df=0 to > - * udp_tunnel_xmit_skb() > + * udp_tunnel_xmit_skb_noref() > */ > skb->ignore_df = 1; > udp_tunnel6_xmit_skb(dst, sk, skb, skb->dev, &fl.saddr, &fl.daddr, 0, Why are you changing only ipv4? Is there something in the ipv6 code that prevents this?
W dniu 9/16/25 o 12:49, Sabrina Dubroca pisze: > 2025-09-12, 13:24:20 +0200, Marek Mietus wrote: >> ovpn_udp4_output unnecessarily references the dst_entry from the >> dst_cache. > > This should probably include a description of why it's safe to skip > the reference in this context. > Noted, will do. >> Reduce this overhead by using the newly implemented >> udp_tunnel_xmit_skb_noref function and dst_cache helpers. >> >> Signed-off-by: Marek Mietus <mmietus97@yahoo.com> >> --- >> drivers/net/ovpn/udp.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/net/ovpn/udp.c b/drivers/net/ovpn/udp.c >> index d6a0f7a0b75d..c5d289c23d2b 100644 >> --- a/drivers/net/ovpn/udp.c >> +++ b/drivers/net/ovpn/udp.c >> @@ -158,7 +158,7 @@ static int ovpn_udp4_output(struct ovpn_peer *peer, struct ovpn_bind *bind, >> int ret; >> >> local_bh_disable(); >> - rt = dst_cache_get_ip4(cache, &fl.saddr); >> + rt = dst_cache_get_ip4_rcu(cache, &fl.saddr); >> if (rt) >> goto transmit; >> >> @@ -194,12 +194,12 @@ static int ovpn_udp4_output(struct ovpn_peer *peer, struct ovpn_bind *bind, >> ret); >> goto err; >> } >> - dst_cache_set_ip4(cache, &rt->dst, fl.saddr); >> + dst_cache_steal_ip4(cache, &rt->dst, fl.saddr); >> >> transmit: >> - udp_tunnel_xmit_skb(rt, sk, skb, fl.saddr, fl.daddr, 0, >> - ip4_dst_hoplimit(&rt->dst), 0, fl.fl4_sport, >> - fl.fl4_dport, false, sk->sk_no_check_tx, 0); >> + udp_tunnel_xmit_skb_noref(rt, sk, skb, fl.saddr, fl.daddr, 0, >> + ip4_dst_hoplimit(&rt->dst), 0, fl.fl4_sport, >> + fl.fl4_dport, false, sk->sk_no_check_tx, 0); >> ret = 0; >> err: >> local_bh_enable(); >> @@ -269,7 +269,7 @@ static int ovpn_udp6_output(struct ovpn_peer *peer, struct ovpn_bind *bind, >> * fragment packets if needed. >> * >> * NOTE: this is not needed for IPv4 because we pass df=0 to >> - * udp_tunnel_xmit_skb() >> + * udp_tunnel_xmit_skb_noref() >> */ >> skb->ignore_df = 1; >> udp_tunnel6_xmit_skb(dst, sk, skb, skb->dev, &fl.saddr, &fl.daddr, 0, > > Why are you changing only ipv4? Is there something in the ipv6 code > that prevents this? > I'm not sure. I'm not as acquainted with IPv6 as I am with IPv4. (and thought I'd hold off until I got a positive response about the series) IPv4 already has some noref xmit optimizations, so it just felt like the right place to start.
2025-09-18, 18:29:08 +0200, Marek Mietus wrote: > W dniu 9/16/25 o 12:49, Sabrina Dubroca pisze: > > 2025-09-12, 13:24:20 +0200, Marek Mietus wrote: > > Why are you changing only ipv4? Is there something in the ipv6 code > > that prevents this? > > > > I'm not sure. I'm not as acquainted with IPv6 as I am with IPv4. (and thought I'd hold off > until I got a positive response about the series) Ok, understood. > IPv4 already has some noref xmit optimizations, so it just felt like the right place to start. There's also some in IPv6, see d14730b8e911 ("ipv6: use RCU in inet6_csk_xmit()").
diff --git a/drivers/net/ovpn/udp.c b/drivers/net/ovpn/udp.c index d6a0f7a0b75d..c5d289c23d2b 100644 --- a/drivers/net/ovpn/udp.c +++ b/drivers/net/ovpn/udp.c @@ -158,7 +158,7 @@ static int ovpn_udp4_output(struct ovpn_peer *peer, struct ovpn_bind *bind, int ret; local_bh_disable(); - rt = dst_cache_get_ip4(cache, &fl.saddr); + rt = dst_cache_get_ip4_rcu(cache, &fl.saddr); if (rt) goto transmit; @@ -194,12 +194,12 @@ static int ovpn_udp4_output(struct ovpn_peer *peer, struct ovpn_bind *bind, ret); goto err; } - dst_cache_set_ip4(cache, &rt->dst, fl.saddr); + dst_cache_steal_ip4(cache, &rt->dst, fl.saddr); transmit: - udp_tunnel_xmit_skb(rt, sk, skb, fl.saddr, fl.daddr, 0, - ip4_dst_hoplimit(&rt->dst), 0, fl.fl4_sport, - fl.fl4_dport, false, sk->sk_no_check_tx, 0); + udp_tunnel_xmit_skb_noref(rt, sk, skb, fl.saddr, fl.daddr, 0, + ip4_dst_hoplimit(&rt->dst), 0, fl.fl4_sport, + fl.fl4_dport, false, sk->sk_no_check_tx, 0); ret = 0; err: local_bh_enable(); @@ -269,7 +269,7 @@ static int ovpn_udp6_output(struct ovpn_peer *peer, struct ovpn_bind *bind, * fragment packets if needed. * * NOTE: this is not needed for IPv4 because we pass df=0 to - * udp_tunnel_xmit_skb() + * udp_tunnel_xmit_skb_noref() */ skb->ignore_df = 1; udp_tunnel6_xmit_skb(dst, sk, skb, skb->dev, &fl.saddr, &fl.daddr, 0,