Commit d9852ab2 authored by Ryder Lee's avatar Ryder Lee Committed by Felix Fietkau
Browse files

mt76: mt7615: keep mcu_add_bss_info enabled till interface removal



BSS_INFO_BASIC is never called alone with inactive state, which always
follows beacon offload disable, so keep it enabled throughout interfaces
life cycle. Inactive state also removes sta record of all connected
stations, thurs causes connection lost which defeats the purpose of CSA.

Lastly, this is especially an unexpected behavior that keeping mt7622
failing beacon buffer recyled when scanning channels.

bss_conf change is updated with active state only, so just overwrite it.

Signed-off-by: default avatarRyder Lee <ryder.lee@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent ad2a1ea4
Loading
Loading
Loading
Loading
+7 −6
Original line number Original line Diff line number Diff line
@@ -253,10 +253,11 @@ static void mt7615_remove_interface(struct ieee80211_hw *hw,
	struct mt7615_phy *phy = mt7615_hw_phy(hw);
	struct mt7615_phy *phy = mt7615_hw_phy(hw);
	int idx = msta->wcid.idx;
	int idx = msta->wcid.idx;


	/* TODO: disable beacon for the bss */

	mt7615_mutex_acquire(dev);
	mt7615_mutex_acquire(dev);


	mt7615_mcu_add_bss_info(phy, vif, NULL, false);
	mt7615_mcu_sta_add(phy, vif, NULL, false);

	mt76_testmode_reset(phy->mt76, true);
	mt76_testmode_reset(phy->mt76, true);
	if (vif == phy->monitor_vif)
	if (vif == phy->monitor_vif)
	    phy->monitor_vif = NULL;
	    phy->monitor_vif = NULL;
@@ -558,11 +559,11 @@ static void mt7615_bss_info_changed(struct ieee80211_hw *hw,
		}
		}
	}
	}


	if (changed & BSS_CHANGED_BEACON_ENABLED) {
	if (changed & BSS_CHANGED_BEACON_ENABLED && info->enable_beacon) {
		mt7615_mcu_add_bss_info(phy, vif, NULL, info->enable_beacon);
		mt7615_mcu_add_bss_info(phy, vif, NULL, true);
		mt7615_mcu_sta_add(phy, vif, NULL, info->enable_beacon);
		mt7615_mcu_sta_add(phy, vif, NULL, true);


		if (vif->p2p && info->enable_beacon)
		if (vif->p2p)
			mt7615_mcu_set_p2p_oppps(hw, vif);
			mt7615_mcu_set_p2p_oppps(hw, vif);
	}
	}