Message ID | 20250325165312.26938-1-ramonreisfontes@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | mac802154_hwsim: define perm_extended_addr initialization | expand |
Hello Ramon, On 25/03/2025 at 13:53:12 -03, Ramon Fontes <ramonreisfontes@gmail.com> wrote: > This establishes an initialization method for perm_extended_addr, aligning it with the approach used in mac80211_hwsim. You are now enforcing an (almost) static value, is that the intended behaviour? If yes I would like a better explanation of why this is relevant and how you picked eg. 0x02 as prefix to justify the change. In general I am not opposed, even though I kind of liked the idea of generating random addresses, especially since hwsim is not the only one to do that and having a simulator that behaves like regular device drivers actually makes sense IMO. Also, please wrap the commit log. > Signed-off-by: Ramon Fontes <ramonreisfontes@gmail.com> Thanks, Miquèl
Hello Miquèl, This PR aims to replicate functionality similar to what is implemented in mac80211_hwsim (https://github.com/torvalds/linux/blob/master/drivers/net/wireless/virtual/mac80211_hwsim.c#L5223). This approach is useful for testing wireless medium emulation tools like wmediumd (https://github.com/bcopeland/wmediumd/blob/master/tests/) and I plan to submit more PRs soon. I've started developing a wmediumd-like framework for mac802154_hwsim, which you can find here: https://github.com/ramonfontes/wmediumd_802154. However, it's still in its early stages. Indeed, I'm responsible for Mininet-WiFi (https://github.com/intrig-unicamp/mininet-wifi) which supports IEEE 802.15.4 emulation via mac802154_hwsim. Having a wireless medium emulation for mac802154_hwsim would be highly beneficial, as it enables controlled testing and facilitates prototyping. > Also, please wrap the commit log. Apologies for any confusion. Could you clarify if there are any specific changes I need to make in the PR? Em qua., 26 de mar. de 2025 às 07:12, Miquel Raynal <miquel.raynal@bootlin.com> escreveu: > > Hello Ramon, > > On 25/03/2025 at 13:53:12 -03, Ramon Fontes <ramonreisfontes@gmail.com> wrote: > > > This establishes an initialization method for perm_extended_addr, aligning it with the approach used in mac80211_hwsim. > > You are now enforcing an (almost) static value, is that the intended > behaviour? If yes I would like a better explanation of why this is > relevant and how you picked eg. 0x02 as prefix to justify the change. > > In general I am not opposed, even though I kind of liked the idea of > generating random addresses, especially since hwsim is not the only one > to do that and having a simulator that behaves like regular device > drivers actually makes sense IMO. > > Also, please wrap the commit log. > > > Signed-off-by: Ramon Fontes <ramonreisfontes@gmail.com> > > Thanks, > Miquèl
Hello Ramon, On 26/03/2025 at 07:34:14 -03, Ramon Fontes <ramonreisfontes@gmail.com> wrote: > Hello Miquèl, > > This PR aims to replicate functionality similar to what is implemented > in mac80211_hwsim > (https://github.com/torvalds/linux/blob/master/drivers/net/wireless/virtual/mac80211_hwsim.c#L5223). > This approach is useful for testing wireless medium emulation tools > like wmediumd (https://github.com/bcopeland/wmediumd/blob/master/tests/) > and I plan to submit more PRs soon. > > I've started developing a wmediumd-like framework for mac802154_hwsim, > which you can find here: > https://github.com/ramonfontes/wmediumd_802154. However, it's still in > its early stages. > > Indeed, I'm responsible for Mininet-WiFi > (https://github.com/intrig-unicamp/mininet-wifi) which supports IEEE > 802.15.4 emulation via mac802154_hwsim. Having a wireless medium > emulation for mac802154_hwsim would be highly beneficial, as it > enables controlled testing and facilitates prototyping. Okay, I must say I do not know this project, but it looks interesting. If the others are fine with this change, I'm fine too. >> Also, please wrap the commit log. > Apologies for any confusion. Could you clarify if there are any > specific changes I need to make in the PR? Yes, just change: This establishes an initialization method for perm_extended_addr, aligning it with the approach used in mac80211_hwsim. Into: This establishes an initialization method for perm_extended_addr, aligning it with the approach used in mac80211_hwsim. Thanks, Miquèl
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]; 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); + /* mac802154 hwsim netlink commands * * @MAC802154_HWSIM_CMD_UNSPEC: unspecified command to catch error
This establishes an initialization method for perm_extended_addr, aligning it with the approach used in mac80211_hwsim. Signed-off-by: Ramon Fontes <ramonreisfontes@gmail.com> --- drivers/net/ieee802154/mac802154_hwsim.c | 18 +++++++++++++++++- drivers/net/ieee802154/mac802154_hwsim.h | 2 ++ 2 files changed, 19 insertions(+), 1 deletion(-)