Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fd3f20bb authored by Ben Greear's avatar Ben Greear Committed by Alistair Strachan
Browse files

UPSTREAM: mac80211-hwsim: support creating wiphy w/out creating wlanX



Good for automated testing, where user can create wlan
interfaces with specified names.

Signed-off-by: default avatarBen Greear <greearb@candelatech.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
(cherry picked from commit 9a0cb89a8aad7c04505abf88202b1dd376fc50bc)
Bug: 70214720
Change-Id: I834f3db928d033df156e4100152d87cb767453bf
Signed-off-by: default avatarAlistair Strachan <astrachan@google.com>
parent 3aa269c4
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -1952,7 +1952,8 @@ static int mac80211_hwsim_create_radio(int channels, const char *reg_alpha2,
				       const struct ieee80211_regdomain *regd,
				       bool reg_strict, bool p2p_device,
				       bool use_chanctx, bool destroy_on_close,
				       u32 portid, const char *hwname)
				       u32 portid, const char *hwname,
				       bool no_vif)
{
	int err;
	u8 addr[ETH_ALEN];
@@ -2159,6 +2160,9 @@ static int mac80211_hwsim_create_radio(int channels, const char *reg_alpha2,
		schedule_timeout_interruptible(1);
	}

	if (no_vif)
		hw->flags |= IEEE80211_HW_NO_AUTO_VIF;

	err = ieee80211_register_hw(hw);
	if (err < 0) {
		printk(KERN_DEBUG "mac80211_hwsim: ieee80211_register_hw failed (%d)\n",
@@ -2447,11 +2451,15 @@ static int hwsim_create_radio_nl(struct sk_buff *msg, struct genl_info *info)
	bool p2p_device = info->attrs[HWSIM_ATTR_SUPPORT_P2P_DEVICE];
	bool destroy_on_close = info->attrs[HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE];
	bool use_chanctx;
	bool no_vif = false;
	const char *hwname = NULL;

	if (info->attrs[HWSIM_ATTR_CHANNELS])
		chans = nla_get_u32(info->attrs[HWSIM_ATTR_CHANNELS]);

	if (info->attrs[HWSIM_ATTR_NO_VIF])
		no_vif = true;

	if (info->attrs[HWSIM_ATTR_RADIO_NAME])
		hwname = nla_data(info->attrs[HWSIM_ATTR_RADIO_NAME]);

@@ -2474,7 +2482,7 @@ static int hwsim_create_radio_nl(struct sk_buff *msg, struct genl_info *info)
	return mac80211_hwsim_create_radio(chans, alpha2, regd, reg_strict,
					   p2p_device, use_chanctx,
					   destroy_on_close, info->snd_portid,
					   hwname);
					   hwname, no_vif);
}

static int hwsim_destroy_radio_nl(struct sk_buff *msg, struct genl_info *info)
@@ -2730,7 +2738,8 @@ static int __init init_mac80211_hwsim(void)
		err = mac80211_hwsim_create_radio(channels, reg_alpha2,
						  regd, reg_strict,
						  support_p2p_device,
						  channels > 1, false, 0, NULL);
						  channels > 1, false, 0, NULL,
						  false);
		if (err < 0)
			goto out_free_radios;
	}
+2 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ enum {
 * @HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE: used with the %HWSIM_CMD_CREATE_RADIO
 *	command to force radio removal when process that created the radio dies
 * @HWSIM_ATTR_RADIO_NAME: Name of radio, e.g. phy666
 * @HWSIM_ATTR_NO_VIF:  Do not create vif (wlanX) when creating radio.
 * @__HWSIM_ATTR_MAX: enum limit
 */

@@ -137,6 +138,7 @@ enum {
	HWSIM_ATTR_USE_CHANCTX,
	HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE,
	HWSIM_ATTR_RADIO_NAME,
	HWSIM_ATTR_NO_VIF,
	__HWSIM_ATTR_MAX,
};
#define HWSIM_ATTR_MAX (__HWSIM_ATTR_MAX - 1)