* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox