Commit eb8352ee authored by Leon Yen's avatar Leon Yen Committed by Felix Fietkau
Browse files

wifi: mt76: mt792x: Limit the concurrent STA and SoftAP to operate on the same channel



Due to the lack of NoA(Notice of Absence) mechanism in SoftAP mode, it is
inappropriate to allow concurrent SoftAP and STA to operate on the
different channels.

This patch restricts the concurrent SoftAP and STA to be setup on the same
channel only.

Signed-off-by: default avatarLeon Yen <leon.yen@mediatek.com>
Signed-off-by: default avatarMing Yen Hsieh <mingyen.hsieh@mediatek.com>
Link: https://patch.msgid.link/20250625073720.1385210-1-mingyen.hsieh@mediatek.com


Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 03ee8f73
Loading
Loading
Loading
Loading
+27 −5
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ static const struct ieee80211_iface_combination if_comb[] = {
	},
};

static const struct ieee80211_iface_limit if_limits_chanctx[] = {
static const struct ieee80211_iface_limit if_limits_chanctx_mcc[] = {
	{
		.max = 2,
		.types = BIT(NL80211_IFTYPE_STATION) |
@@ -36,8 +36,23 @@ static const struct ieee80211_iface_limit if_limits_chanctx[] = {
	},
	{
		.max = 1,
		.types = BIT(NL80211_IFTYPE_AP) |
			 BIT(NL80211_IFTYPE_P2P_GO)
		.types = BIT(NL80211_IFTYPE_P2P_GO)
	},
	{
		.max = 1,
		.types = BIT(NL80211_IFTYPE_P2P_DEVICE)
	}
};

static const struct ieee80211_iface_limit if_limits_chanctx_scc[] = {
	{
		.max = 2,
		.types = BIT(NL80211_IFTYPE_STATION) |
			 BIT(NL80211_IFTYPE_P2P_CLIENT)
	},
	{
		.max = 1,
		.types = BIT(NL80211_IFTYPE_AP)
	},
	{
		.max = 1,
@@ -47,11 +62,18 @@ static const struct ieee80211_iface_limit if_limits_chanctx[] = {

static const struct ieee80211_iface_combination if_comb_chanctx[] = {
	{
		.limits = if_limits_chanctx,
		.n_limits = ARRAY_SIZE(if_limits_chanctx),
		.limits = if_limits_chanctx_mcc,
		.n_limits = ARRAY_SIZE(if_limits_chanctx_mcc),
		.max_interfaces = 3,
		.num_different_channels = 2,
		.beacon_int_infra_match = false,
	},
	{
		.limits = if_limits_chanctx_scc,
		.n_limits = ARRAY_SIZE(if_limits_chanctx_scc),
		.max_interfaces = 3,
		.num_different_channels = 1,
		.beacon_int_infra_match = false,
	}
};