Commit acc7a4a6 authored by Sean Wang's avatar Sean Wang Committed by Felix Fietkau
Browse files

wifi: mt76: mt7925: add link handling in mt7925_mcu_set_beacon_filter

parent a03abb50
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -1818,21 +1818,32 @@ int mt7925_mcu_set_beacon_filter(struct mt792x_dev *dev,
{
#define MT7925_FIF_BIT_CLR		BIT(1)
#define MT7925_FIF_BIT_SET		BIT(0)
	struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
	unsigned long valid = ieee80211_vif_is_mld(vif) ?
				      mvif->valid_links : BIT(0);
	struct ieee80211_bss_conf *bss_conf;
	int err = 0;
	int i;

	if (enable) {
		err = mt7925_mcu_uni_bss_bcnft(dev, &vif->bss_conf, true);
		if (err)
		for_each_set_bit(i, &valid, IEEE80211_MLD_MAX_NUM_LINKS) {
			bss_conf = mt792x_vif_to_bss_conf(vif, i);
			err = mt7925_mcu_uni_bss_bcnft(dev, bss_conf, true);
			if (err < 0)
				return err;
		}

		return mt7925_mcu_set_rxfilter(dev, 0,
					       MT7925_FIF_BIT_SET,
					       MT_WF_RFCR_DROP_OTHER_BEACON);
	}

	err = mt7925_mcu_set_bss_pm(dev, &vif->bss_conf, false);
	for_each_set_bit(i, &valid, IEEE80211_MLD_MAX_NUM_LINKS) {
		bss_conf = mt792x_vif_to_bss_conf(vif, i);
		err = mt7925_mcu_set_bss_pm(dev, bss_conf, false);
		if (err)
			return err;
	}

	return mt7925_mcu_set_rxfilter(dev, 0,
				       MT7925_FIF_BIT_CLR,