linux-wpan.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).