Hi, On Wed, Mar 26, 2025 at 2:09 PM Ramon Fontes <[email protected]> wrote: > > This establishes an initialization method for perm_extended_addr, aligning it > with the approach used in mac80211_hwsim. >
that is based on the phy index value instead of a random generated one? > Signed-off-by: Ramon Fontes <[email protected]> > --- > drivers/net/ieee802154/mac802154_hwsim.c | 18 +++++++++++++++++- > drivers/net/ieee802154/mac802154_hwsim.h | 2 ++ > 2 files changed, 19 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ieee802154/mac802154_hwsim.c > b/drivers/net/ieee802154/mac802154_hwsim.c > index 1cab20b5a..400cdac1f 100644 > --- a/drivers/net/ieee802154/mac802154_hwsim.c > +++ b/drivers/net/ieee802154/mac802154_hwsim.c > @@ -41,6 +41,17 @@ enum hwsim_multicast_groups { > HWSIM_MCGRP_CONFIG, > }; > > +__le64 addr_to_le64(u8 *addr) { > + return cpu_to_le64(((u64)addr[0] << 56) | > + ((u64)addr[1] << 48) | > + ((u64)addr[2] << 40) | > + ((u64)addr[3] << 32) | > + ((u64)addr[4] << 24) | > + ((u64)addr[5] << 16) | > + ((u64)addr[6] << 8) | > + ((u64)addr[7])); > +} > + > static const struct genl_multicast_group hwsim_mcgrps[] = { > [HWSIM_MCGRP_CONFIG] = { .name = "config", }, > }; > @@ -896,6 +907,7 @@ static int hwsim_subscribe_all_others(struct hwsim_phy > *phy) > static int hwsim_add_one(struct genl_info *info, struct device *dev, > bool init) > { > + u8 addr[8]; why not using directly __le64? > struct ieee802154_hw *hw; > struct hwsim_phy *phy; > struct hwsim_pib *pib; > @@ -942,7 +954,11 @@ static int hwsim_add_one(struct genl_info *info, struct > device *dev, > /* 950 MHz GFSK 802.15.4d-2009 */ > hw->phy->supported.channels[6] |= 0x3ffc00; > > - ieee802154_random_extended_addr(&hw->phy->perm_extended_addr); > + memset(addr, 0, sizeof(addr)); > + /* give a specific prefix to the address */ > + addr[0] = 0x02; > + addr[7] = idx; > + hw->phy->perm_extended_addr = addr_to_le64(addr); > > /* hwsim phy channel 13 as default */ > hw->phy->current_channel = 13; > diff --git a/drivers/net/ieee802154/mac802154_hwsim.h > b/drivers/net/ieee802154/mac802154_hwsim.h > index 6c6e30e38..536d95eb1 100644 > --- a/drivers/net/ieee802154/mac802154_hwsim.h > +++ b/drivers/net/ieee802154/mac802154_hwsim.h > @@ -1,6 +1,8 @@ > #ifndef __MAC802154_HWSIM_H > #define __MAC802154_HWSIM_H > > +__le64 addr_to_le64(u8 *addr); > + This is a uapi header for netlink which is not yet delivered through kernel-headers installation. Why do we need this prototype declaration here? Thanks. - Alex
