2020-03-02 23:50:40

by Roman Kiryanov

[permalink] [raw]
Subject: [PATCH] net: wireless: Add module_param(mac_prefix) to mac80211_hwsim

From: Roman Kiryanov <[email protected]>

By default mac80211_hwsim creates N radios with
MAC addresses like '02:00:00:nn:nn:00' where nnnn
is incremented.

We (Android Studio Emulator) need a way to have unique
MAC addresses. Currently in mac80211_hwsim this can
be done by sending HWSIM_CMD_DEL_RADIO and
HWSIM_CMD_NEW_RADIO commands.

The 'mac_prefix' parameter provides an easier way to
make MAC address unique by specifying two octets in
MAC address, i.e. '02:pp:pp:nn:nn:00'.

Signed-off-by: Roman Kiryanov <[email protected]>
---
drivers/net/wireless/mac80211_hwsim.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
index 03738107fd10..1519435ecc76 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -62,6 +62,10 @@ static bool support_p2p_device = true;
module_param(support_p2p_device, bool, 0444);
MODULE_PARM_DESC(support_p2p_device, "Support P2P-Device interface type");

+static ushort mac_prefix;
+module_param(mac_prefix, ushort, 0444);
+MODULE_PARM_DESC(mac_prefix, "Second and third most significant octets in MAC");
+
/**
* enum hwsim_regtest - the type of regulatory tests we offer
*
@@ -2811,6 +2815,8 @@ static int mac80211_hwsim_new_radio(struct genl_info *info,
if (!param->perm_addr) {
eth_zero_addr(addr);
addr[0] = 0x02;
+ addr[1] = (mac_prefix >> 8) & 0xFF;
+ addr[2] = mac_prefix & 0xFF;
addr[3] = idx >> 8;
addr[4] = idx;
memcpy(data->addresses[0].addr, addr, ETH_ALEN);
--
2.25.0.265.gbab2e86ba0-goog


2020-03-03 06:36:36

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH] net: wireless: Add module_param(mac_prefix) to mac80211_hwsim

Hi Roman,

> By default mac80211_hwsim creates N radios with
> MAC addresses like '02:00:00:nn:nn:00' where nnnn
> is incremented.
>
> We (Android Studio Emulator) need a way to have unique
> MAC addresses. Currently in mac80211_hwsim this can
> be done by sending HWSIM_CMD_DEL_RADIO and
> HWSIM_CMD_NEW_RADIO commands.
>
> The 'mac_prefix' parameter provides an easier way to
> make MAC address unique by specifying two octets in
> MAC address, i.e. '02:pp:pp:nn:nn:00'.

since we have an API for creating radios, wouldn’t it be better to add a kernel option to allow setting the default number of radios on module load to 0 and then let userspace create them on demand. I for example always set my testing kernel to load 0 radios.

Regards

Marcel