* [PATCH v1 0/2] ieee802154: use macros to replace hard-coded channel masks
@ 2025-11-25 8:56 Les Boys
2025-11-25 9:36 ` [PATCH v1 1/2] include: add macros for ieee 802.15.4 " Les Boys
0 siblings, 1 reply; 4+ messages in thread
From: Les Boys @ 2025-11-25 8:56 UTC (permalink / raw)
To: linux-wpan@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, alex.aring@gmail.com,
stefan@datenfreihafen.org, miquel.raynal@bootlin.com
(Cleanup) It was noticed that in the previous implementation, the channel
masks were hard-coded in the source code. This patch extracts all channel
masks into a header file.
Commits:
1. include: add macros for ieee 802.15.4 channel masks
2. net/ieee802154: use channel mask macros replace the hard-coded magic number
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v1 1/2] include: add macros for ieee 802.15.4 channel masks
2025-11-25 8:56 [PATCH v1 0/2] ieee802154: use macros to replace hard-coded channel masks Les Boys
@ 2025-11-25 9:36 ` Les Boys
2025-11-25 9:41 ` [PATCH v1 2/2] net/ieee802154: use channel mask macros replace the hard-coded magic number Les Boys
0 siblings, 1 reply; 4+ messages in thread
From: Les Boys @ 2025-11-25 9:36 UTC (permalink / raw)
To: linux-wpan@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, alex.aring@gmail.com,
stefan@datenfreihafen.org, miquel.raynal@bootlin.com
This commit defined all the 15 possible channel masks in
<linux/ieee802154.h>.
---
include/linux/ieee802154.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/include/linux/ieee802154.h b/include/linux/ieee802154.h
index 140f61ec0..cd42f28a9 100644
--- a/include/linux/ieee802154.h
+++ b/include/linux/ieee802154.h
@@ -58,6 +58,22 @@
#define IEEE802154_MAX_CHANNEL 26
#define IEEE802154_MAX_PAGE 31
+#define IEEE802154_CHAN_750M_O_QPSK 0xf /* 750 MHz O-QPSK 802.15.4c-2009 */
+#define IEEE802154_CHAN_750M_MPSK 0xf0 /* 750 MHz MPSK 802.15.4c-2009 */
+#define IEEE802154_CHAN_868M_ASK 0x1 /* 868 MHz ASK 802.15.4-2006 */
+#define IEEE802154_CHAN_868M_BPSK 0x1 /* 868 MHz BPSK 802.15.4-2003 */
+#define IEEE802154_CHAN_868M_O_QPSK 0x1 /* 868 MHz O-QPSK 802.15.4-2006 */
+#define IEEE802154_CHAN_915M_ASK 0x7FE /* 915 MHz ASK 802.15.4-2006 */
+#define IEEE802154_CHAN_915M_BPSK 0x7FE /* 915 MHz BPSK 802.15.4-2003 */
+#define IEEE802154_CHAN_915M_O_QPSK 0x7FE /* 915 MHz O-QPSK 802.15.4-2006 */
+#define IEEE802154_CHAN_950M_BPSK 0x3FF /* 950 MHz BPSK 802.15.4d-2009 */
+#define IEEE802154_CHAN_950M_GFSK 0x3FFC00 /* 950 MHz GFSK 802.15.4d-2009 */
+#define IEEE802154_CHAN_2D4G_O_QPSK 0x7FFF800 /* 2.4 GHz O-QPSK 802.15.4-2003 */
+#define IEEE802154_CHAN_2D4G_CSS 0x3FFF /* 2.4 GHz CSS 802.15.4a-2007 */
+#define IEEE802154_CHAN_UWB_SUBGIGA 0x1 /* UWB Sub-gigahertz 802.15.4a-2007 */
+#define IEEE802154_CHAN_UWB_LOWBAND 0x1E /* UWB Low Band 802.15.4a-2007 */
+#define IEEE802154_CHAN_UWB_HIGHBAND 0xFFE0 /* UWB High Band 802.15.4a-2007 */
+
#define IEEE802154_FC_TYPE_BEACON 0x0 /* Frame is beacon */
#define IEEE802154_FC_TYPE_DATA 0x1 /* Frame is data */
#define IEEE802154_FC_TYPE_ACK 0x2 /* Frame is acknowledgment */
--
2.44.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v1 2/2] net/ieee802154: use channel mask macros replace the hard-coded magic number
2025-11-25 9:36 ` [PATCH v1 1/2] include: add macros for ieee 802.15.4 " Les Boys
@ 2025-11-25 9:41 ` Les Boys
2025-11-25 15:11 ` Miquel Raynal
0 siblings, 1 reply; 4+ messages in thread
From: Les Boys @ 2025-11-25 9:41 UTC (permalink / raw)
To: linux-wpan@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, alex.aring@gmail.com,
stefan@datenfreihafen.org, miquel.raynal@bootlin.com
This commit replaced all the hard-coded magic numbers to macros defined in
previous commit.
---
drivers/net/ieee802154/adf7242.c | 2 +-
drivers/net/ieee802154/at86rf230.c | 4 +-
drivers/net/ieee802154/atusb.c | 5 ++-
drivers/net/ieee802154/cc2520.c | 2 +-
drivers/net/ieee802154/fakelb.c | 47 +++++++++---------------
drivers/net/ieee802154/mac802154_hwsim.c | 46 ++++++++---------------
6 files changed, 40 insertions(+), 66 deletions(-)
diff --git a/drivers/net/ieee802154/adf7242.c b/drivers/net/ieee802154/adf7242.c
index cc7ddc400..cc6324dfe 100644
--- a/drivers/net/ieee802154/adf7242.c
+++ b/drivers/net/ieee802154/adf7242.c
@@ -1212,7 +1212,7 @@ static int adf7242_probe(struct spi_device *spi)
hw->extra_tx_headroom = 0;
/* We support only 2.4 Ghz */
- hw->phy->supported.channels[0] = 0x7FFF800;
+ hw->phy->supported.channels[0] = IEEE802154_CHAN_2D4G_O_QPSK;
hw->flags = IEEE802154_HW_OMIT_CKSUM |
IEEE802154_HW_CSMA_PARAMS |
diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c
index fd91f8a45..145a2ef0f 100644
--- a/drivers/net/ieee802154/at86rf230.c
+++ b/drivers/net/ieee802154/at86rf230.c
@@ -1470,7 +1470,7 @@ at86rf230_detect_device(struct at86rf230_local *lp)
case 3:
chip = "at86rf231";
lp->data = &at86rf231_data;
- lp->hw->phy->supported.channels[0] = 0x7FFF800;
+ lp->hw->phy->supported.channels[0] = IEEE802154_CHAN_2D4G_O_QPSK;
lp->hw->phy->current_channel = 11;
lp->hw->phy->supported.tx_powers = at86rf231_powers;
lp->hw->phy->supported.tx_powers_size = ARRAY_SIZE(at86rf231_powers);
@@ -1493,7 +1493,7 @@ at86rf230_detect_device(struct at86rf230_local *lp)
case 11:
chip = "at86rf233";
lp->data = &at86rf233_data;
- lp->hw->phy->supported.channels[0] = 0x7FFF800;
+ lp->hw->phy->supported.channels[0] = IEEE802154_CHAN_2D4G_O_QPSK;
lp->hw->phy->current_channel = 13;
lp->hw->phy->supported.tx_powers = at86rf233_powers;
lp->hw->phy->supported.tx_powers_size = ARRAY_SIZE(at86rf233_powers);
diff --git a/drivers/net/ieee802154/atusb.c b/drivers/net/ieee802154/atusb.c
index 95a4a3cdc..4724bd534 100644
--- a/drivers/net/ieee802154/atusb.c
+++ b/drivers/net/ieee802154/atusb.c
@@ -29,6 +29,7 @@
#include <linux/jiffies.h>
#include <linux/usb.h>
#include <linux/skbuff.h>
+#include <linux/ieee802154.h>
#include <net/cfg802154.h>
#include <net/mac802154.h>
@@ -858,7 +859,7 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
switch (part_num) {
case 2:
chip = "AT86RF230";
- atusb->hw->phy->supported.channels[0] = 0x7FFF800;
+ atusb->hw->phy->supported.channels[0] = IEEE802154_CHAN_2D4G_O_QPSK;
atusb->hw->phy->current_channel = 11; /* reset default */
atusb->hw->phy->supported.tx_powers = atusb_powers;
atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(atusb_powers);
@@ -867,7 +868,7 @@ static int atusb_get_and_conf_chip(struct atusb *atusb)
break;
case 3:
chip = "AT86RF231";
- atusb->hw->phy->supported.channels[0] = 0x7FFF800;
+ atusb->hw->phy->supported.channels[0] = IEEE802154_CHAN_2D4G_O_QPSK;
atusb->hw->phy->current_channel = 11; /* reset default */
atusb->hw->phy->supported.tx_powers = atusb_powers;
atusb->hw->phy->supported.tx_powers_size = ARRAY_SIZE(atusb_powers);
diff --git a/drivers/net/ieee802154/cc2520.c b/drivers/net/ieee802154/cc2520.c
index 2b7034193..7d8b08cc1 100644
--- a/drivers/net/ieee802154/cc2520.c
+++ b/drivers/net/ieee802154/cc2520.c
@@ -836,7 +836,7 @@ static int cc2520_register(struct cc2520_private *priv)
ieee802154_random_extended_addr(&priv->hw->phy->perm_extended_addr);
/* We do support only 2.4 Ghz */
- priv->hw->phy->supported.channels[0] = 0x7FFF800;
+ priv->hw->phy->supported.channels[0] = IEEE802154_CHAN_2D4G_O_QPSK;
priv->hw->flags = IEEE802154_HW_TX_OMIT_CKSUM | IEEE802154_HW_AFILT |
IEEE802154_HW_PROMISCUOUS;
diff --git a/drivers/net/ieee802154/fakelb.c b/drivers/net/ieee802154/fakelb.c
index e11d8eda8..f672186ca 100644
--- a/drivers/net/ieee802154/fakelb.c
+++ b/drivers/net/ieee802154/fakelb.c
@@ -16,6 +16,7 @@
#include <linux/netdevice.h>
#include <linux/device.h>
#include <linux/spinlock.h>
+#include <linux/ieee802154.h>
#include <net/mac802154.h>
#include <net/cfg802154.h>
@@ -137,36 +138,22 @@ static int fakelb_add_one(struct device *dev)
phy = hw->priv;
phy->hw = hw;
- /* 868 MHz BPSK 802.15.4-2003 */
- hw->phy->supported.channels[0] |= 1;
- /* 915 MHz BPSK 802.15.4-2003 */
- hw->phy->supported.channels[0] |= 0x7fe;
- /* 2.4 GHz O-QPSK 802.15.4-2003 */
- hw->phy->supported.channels[0] |= 0x7FFF800;
- /* 868 MHz ASK 802.15.4-2006 */
- hw->phy->supported.channels[1] |= 1;
- /* 915 MHz ASK 802.15.4-2006 */
- hw->phy->supported.channels[1] |= 0x7fe;
- /* 868 MHz O-QPSK 802.15.4-2006 */
- hw->phy->supported.channels[2] |= 1;
- /* 915 MHz O-QPSK 802.15.4-2006 */
- hw->phy->supported.channels[2] |= 0x7fe;
- /* 2.4 GHz CSS 802.15.4a-2007 */
- hw->phy->supported.channels[3] |= 0x3fff;
- /* UWB Sub-gigahertz 802.15.4a-2007 */
- hw->phy->supported.channels[4] |= 1;
- /* UWB Low band 802.15.4a-2007 */
- hw->phy->supported.channels[4] |= 0x1e;
- /* UWB High band 802.15.4a-2007 */
- hw->phy->supported.channels[4] |= 0xffe0;
- /* 750 MHz O-QPSK 802.15.4c-2009 */
- hw->phy->supported.channels[5] |= 0xf;
- /* 750 MHz MPSK 802.15.4c-2009 */
- hw->phy->supported.channels[5] |= 0xf0;
- /* 950 MHz BPSK 802.15.4d-2009 */
- hw->phy->supported.channels[6] |= 0x3ff;
- /* 950 MHz GFSK 802.15.4d-2009 */
- hw->phy->supported.channels[6] |= 0x3ffc00;
+
+ hw->phy->supported.channels[0] |= IEEE802154_CHAN_868M_BPSK;
+ hw->phy->supported.channels[0] |= IEEE802154_CHAN_915M_BPSK;
+ hw->phy->supported.channels[0] |= IEEE802154_CHAN_2D4G_O_QPSK;
+ hw->phy->supported.channels[1] |= IEEE802154_CHAN_868M_ASK;
+ hw->phy->supported.channels[1] |= IEEE802154_CHAN_915M_ASK;
+ hw->phy->supported.channels[2] |= IEEE802154_CHAN_868M_O_QPSK;
+ hw->phy->supported.channels[2] |= IEEE802154_CHAN_915M_O_QPSK;
+ hw->phy->supported.channels[3] |= IEEE802154_CHAN_2D4G_CSS;
+ hw->phy->supported.channels[4] |= IEEE802154_CHAN_UWB_SUBGIGA;
+ hw->phy->supported.channels[4] |= IEEE802154_CHAN_UWB_LOWBAND;
+ hw->phy->supported.channels[4] |= IEEE802154_CHAN_UWB_HIGHBAND;
+ hw->phy->supported.channels[5] |= IEEE802154_CHAN_750M_O_QPSK;
+ hw->phy->supported.channels[5] |= IEEE802154_CHAN_750M_MPSK;
+ hw->phy->supported.channels[6] |= IEEE802154_CHAN_950M_BPSK;
+ hw->phy->supported.channels[6] |= IEEE802154_CHAN_950M_GFSK;
ieee802154_random_extended_addr(&hw->phy->perm_extended_addr);
/* fake phy channel 13 as default */
diff --git a/drivers/net/ieee802154/mac802154_hwsim.c b/drivers/net/ieee802154/mac802154_hwsim.c
index 1cab20b5a..d89396592 100644
--- a/drivers/net/ieee802154/mac802154_hwsim.c
+++ b/drivers/net/ieee802154/mac802154_hwsim.c
@@ -18,6 +18,7 @@
#include <linux/netdevice.h>
#include <linux/device.h>
#include <linux/spinlock.h>
+#include <linux/ieee802154.h>
#include <net/ieee802154_netdev.h>
#include <net/mac802154.h>
#include <net/cfg802154.h>
@@ -911,36 +912,21 @@ static int hwsim_add_one(struct genl_info *info, struct device *dev,
phy = hw->priv;
phy->hw = hw;
- /* 868 MHz BPSK 802.15.4-2003 */
- hw->phy->supported.channels[0] |= 1;
- /* 915 MHz BPSK 802.15.4-2003 */
- hw->phy->supported.channels[0] |= 0x7fe;
- /* 2.4 GHz O-QPSK 802.15.4-2003 */
- hw->phy->supported.channels[0] |= 0x7FFF800;
- /* 868 MHz ASK 802.15.4-2006 */
- hw->phy->supported.channels[1] |= 1;
- /* 915 MHz ASK 802.15.4-2006 */
- hw->phy->supported.channels[1] |= 0x7fe;
- /* 868 MHz O-QPSK 802.15.4-2006 */
- hw->phy->supported.channels[2] |= 1;
- /* 915 MHz O-QPSK 802.15.4-2006 */
- hw->phy->supported.channels[2] |= 0x7fe;
- /* 2.4 GHz CSS 802.15.4a-2007 */
- hw->phy->supported.channels[3] |= 0x3fff;
- /* UWB Sub-gigahertz 802.15.4a-2007 */
- hw->phy->supported.channels[4] |= 1;
- /* UWB Low band 802.15.4a-2007 */
- hw->phy->supported.channels[4] |= 0x1e;
- /* UWB High band 802.15.4a-2007 */
- hw->phy->supported.channels[4] |= 0xffe0;
- /* 750 MHz O-QPSK 802.15.4c-2009 */
- hw->phy->supported.channels[5] |= 0xf;
- /* 750 MHz MPSK 802.15.4c-2009 */
- hw->phy->supported.channels[5] |= 0xf0;
- /* 950 MHz BPSK 802.15.4d-2009 */
- hw->phy->supported.channels[6] |= 0x3ff;
- /* 950 MHz GFSK 802.15.4d-2009 */
- hw->phy->supported.channels[6] |= 0x3ffc00;
+ hw->phy->supported.channels[0] |= IEEE802154_CHAN_868M_BPSK;
+ hw->phy->supported.channels[0] |= IEEE802154_CHAN_915M_BPSK;
+ hw->phy->supported.channels[0] |= IEEE802154_CHAN_2D4G_O_QPSK;
+ hw->phy->supported.channels[1] |= IEEE802154_CHAN_868M_ASK;
+ hw->phy->supported.channels[1] |= IEEE802154_CHAN_915M_ASK;
+ hw->phy->supported.channels[2] |= IEEE802154_CHAN_868M_O_QPSK;
+ hw->phy->supported.channels[2] |= IEEE802154_CHAN_915M_O_QPSK;
+ hw->phy->supported.channels[3] |= IEEE802154_CHAN_2D4G_CSS;
+ hw->phy->supported.channels[4] |= IEEE802154_CHAN_UWB_SUBGIGA;
+ hw->phy->supported.channels[4] |= IEEE802154_CHAN_UWB_LOWBAND;
+ hw->phy->supported.channels[4] |= IEEE802154_CHAN_UWB_HIGHBAND;
+ hw->phy->supported.channels[5] |= IEEE802154_CHAN_750M_O_QPSK;
+ hw->phy->supported.channels[5] |= IEEE802154_CHAN_750M_MPSK;
+ hw->phy->supported.channels[6] |= IEEE802154_CHAN_950M_BPSK;
+ hw->phy->supported.channels[6] |= IEEE802154_CHAN_950M_GFSK;
ieee802154_random_extended_addr(&hw->phy->perm_extended_addr);
--
2.44.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v1 2/2] net/ieee802154: use channel mask macros replace the hard-coded magic number
2025-11-25 9:41 ` [PATCH v1 2/2] net/ieee802154: use channel mask macros replace the hard-coded magic number Les Boys
@ 2025-11-25 15:11 ` Miquel Raynal
0 siblings, 0 replies; 4+ messages in thread
From: Miquel Raynal @ 2025-11-25 15:11 UTC (permalink / raw)
To: Les Boys
Cc: linux-wpan@vger.kernel.org, linux-kernel@vger.kernel.org,
alex.aring@gmail.com, stefan@datenfreihafen.org
Hello,
On 25/11/2025 at 09:41:30 GMT, Les Boys <lesboyspp43@outlook.com> wrote:
> This commit replaced all the hard-coded magic numbers to macros defined in
> previous commit.
Can you please slightly rephrase into "Replace all the..."
Maybe the title can be shortened a little bit as well.
While I'm fine with this addition (I haven't checked all values), we
would need a proper name and Signed-off-by tag.
Thanks,
Miquèl
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-11-25 15:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-25 8:56 [PATCH v1 0/2] ieee802154: use macros to replace hard-coded channel masks Les Boys
2025-11-25 9:36 ` [PATCH v1 1/2] include: add macros for ieee 802.15.4 " Les Boys
2025-11-25 9:41 ` [PATCH v1 2/2] net/ieee802154: use channel mask macros replace the hard-coded magic number Les Boys
2025-11-25 15:11 ` Miquel Raynal
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).