From nobody Wed Oct 8 19:05:19 2025 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) (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 49CEC1DF252; Wed, 25 Jun 2025 03:40:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750822831; cv=none; b=kMeZ9FdPy42mjB+pzZcenE7eX7eszAZC2ijJxQA95gc6swjvSCJONscQgPgoJ1fhRtK9COX07zRI/UZN/ugS4fry14SKOKRT4f6HSFk20GmauW7gtWwHk5nLpTQkkeht+RIaR7PC0MNcnUHff29PLjsEJWGr1fyuWTRog8IIcyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750822831; c=relaxed/simple; bh=u55QHI4onsRavou8gTqCnBb2RBGfBvtamf7w6wkyNXk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YoHuNzKyjdIwxJ4jgYKOeJ70kROFht0oxO+K3t3Yaq0/Ka4VBZ7Mlrm18C2y0+Z9570dnf/BHMHM9o2uw0Z10ZBaW4Rf/N5cFwkpyS4I5b5QzwfynEjtgv4oX31rEBZNirQS10A8cnGNeHU54XnkilP1iSK55exNEzj4E6LF79o= 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=cqlXiyL3; arc=none smtp.client-ip=209.85.210.174 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="cqlXiyL3" Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-7426c44e014so749696b3a.3; Tue, 24 Jun 2025 20:40:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750822829; x=1751427629; 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=gAGrgWMnCCo0WPOEy8wMJ9PQbjafbCkKJMKCoMu9VEk=; b=cqlXiyL3zJklYNiRb5rdMzlbv3vFl+lLEDSBsY4FymO9L19zJBBwBNhkZLLFiLVt2t UBjdDiwkilluxMb5phQdunI+/I3Wr1qHW0u0vtvfY0TzuOLjmV5bxn0NPj1dtd9GE3LC xU9zYfwzJNRuwqQGwikawz2ibpxiontoferV1xxeUIJCdIripxb0OxWfJ9PjEWPH8SfW N0Ziuhw0Ay1F0HjGaunCtMzN4LV7CSx37sQy6kzt/w3f4IN2N91odWNTsX3llaMqxwYL CbaBrTNtkJaTccQTmWK4z7PFdeC4Ormzm9VeuXHn4CSZBCZGXJsWOegHi+ZVzU9dqGal fbJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750822829; x=1751427629; 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=gAGrgWMnCCo0WPOEy8wMJ9PQbjafbCkKJMKCoMu9VEk=; b=vecEMWh8muOwnaKV4hMwVBPPHyAXwHESeQ6Zd7qYhHCW6J7idE9lDjxjsb+RUHv0Yq gzv5jac9HatnmxyHBInqqd7qce2dW50/lx1HYcfmLXrlcZt07w5I6Zfj1GH89qAT5H+r MttimZAgOWBo0xwT4SsqU99KwMiL8JwLBpInUDowZOCzj/sBW5mxdltwqrP8G7fxm038 5hklOKUkn/d2wW8I31x2J/HfNVIfGNiv1bXI3W+QT4XqBoHT/rKn3k5kEafD6E9pI42w CD5JTopAwNzknNWoMJlhbyxKGF/YPxHpv2n19R/WTLx+Zm1Q4LDENtCbZAyJSNvYmf7x A4kA== X-Forwarded-Encrypted: i=1; AJvYcCV6cQUOrt3+x7adq7t3qBBnscX+jBgnfBuV/jTMOGa+P+dPRQ8SGgiZyzYNpaY9YyUeZHSnpCzjQpsK@vger.kernel.org, AJvYcCVvRyAto0cl16o/99O1v5+JI3Fy9O0wBGFlhT48MiCS6Mubrc7MWlqwn5vp/iMti2Hnxc9jhTtGu7EoHP4=@vger.kernel.org, AJvYcCW84ujoO/DtbRRJlFen8AHALqVjXSYfXyn2NFP+z0BgzHTYofmc1KMJjkNsznKhT46PY4Y5cPEy@vger.kernel.org X-Gm-Message-State: AOJu0YwwF264iJgP94cy3v+4ag9jjcZ+N7eOGGI2KPO0z0Q1NoROZIR6 RDuETmCHasywqoCRZe1HHqr9nCPlqhSSy9RgKnj50zXQOwHmbitwEb6+ X-Gm-Gg: ASbGncvqmEt2LOEd5GFyzNzTub9of//SkL1uBk+YdSt4a2QInbJImTvuFaphgIb1SsZ vETqzsBML/6wfiFY++N4kdZO3DUjeOt7YOcajW+Lc8e2PUEBXKJHnkoQ/RXCzRK0G+VvISk3tuA elLHXYUb9wNuppJwZ57uViP6FkB1NppxmbiiUq2PGgYPxWEsbl1j0M+W9SHHJrRJeVqc4KbBxwo NOZg2MH5CqfPVxeGT57+EYhzK5h/M89pFvuFLVcz1omJoA2hgPRoG00g+Yw3CI5NtiVGd/fkgks rvH0gqt6IcA5JKgbMY/RO/kaw+UVV0TzTmX539puz63MJ5jTxR5xAeKM X-Google-Smtp-Source: AGHT+IF8nT3qZP7P5ZiNyvCsTfo09jaePq3mSYC+KbTVjWdY7pEoSFc7ax0gfTXC8tltFvP4rkaA8w== X-Received: by 2002:a05:6a20:258a:b0:220:33ae:dabb with SMTP id adf61e73a8af0-2207f2a2252mr2755174637.29.1750822829486; Tue, 24 Jun 2025 20:40:29 -0700 (PDT) Received: from gmail.com ([116.237.168.226]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b31f1241f4asm9640143a12.44.2025.06.24.20.40.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 20:40:29 -0700 (PDT) From: Qingfang Deng To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-ppp@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guillaume Nault Subject: [PATCH net-next 1/3] ppp: convert rlock to rwlock to improve RX concurrency Date: Wed, 25 Jun 2025 11:40:18 +0800 Message-ID: <20250625034021.3650359-2-dqfext@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250625034021.3650359-1-dqfext@gmail.com> References: <20250625034021.3650359-1-dqfext@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 rlock spinlock in struct ppp protects the receive path, but it is frequently used in a read-mostly manner. Converting it to rwlock_t allows multiple CPUs to concurrently enter the receive path (e.g., ppp_do_recv()), improving RX performance. Write locking is preserved for code paths that mutate state. Signed-off-by: Qingfang Deng --- drivers/net/ppp/ppp_generic.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c index 4cf9d1822a83..f0f8a75e3aef 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c @@ -118,7 +118,7 @@ struct ppp { struct file *owner; /* file that owns this unit 48 */ struct list_head channels; /* list of attached channels 4c */ int n_channels; /* how many channels are attached 54 */ - spinlock_t rlock; /* lock for receive side 58 */ + rwlock_t rlock; /* lock for receive side 58 */ spinlock_t wlock; /* lock for transmit side 5c */ int __percpu *xmit_recursion; /* xmit recursion detect */ int mru; /* max receive unit 60 */ @@ -371,12 +371,14 @@ static const int npindex_to_ethertype[NUM_NP] =3D { */ #define ppp_xmit_lock(ppp) spin_lock_bh(&(ppp)->wlock) #define ppp_xmit_unlock(ppp) spin_unlock_bh(&(ppp)->wlock) -#define ppp_recv_lock(ppp) spin_lock_bh(&(ppp)->rlock) -#define ppp_recv_unlock(ppp) spin_unlock_bh(&(ppp)->rlock) +#define ppp_recv_lock(ppp) write_lock_bh(&(ppp)->rlock) +#define ppp_recv_unlock(ppp) write_unlock_bh(&(ppp)->rlock) #define ppp_lock(ppp) do { ppp_xmit_lock(ppp); \ ppp_recv_lock(ppp); } while (0) #define ppp_unlock(ppp) do { ppp_recv_unlock(ppp); \ ppp_xmit_unlock(ppp); } while (0) +#define ppp_recv_read_lock(ppp) read_lock_bh(&(ppp)->rlock) +#define ppp_recv_read_unlock(ppp) read_unlock_bh(&(ppp)->rlock) =20 /* * /dev/ppp device routines. @@ -1246,7 +1248,7 @@ static int ppp_dev_configure(struct net *src_net, str= uct net_device *dev, for (indx =3D 0; indx < NUM_NP; ++indx) ppp->npmode[indx] =3D NPMODE_PASS; INIT_LIST_HEAD(&ppp->channels); - spin_lock_init(&ppp->rlock); + rwlock_init(&ppp->rlock); spin_lock_init(&ppp->wlock); =20 ppp->xmit_recursion =3D alloc_percpu(int); @@ -2193,12 +2195,12 @@ struct ppp_mp_skb_parm { static inline void ppp_do_recv(struct ppp *ppp, struct sk_buff *skb, struct channel *pch) { - ppp_recv_lock(ppp); + ppp_recv_read_lock(ppp); if (!ppp->closing) ppp_receive_frame(ppp, skb, pch); else kfree_skb(skb); - ppp_recv_unlock(ppp); + ppp_recv_read_unlock(ppp); } =20 /** --=20 2.43.0 From nobody Wed Oct 8 19:05:19 2025 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (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 3C9CC1DDC1E; Wed, 25 Jun 2025 03:40:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750822835; cv=none; b=SPPc3JebkkOd1xy7Le7mm4BeqLL49IG/G2WwiL/mGphAwAmkq4YbfuDuVz3wwLtHQemjcbQQ5I5y8pn3zur4iAQ8BnIhZ7FM0zMKttHpoDkljJFEnsFo6JE3hTDPU6c/cPQwObvO6w87zeAPFquY/gwC/eRomQJvys8+nY1kdic= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750822835; c=relaxed/simple; bh=m9UCB1P/GvtFbY2gFYHNB4ATzSNqAcgF/+6urrrDPmo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ghPvKWns2ofdDuI0O8TqAY1s+LPUJ06pScIG59kmVv2hN+3741dP4Z7q9WMBIGiTNjg1ACi0jnDwbwlmcQYaH+rUrQr4B0Ms9lKQA6dIQcdHJ4VK6on5eaiJ9ZE3+zLi0qHeHAmEpLraJqfgYqiajPyeuJcFrhpqJWFqeWzd9dc= 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=VnChaHOH; arc=none smtp.client-ip=209.85.214.180 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="VnChaHOH" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2352400344aso15338965ad.2; Tue, 24 Jun 2025 20:40:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750822832; x=1751427632; 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=xybhSY03PxXHOqVRCd6iZj51mdLSivNqZ6hUhbRTzh4=; b=VnChaHOH++K8unXnMxc3Fq0zryBaoaiEBMD1I0cTk/pgL6s/oHIe9RUuEnIbtdEoKl QIyNbs1ayf7PjJ3lTP24YKrKxpt9M8NQHWge6Fd6kwdL5yLa/Bz4kWA5TnnghyZJL8mV foyeD4Ua7hr49ezQsguC/VUwPnRU3zBb4Whqrin219p2kW4OwT3Zm1JQuMFFHKqakJhz ftIaiYT2BjXl0IfOtz9fcG8VmPUNSLxAPsQPHVNCjHT26AvW23nH8zdT4IEbH1EN5BiI cZw9UzjKVme+i1sai+hfno0S1K/55nDI+QPr4q79+gdvVl4lbRQFKJ40M3MdcMWmmcCM rHuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750822832; x=1751427632; 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=xybhSY03PxXHOqVRCd6iZj51mdLSivNqZ6hUhbRTzh4=; b=E1Nhgd0XV5fTSi6x99Mu0eWWvgmuz2xNAOQWEqbnY0YsUBHFaPfXu/BL8I9kZp87ab Nr4rGkZ8dx19uqI2faxzaZIImvXtZ6BNqCnLSPVQS0pm8vFC3nOaxNeeF7u6Qd/MoZz/ V7oSHNaQgzjfV3iMXxQ//IuECMyIX3X6CEJQU7M2nj7/vg9mpDRujlEDcIUuoFp6Flkj vzzIvWdTxqnCzpbPBTslbSOkNf2bBa0l2e5C5W26qO46sb01uvxYx7PDqeQsW/oENj7J Mt3lCQ1P0CMUTtzqhL8qeKlSKaF+CjNMKFitwhDBQHDE/NbNH/CwRo4uNwwegppNYuB2 AncA== X-Forwarded-Encrypted: i=1; AJvYcCV1bqz9hWN1w/LSJRPfrLRulB8K+gOw2NXMJvgwlxocAYh0gZSpmFDJ3wiRwvgsuknmPFf40ubo@vger.kernel.org, AJvYcCWUWopcchlRpQTwJzLTckQUa3rEtDOr9sobQ5ydLtgIUWgvBdkHhXVAern6+QVZatt52MJ3O9w9cr1Z@vger.kernel.org, AJvYcCXdunyqBJgT0fQKDWYGMjGdAiYM4o95wROR4aNWvTDebjpHo48OH8CwRxfBVOB7kHAXSVhhuWDnik+navI=@vger.kernel.org X-Gm-Message-State: AOJu0YyC/qRg1BFNjkucoeqOo+VU1dCu5gLnl5FGgLU2fd/Wc+d5a3cF b9SMIyQPO3hxPBurJvaxi6yF9Ki4ZNyAYnPV969G+9SIiC1OhYhdOj3T X-Gm-Gg: ASbGncsEHbm6ZVcaanof0oR4/9arNItXUaXsUhgfhsm/hPHREdhCGbvX+VgxiKg4eb9 RFFTSUueU9fzGkZQLrxAyrKw/BUhfIBb5zV309+od1A3oWc/krWMxri8FT9rZCALvqMIklVG3St ufb65HoP4G7SS8EWU09+RUIe3BTK+fja7Ra57RwNa/g3AbBhHXYZwUrMtSplrlOTLSRYqcuA3p+ WXbPOtxaVeJakPuadcw9JU/P3X8bN6vswtTrA5+CzRklBf5kts1pPJ1IQ40QYiOZ6wlCt/+w0SP rwwbyCoTtF0ttfSY3+qbL+uG+yyzCvR4lQ1zzDWRgST5x/obVhIc1dCz X-Google-Smtp-Source: AGHT+IHM1TQj+OvrL4n8l0wjjKtrm5DykckFXUshmPrZnyb+H2mzphLep5vhAuTZLoOQZ1IExpUthA== X-Received: by 2002:a17:902:e74d:b0:22e:72fe:5f9c with SMTP id d9443c01a7336-2382478a93amr23416585ad.42.1750822832551; Tue, 24 Jun 2025 20:40:32 -0700 (PDT) Received: from gmail.com ([116.237.168.226]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b31f1241f4asm9640143a12.44.2025.06.24.20.40.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 20:40:32 -0700 (PDT) From: Qingfang Deng To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Michal Ostrowski , linux-ppp@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guillaume Nault Subject: [PATCH net-next 2/3] pppoe: bypass sk_receive_skb for PPPOX_BOUND sockets Date: Wed, 25 Jun 2025 11:40:19 +0800 Message-ID: <20250625034021.3650359-3-dqfext@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250625034021.3650359-1-dqfext@gmail.com> References: <20250625034021.3650359-1-dqfext@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" When a PPPoE session socket is in PPPOX_BOUND state, the RX path is fully synchronous and does not require socket receive queueing or callbacks. Avoid calling sk_receive_skb(), which acquires the socket lock and adds overhead. Call ppp_input() directly to reduce lock contention and improve performance on RX path. Signed-off-by: Qingfang Deng --- drivers/net/ppp/pppoe.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/net/ppp/pppoe.c b/drivers/net/ppp/pppoe.c index 410effa42ade..ba30d7afe9ff 100644 --- a/drivers/net/ppp/pppoe.c +++ b/drivers/net/ppp/pppoe.c @@ -413,6 +413,7 @@ static int pppoe_rcv(struct sk_buff *skb, struct net_de= vice *dev, struct pppoe_hdr *ph; struct pppox_sock *po; struct pppoe_net *pn; + struct sock *sk; int len; =20 if (skb->pkt_type =3D=3D PACKET_OTHERHOST) @@ -448,7 +449,14 @@ static int pppoe_rcv(struct sk_buff *skb, struct net_d= evice *dev, if (!po) goto drop; =20 - return sk_receive_skb(sk_pppox(po), skb, 0); + sk =3D sk_pppox(po); + if (sk->sk_state & PPPOX_BOUND) { + ppp_input(&po->chan, skb); + sock_put(sk); + return NET_RX_SUCCESS; + } + + return sk_receive_skb(sk, skb, 0); =20 drop: kfree_skb(skb); --=20 2.43.0 From nobody Wed Oct 8 19:05:19 2025 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.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 32EE21E5201; Wed, 25 Jun 2025 03:40:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750822837; cv=none; b=C9LXTv0X+8fWr5l7foGZqNkzkvb5eEA/U71lwIDaJ1NYGGj7bG+ETXhwrEgcRmjeFt1lHTmza1yg9Kw/+okqZsyo3qR2dH8hyofIa5uMfmDwCaYAjHx3TZgXtS5BKGbpF6eCBMH5g9u4u2Xcx+KmxYLAeGFgUOScoYpFr6tYnEo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750822837; c=relaxed/simple; bh=hYUNfqwe+K6kc7dnp7yEcTWB6x4Tb4qeUxw2GboxFfc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sqUdTctB768g5YfWBseKSonajcdEqcaJBVzbgR7IiK2qi3reRyr0TXmdutNl1H/J7R1fliQAo8Cyn2LgeS15HB4OyLIEqj/sjVgruzWsKIN9sG7Kk5BHQl9zI1OpHUpaMhFVO1Q8hmJ+uM0pCo5Qpabh5Et6JAZpLkKR4Gll/4k= 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=LChGkOqb; arc=none smtp.client-ip=209.85.215.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="LChGkOqb" Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-b34a8f69862so1141483a12.2; Tue, 24 Jun 2025 20:40:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750822835; x=1751427635; 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=2iUJ9YFNjaHHQEh+V8ymue/86vfSoA5y6eI9d+EESUo=; b=LChGkOqbUQxWdU4txUh4Awtfy/h3NPQJNfkWkT9l6gIF9GPPgToL/BQKd0lzXfs1sZ dh9DTVkxgVx+StKqmCMIQKXKaJnKRhdBv1KtpK2WIMh0Atczw0bkFsGWnSzJLBRaSa9l HX04wO4kyw5oFdutqkRmLFUs5wd7n5BIVbiLC8CHt6Yy33USIzUahERwK84fsEHfv3WC JkUFiydpbLSQ79ACHOhfJbWtocLfc8ulwEzA42Xj7LE18i7oL130qfGzMwfDIS9lHtb6 G4YeTWhOT4b84QB2wOeX+/Kkbu/1uG134HlKVCyubytaHhvSjSwMsOGFJOjer4DgBTCZ DdXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750822835; x=1751427635; 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=2iUJ9YFNjaHHQEh+V8ymue/86vfSoA5y6eI9d+EESUo=; b=kLYwOS7wTopXxoHL9sDkNI78+1Gy1FQrNsAgNk2c35MZvBoVXYVS+QlHuZUFBRYqu+ Uo+Zho7MkCzk9tlDpkOKHqR/XUFMH+pt3CyWoKVFec0Kt0cDShLtNcEMNJC4iKzREaKl PRYn7lKhv+vhqh1yGktaIes7AKUhfwYHFUz+8ddiZy8UXlT51NakgAjMFedWjRpa8Pn9 H7vpQ1jW9+PBUBIcqL/ANguDGuVcBk5C2/RTZz0M3c3zDaRHLuuYyX4eFfOwtMOaAeKD 2eJuILBRvdRAmd+XwGn+nZimMCS76qiAZRi5Q2HsJ/cxJUdBsBrBEDMRtGM+xrPunU01 sdhw== X-Forwarded-Encrypted: i=1; AJvYcCV0qPasqIrEnlH/+eZjV6sCns0W7uDssYijhbLw2/6eZrObSkNUohnRnNlle5c4O8Lwaa3BVCJQ@vger.kernel.org, AJvYcCVuflrjHoBPJqeh0onguEGqbjeEQYI0y2ksM+KTMubHh2NCnKFBOxt1IYnLOL1imLH7MzcxQBVGK+qQ@vger.kernel.org, AJvYcCXgLVpHd7jlyaTWZB+sY0watmnWcp185d15ode0ss0YE8oG7Rqu1Dwmp90xlUm1fUA+eQqREM5gTOqmlhY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8b1h5zu77SXBLxueoPCL5GGcrEaCouMNwdLXvJDTfeCWqBUIU uUIle1Xwfa7xMMYDpYTPoVxRpfHLDFd4xVE8DiqQ6dpmcsEC8Zs/8GTl X-Gm-Gg: ASbGncuJ/3rdkKT1NYER0rl17vv2yBRryMkImZYBWQpCMBfqsltalAEYAnhBjHKY0hs yhR6JMHAbH4wPlFxuPrXsvN4z4r/nKzpHqBEebUeW+VnF7yO8bHqa55XKxB2U0EVyGIZhoopzC6 Ht6RZUDAqb1FxoGYXZ8bjoD9ZLTuvvE3VsibUIe05qOwY1yquLg/RS3QqKMRyVlLEIGXuxPnslJ KIJuzRnriQ656IHCJVlgcBMF4KS9NoFQQ4+ke6g8k2JEZz9j3q+ijdBaWgnkcfVudAv7Qbiw1OR Zid4mRnCEZX/WVS4BVAkJjKtOjBvuZoO1W9jTJdYLx8zQ4LCVuGnpzul X-Google-Smtp-Source: AGHT+IGS1W8dpUuqdO8azqyMFNLzZzGu6oo0ee2bhCoduGNYNk6YdCAXXCJ2jKgpFf7Pcpu5mHWgcA== X-Received: by 2002:a17:90b:4fc9:b0:311:d670:a10d with SMTP id 98e67ed59e1d1-315f2689f95mr1661580a91.26.1750822835378; Tue, 24 Jun 2025 20:40:35 -0700 (PDT) Received: from gmail.com ([116.237.168.226]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b31f1241f4asm9640143a12.44.2025.06.24.20.40.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Jun 2025 20:40:35 -0700 (PDT) From: Qingfang Deng To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-ppp@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guillaume Nault Subject: [PATCH net-next 3/3] ppp: synchronize netstats updates Date: Wed, 25 Jun 2025 11:40:20 +0800 Message-ID: <20250625034021.3650359-4-dqfext@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250625034021.3650359-1-dqfext@gmail.com> References: <20250625034021.3650359-1-dqfext@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 PPP receive path can now run concurrently across CPUs (after converting rlock to rwlock in an earlier patch). This may lead to data races on net_device->stats. Convert all stats updates in both transmit and receive paths to use the DEV_STATS_INC() macro, which updates stats atomically. Signed-off-by: Qingfang Deng --- drivers/net/ppp/ppp_generic.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c index f0f8a75e3aef..4e787d1823c1 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c @@ -1478,7 +1478,7 @@ ppp_start_xmit(struct sk_buff *skb, struct net_device= *dev) =20 outf: kfree_skb(skb); - ++dev->stats.tx_dropped; + DEV_STATS_INC(dev, tx_dropped); return NETDEV_TX_OK; } =20 @@ -1851,7 +1851,7 @@ ppp_send_frame(struct ppp *ppp, struct sk_buff *skb) =20 drop: kfree_skb(skb); - ++ppp->dev->stats.tx_errors; + DEV_STATS_INC(ppp->dev, tx_errors); } =20 /* @@ -2134,7 +2134,7 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_= buff *skb) spin_unlock(&pch->downl); if (ppp->debug & 1) netdev_err(ppp->dev, "PPP: no memory (fragment)\n"); - ++ppp->dev->stats.tx_errors; + DEV_STATS_INC(ppp->dev, tx_errors); ++ppp->nxseq; return 1; /* abandon the frame */ } @@ -2296,7 +2296,7 @@ ppp_input(struct ppp_channel *chan, struct sk_buff *s= kb) if (!ppp_decompress_proto(skb)) { kfree_skb(skb); if (pch->ppp) { - ++pch->ppp->dev->stats.rx_length_errors; + DEV_STATS_INC(pch->ppp->dev, rx_length_errors); ppp_receive_error(pch->ppp); } goto done; @@ -2367,7 +2367,7 @@ ppp_receive_frame(struct ppp *ppp, struct sk_buff *sk= b, struct channel *pch) static void ppp_receive_error(struct ppp *ppp) { - ++ppp->dev->stats.rx_errors; + DEV_STATS_INC(ppp->dev, rx_errors); if (ppp->vj) slhc_toss(ppp->vj); } @@ -2634,7 +2634,7 @@ ppp_receive_mp_frame(struct ppp *ppp, struct sk_buff = *skb, struct channel *pch) */ if (seq_before(seq, ppp->nextseq)) { kfree_skb(skb); - ++ppp->dev->stats.rx_dropped; + DEV_STATS_INC(ppp->dev, rx_dropped); ppp_receive_error(ppp); return; } @@ -2670,7 +2670,7 @@ ppp_receive_mp_frame(struct ppp *ppp, struct sk_buff = *skb, struct channel *pch) if (pskb_may_pull(skb, 2)) ppp_receive_nonmp_frame(ppp, skb); else { - ++ppp->dev->stats.rx_length_errors; + DEV_STATS_INC(ppp->dev, rx_length_errors); kfree_skb(skb); ppp_receive_error(ppp); } @@ -2776,7 +2776,7 @@ ppp_mp_reconstruct(struct ppp *ppp) if (lost =3D=3D 0 && (PPP_MP_CB(p)->BEbits & E) && (PPP_MP_CB(head)->BEbits & B)) { if (len > ppp->mrru + 2) { - ++ppp->dev->stats.rx_length_errors; + DEV_STATS_INC(ppp->dev, rx_length_errors); netdev_printk(KERN_DEBUG, ppp->dev, "PPP: reconstructed packet" " is too long (%d)\n", len); @@ -2831,7 +2831,7 @@ ppp_mp_reconstruct(struct ppp *ppp) " missed pkts %u..%u\n", ppp->nextseq, PPP_MP_CB(head)->sequence-1); - ++ppp->dev->stats.rx_dropped; + DEV_STATS_INC(ppp->dev, rx_dropped); ppp_receive_error(ppp); } =20 --=20 2.43.0