All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] net: protocol: use assign_bit() where applicable
@ 2026-09-20  2:27 Peng Fan (OSS)
  2026-09-20  7:45 ` bluez.test.bot
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Peng Fan (OSS) @ 2026-09-20  2:27 UTC (permalink / raw)
  To: Alexander Aring, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Simon Horman, Nikolay Aleksandrov, Ido Schimmel,
	Woojung Huh, UNGLinuxDriver, Andrew Lunn, Vladimir Oltean,
	Samuel Mendoza-Jonas, Paul Fertser, Martin Schiller
  Cc: linux-kernel, Peng Fan, linux-bluetooth, linux-wpan, netdev,
	bridge, linux-x25

From: Peng Fan <peng.fan@nxp.com>

Convert open-coded if/else with set_bit/clear_bit and their
non-atomic __set_bit/__clear_bit variants to the assign_bit/__assign_bit
API. Where a bit is toggled based on its own value, use change_bit()
instead.

Done with Coccinelle semantic patch:
    // set_bit -> clear_bit => assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        set_bit(bit, addr);
    -else
    -        clear_bit(bit, addr);
    +assign_bit(bit, addr, cond);

    // clear_bit -> set_bit => assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        clear_bit(bit, addr);
    -else
    -        set_bit(bit, addr);
    +assign_bit(bit, addr, !cond);

    // __set_bit -> __clear_bit => __assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        __set_bit(bit, addr);
    -else
    -        __clear_bit(bit, addr);
    +__assign_bit(bit, addr, cond);

    // __clear_bit -> __set_bit => __assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        __clear_bit(bit, addr);
    -else
    -        __set_bit(bit, addr);
    +__assign_bit(bit, addr, !cond);

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 net/6lowpan/debugfs.c    | 10 ++--------
 net/bridge/br.c          |  5 +----
 net/bridge/br_sysfs_if.c | 10 ++--------
 net/dsa/tag_ksz.c        |  5 +----
 net/ncsi/ncsi-rsp.c      | 10 ++--------
 net/x25/af_x25.c         |  5 +----
 6 files changed, 9 insertions(+), 36 deletions(-)

diff --git a/net/6lowpan/debugfs.c b/net/6lowpan/debugfs.c
index 600b9563bfc5..d959b132c067 100644
--- a/net/6lowpan/debugfs.c
+++ b/net/6lowpan/debugfs.c
@@ -21,10 +21,7 @@ static int lowpan_ctx_flag_active_set(void *data, u64 val)
 	if (val != 0 && val != 1)
 		return -EINVAL;
 
-	if (val)
-		set_bit(LOWPAN_IPHC_CTX_FLAG_ACTIVE, &ctx->flags);
-	else
-		clear_bit(LOWPAN_IPHC_CTX_FLAG_ACTIVE, &ctx->flags);
+	assign_bit(LOWPAN_IPHC_CTX_FLAG_ACTIVE, &ctx->flags, val);
 
 	return 0;
 }
@@ -46,10 +43,7 @@ static int lowpan_ctx_flag_c_set(void *data, u64 val)
 	if (val != 0 && val != 1)
 		return -EINVAL;
 
-	if (val)
-		set_bit(LOWPAN_IPHC_CTX_FLAG_COMPRESSION, &ctx->flags);
-	else
-		clear_bit(LOWPAN_IPHC_CTX_FLAG_COMPRESSION, &ctx->flags);
+	assign_bit(LOWPAN_IPHC_CTX_FLAG_COMPRESSION, &ctx->flags, val);
 
 	return 0;
 }
diff --git a/net/bridge/br.c b/net/bridge/br.c
index a5e5b2db110e..09a120b3b76c 100644
--- a/net/bridge/br.c
+++ b/net/bridge/br.c
@@ -396,10 +396,7 @@ void br_opt_toggle(struct net_bridge *br, enum net_bridge_opts opt, bool on)
 	if (cur == on)
 		return;
 
-	if (on)
-		set_bit(opt, &br->options);
-	else
-		clear_bit(opt, &br->options);
+	assign_bit(opt, &br->options, on);
 }
 
 static void __net_exit br_net_exit_rtnl(struct net *net,
diff --git a/net/bridge/br_sysfs_if.c b/net/bridge/br_sysfs_if.c
index bde731c01e10..b9bcafa7f034 100644
--- a/net/bridge/br_sysfs_if.c
+++ b/net/bridge/br_sysfs_if.c
@@ -64,10 +64,7 @@ static int store_flag(struct net_bridge_port *p, unsigned long v,
 	int err;
 
 	oflags = flags;
-	if (v)
-		__set_bit(bitnr, &flags);
-	else
-		__clear_bit(bitnr, &flags);
+	__assign_bit(bitnr, &flags, v);
 
 	if (flags == oflags)
 		return 0;
@@ -77,10 +74,7 @@ static int store_flag(struct net_bridge_port *p, unsigned long v,
 		netdev_err(p->dev, "%s\n", extack._msg);
 		return err;
 	}
-	if (v)
-		set_bit(bitnr, &p->flags);
-	else
-		clear_bit(bitnr, &p->flags);
+	assign_bit(bitnr, &p->flags, v);
 	br_port_flags_change(p, BIT(bitnr));
 	return 0;
 }
diff --git a/net/dsa/tag_ksz.c b/net/dsa/tag_ksz.c
index b4d70ba930dc..b0340a7be8c9 100644
--- a/net/dsa/tag_ksz.c
+++ b/net/dsa/tag_ksz.c
@@ -41,10 +41,7 @@ static void ksz_hwtstamp_set_state(struct dsa_switch *ds, bool on)
 {
 	struct ksz_tagger_private *priv = ksz_tagger_private(ds);
 
-	if (on)
-		set_bit(KSZ_HWTS_EN, &priv->state);
-	else
-		clear_bit(KSZ_HWTS_EN, &priv->state);
+	assign_bit(KSZ_HWTS_EN, &priv->state, on);
 }
 
 static void ksz_disconnect(struct dsa_switch *ds)
diff --git a/net/ncsi/ncsi-rsp.c b/net/ncsi/ncsi-rsp.c
index fbd84bc8026a..9c91872a2921 100644
--- a/net/ncsi/ncsi-rsp.c
+++ b/net/ncsi/ncsi-rsp.c
@@ -884,10 +884,7 @@ static int ncsi_rsp_handler_gp(struct ncsi_request *nr)
 	spin_lock_irqsave(&nc->lock, flags);
 	bitmap = &ncmf->bitmap;
 	for (i = 0; i < rsp->mac_cnt; i++, pdata += 6) {
-		if (!(enable & (0x1 << i)))
-			clear_bit(i, bitmap);
-		else
-			set_bit(i, bitmap);
+		assign_bit(i, bitmap, enable & (0x1 << i));
 
 		memcpy(&ncmf->addrs[i * ETH_ALEN], pdata, ETH_ALEN);
 	}
@@ -899,10 +896,7 @@ static int ncsi_rsp_handler_gp(struct ncsi_request *nr)
 	bitmap = &ncvf->bitmap;
 	spin_lock_irqsave(&nc->lock, flags);
 	for (i = 0; i < rsp->vlan_cnt; i++, pdata += 2) {
-		if (!(enable & (0x1 << i)))
-			clear_bit(i, bitmap);
-		else
-			set_bit(i, bitmap);
+		assign_bit(i, bitmap, enable & (0x1 << i));
 
 		ncvf->vids[i] = ntohs(*(__be16 *)pdata);
 	}
diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
index 033e7d059f58..f45c9ec7d2c6 100644
--- a/net/x25/af_x25.c
+++ b/net/x25/af_x25.c
@@ -439,10 +439,7 @@ static int x25_setsockopt(struct socket *sock, int level, int optname,
 	if (copy_from_sockptr(&opt, optval, sizeof(int)))
 		goto out;
 
-	if (opt)
-		set_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags);
-	else
-		clear_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags);
+	assign_bit(X25_Q_BIT_FLAG, &x25_sk(sk)->flags, opt);
 	rc = 0;
 out:
 	return rc;
-- 
2.51.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* RE: net: protocol: use assign_bit() where applicable
  2026-09-20  2:27 [PATCH] net: protocol: use assign_bit() where applicable Peng Fan (OSS)
@ 2026-09-20  7:45 ` bluez.test.bot
  2026-09-21 16:21 ` [PATCH] " Simon Horman
  2026-09-22  0:30 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: bluez.test.bot @ 2026-09-20  7:45 UTC (permalink / raw)
  To: linux-bluetooth, peng.fan

[-- Attachment #1: Type: text/plain, Size: 2393 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1169532/

---Test result---

Test Summary:
CheckPatch                    PASS      1.70 seconds
VerifyFixes                   PASS      0.09 seconds
VerifySignedoff               PASS      0.08 seconds
GitLint                       PASS      0.24 seconds
SubjectPrefix                 FAIL      0.07 seconds
BuildKernel                   PASS      29.53 seconds
CheckAllWarning               PASS      33.56 seconds
CheckSparse                   PASS      36.16 seconds
BuildKernel32                 PASS      29.34 seconds
CheckKernelLLVM               PASS      35.53 seconds
TestRunnerSetup               PASS      792.80 seconds
TestRunner_l2cap-tester       PASS      16.65 seconds
TestRunner_iso-tester         PASS      28.88 seconds
TestRunner_bnep-tester        PASS      3.11 seconds
TestRunner_mgmt-tester        FAIL      61.53 seconds
TestRunner_rfcomm-tester      PASS      4.47 seconds
TestRunner_sco-tester         PASS      7.61 seconds
TestRunner_ioctl-tester       PASS      4.76 seconds
TestRunner_mesh-tester        FAIL      7.79 seconds
TestRunner_smp-tester         PASS      4.49 seconds
TestRunner_userchan-tester    PASS      3.17 seconds
TestRunner_6lowpan-tester     PASS      4.40 seconds
IncrementalBuild              PASS      29.04 seconds

Details
##############################
Test: SubjectPrefix - FAIL
Desc: Check subject contains "Bluetooth" prefix
Output:
"Bluetooth: " prefix is not specified in the subject
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 501, Passed: 496 (99.0%), Failed: 1, Not Run: 4

Failed Test Cases
Read Exp Feature - Success                           Failed       0.022 seconds
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0

Failed Test Cases
Mesh - Send cancel - 1                               Timed out    2.379 seconds
Mesh - Send cancel - 2                               Timed out    1.999 seconds


https://github.com/bluez/bluetooth-next/pull/804

---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: protocol: use assign_bit() where applicable
  2026-09-20  2:27 [PATCH] net: protocol: use assign_bit() where applicable Peng Fan (OSS)
  2026-09-20  7:45 ` bluez.test.bot
