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

Commit a2fbaaf7 authored by Igor Mitsyanko's avatar Igor Mitsyanko Committed by Kalle Valo
Browse files

qtnfmac: include full channels info to regulatory notifier



Before regulatory notifier is invoked by a wireless core, it will
update band information for the wiphy. Pass this information to
firmware together with new region alpha2 code.

Signed-off-by: default avatarIgor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 642f15a5
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -2406,10 +2406,13 @@ int qtnf_cmd_send_updown_intf(struct qtnf_vif *vif, bool up)

int qtnf_cmd_reg_notify(struct qtnf_wmac *mac, struct regulatory_request *req)
{
	struct wiphy *wiphy = priv_to_wiphy(mac);
	struct qtnf_bus *bus = mac->bus;
	struct sk_buff *cmd_skb;
	int ret;
	struct qlink_cmd_reg_notify *cmd;
	enum nl80211_band band;
	const struct ieee80211_supported_band *cfg_band;

	cmd_skb = qtnf_cmd_alloc_new_cmdskb(mac->macid, QLINK_VIFID_RSVD,
					    QLINK_CMD_REG_NOTIFY,
@@ -2448,6 +2451,23 @@ int qtnf_cmd_reg_notify(struct qtnf_wmac *mac, struct regulatory_request *req)
		break;
	}

	cmd->num_channels = 0;

	for (band = 0; band < NUM_NL80211_BANDS; band++) {
		unsigned int i;

		cfg_band = wiphy->bands[band];
		if (!cfg_band)
			continue;

		cmd->num_channels += cfg_band->n_channels;

		for (i = 0; i < cfg_band->n_channels; ++i) {
			qtnf_cmd_channel_tlv_add(cmd_skb,
						 &cfg_band->channels[i]);
		}
	}

	qtnf_bus_lock(bus);
	ret = qtnf_cmd_send(bus, cmd_skb);
	qtnf_bus_unlock(bus);
+7 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@

#include <linux/ieee80211.h>

#define QLINK_PROTO_VER		13
#define QLINK_PROTO_VER		14

#define QLINK_MACID_RSVD		0xFF
#define QLINK_VIFID_RSVD		0xFF
@@ -580,12 +580,18 @@ enum qlink_user_reg_hint_type {
 * @initiator: which entity sent the request, one of &enum qlink_reg_initiator.
 * @user_reg_hint_type: type of hint for QLINK_REGDOM_SET_BY_USER request, one
 *	of &enum qlink_user_reg_hint_type.
 * @num_channels: number of &struct qlink_tlv_channel in a variable portion of a
 *	payload.
 * @info: variable portion of regulatory notifier callback.
 */
struct qlink_cmd_reg_notify {
	struct qlink_cmd chdr;
	u8 alpha2[2];
	u8 initiator;
	u8 user_reg_hint_type;
	u8 num_channels;
	u8 rsvd[3];
	u8 info[0];
} __packed;

/**