@ 2026-09-21 16:21 ` Simon Horman
  2026-09-22  0:30 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: Simon Horman @ 2026-09-21 16:21 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: Alexander Aring, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Nikolay Aleksandrov, Ido Schimmel, Woojung Huh,
	UNGLinuxDriver, Andrew Lunn, Vladimir Oltean,
	Samuel Mendoza-Jonas, Paul Fertser, Martin Schiller, linux-kernel,
	Peng Fan, linux-bluetooth, linux-wpan, netdev, bridge, linux-x25

On Sun, Sep 20, 2026 at 10:27:44AM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Convert open-coded if/else with set_bit/clear_bit and their
> non-atomic __set_bit/__clear_bit variants to the assign_bit/__assign_bit
> API. Where a bit is toggled based on its own value, use change_bit()
> instead.
> 
> Done with Coccinelle semantic patch:
>     // set_bit -> clear_bit => assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        set_bit(bit, addr);
>     -else
>     -        clear_bit(bit, addr);
>     +assign_bit(bit, addr, cond);
> 
>     // clear_bit -> set_bit => assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        clear_bit(bit, addr);
>     -else
>     -        set_bit(bit, addr);
>     +assign_bit(bit, addr, !cond);
> 
>     // __set_bit -> __clear_bit => __assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        __set_bit(bit, addr);
>     -else
>     -        __clear_bit(bit, addr);
>     +__assign_bit(bit, addr, cond);
> 
>     // __clear_bit -> __set_bit => __assign_bit
> 
>     @@
>     expression cond, bit, addr;
>     @@
> 
>     -if (cond)
>     -        __clear_bit(bit, addr);
>     -else
>     -        __set_bit(bit, addr);
>     +__assign_bit(bit, addr, !cond);
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Reviewed-by: Simon Horman <horms@kernel.org>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] net: protocol: use assign_bit() where applicable
  2026-09-20  2:27 [PATCH] net: protocol: use assign_bit() where applicable Peng Fan (OSS)
  2026-09-20  7:45 ` bluez.test.bot
  2026-09-21 16:21 ` [PATCH] " Simon Horman
@ 2026-09-22  0:30 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+netdevbpf @ 2026-09-22  0:30 UTC (permalink / raw)
  To: Peng Fan
  Cc: alex.aring, davem, edumazet, kuba, pabeni, horms, razor, idosch,
	woojung.huh, UNGLinuxDriver, andrew, olteanv, sam, fercerpav, ms,
	linux-kernel, peng.fan, linux-bluetooth, linux-wpan, netdev,
	bridge, linux-x25

Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Sun, 20 Sep 2026 10:27:44 +0800 you wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Convert open-coded if/else with set_bit/clear_bit and their
> non-atomic __set_bit/__clear_bit variants to the assign_bit/__assign_bit
> API. Where a bit is toggled based on its own value, use change_bit()
> instead.
> 
> [...]

Here is the summary with links:
  - net: protocol: use assign_bit() where applicable
    https://git.kernel.org/netdev/net-next/c/ab86dbf4a6ad

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-09-22  0:31 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-20  2:27 [PATCH] net: protocol: use assign_bit() where applicable Peng Fan (OSS)
2026-09-20  7:45 ` bluez.test.bot
2026-09-21 16:21 ` [PATCH] " Simon Horman
2026-09-22  0:30 ` patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.