mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	wifi: mac80211: split bss_info_changed method
Split the bss_info_changed method to vif_cfg_changed and link_info_changed, with the latter getting a link ID. Also change the 'changed' parameter to u64 already, we know we need that. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
							parent
							
								
									bfd8403add
								
							
						
					
					
						commit
						7b7090b4c6
					
				
					 64 changed files with 321 additions and 167 deletions
				
			
		| 
						 | 
				
			
			@ -1311,7 +1311,7 @@ static int adm8211_config(struct ieee80211_hw *dev, u32 changed)
 | 
			
		|||
static void adm8211_bss_info_changed(struct ieee80211_hw *dev,
 | 
			
		||||
				     struct ieee80211_vif *vif,
 | 
			
		||||
				     struct ieee80211_bss_conf *conf,
 | 
			
		||||
				     u32 changes)
 | 
			
		||||
				     u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct adm8211_priv *priv = dev->priv;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1273,7 +1273,7 @@ static int ar5523_write_associd(struct ar5523 *ar, struct ieee80211_vif *vif)
 | 
			
		|||
static void ar5523_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *bss,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ar5523 *ar = hw->priv;
 | 
			
		||||
	int error;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6068,7 +6068,7 @@ static void ath10k_recalculate_mgmt_rate(struct ath10k *ar,
 | 
			
		|||
static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *info,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ath10k *ar = hw->priv;
 | 
			
		||||
	struct ath10k_vif *arvif = (void *)vif->drv_priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3091,7 +3091,7 @@ static int ath11k_mac_config_obss_pd(struct ath11k *ar,
 | 
			
		|||
static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
					   struct ieee80211_vif *vif,
 | 
			
		||||
					   struct ieee80211_bss_conf *info,
 | 
			
		||||
					   u32 changed)
 | 
			
		||||
					   u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ath11k *ar = hw->priv;
 | 
			
		||||
	struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -250,7 +250,7 @@ ath5k_config(struct ieee80211_hw *hw, u32 changed)
 | 
			
		|||
 | 
			
		||||
static void
 | 
			
		||||
ath5k_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
		       struct ieee80211_bss_conf *bss_conf, u32 changes)
 | 
			
		||||
		       struct ieee80211_bss_conf *bss_conf, u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct ath5k_vif *avf = (void *)vif->drv_priv;
 | 
			
		||||
	struct ath5k_hw *ah = hw->priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1509,7 +1509,7 @@ static void ath9k_htc_choose_set_bssid(struct ath9k_htc_priv *priv)
 | 
			
		|||
static void ath9k_htc_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				       struct ieee80211_vif *vif,
 | 
			
		||||
				       struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				       u32 changed)
 | 
			
		||||
				       u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ath9k_htc_priv *priv = hw->priv;
 | 
			
		||||
	struct ath_hw *ah = priv->ah;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1863,7 +1863,7 @@ static int ath9k_set_key(struct ieee80211_hw *hw,
 | 
			
		|||
static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				   struct ieee80211_vif *vif,
 | 
			
		||||
				   struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				   u32 changed)
 | 
			
		||||
				   u64 changed)
 | 
			
		||||
{
 | 
			
		||||
#define CHECK_ANI				\
 | 
			
		||||
	(BSS_CHANGED_ASSOC |			\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1032,7 +1032,7 @@ static void carl9170_op_configure_filter(struct ieee80211_hw *hw,
 | 
			
		|||
static void carl9170_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
					 struct ieee80211_vif *vif,
 | 
			
		||||
					 struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
					 u32 changed)
 | 
			
		||||
					 u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ar9170 *ar = hw->priv;
 | 
			
		||||
	struct ath_common *common = &ar->common;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -872,7 +872,7 @@ void wcn36xx_set_default_rates_v1(struct wcn36xx_hal_supported_rates_v1 *rates)
 | 
			
		|||
static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				     struct ieee80211_vif *vif,
 | 
			
		||||
				     struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				     u32 changed)
 | 
			
		||||
				     u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct wcn36xx *wcn = hw->priv;
 | 
			
		||||
	struct sk_buff *skb = NULL;
 | 
			
		||||
| 
						 | 
				
			
			@ -880,7 +880,7 @@ static void wcn36xx_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		|||
	enum wcn36xx_hal_link_state link_state;
 | 
			
		||||
	struct wcn36xx_vif *vif_priv = wcn36xx_vif_to_priv(vif);
 | 
			
		||||
 | 
			
		||||
	wcn36xx_dbg(WCN36XX_DBG_MAC, "mac bss info changed vif %p changed 0x%08x\n",
 | 
			
		||||
	wcn36xx_dbg(WCN36XX_DBG_MAC, "mac bss info changed vif %p changed 0x%llx\n",
 | 
			
		||||
		    vif, changed);
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&wcn->conf_mutex);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2033,7 +2033,7 @@ static int at76_config(struct ieee80211_hw *hw, u32 changed)
 | 
			
		|||
static void at76_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				  struct ieee80211_vif *vif,
 | 
			
		||||
				  struct ieee80211_bss_conf *conf,
 | 
			
		||||
				  u32 changed)
 | 
			
		||||
				  u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct at76_priv *priv = hw->priv;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -366,7 +366,7 @@ static int b43_wireless_core_start(struct b43_wldev *dev);
 | 
			
		|||
static void b43_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *conf,
 | 
			
		||||
				    u32 changed);
 | 
			
		||||
				    u64 changed);
 | 
			
		||||
 | 
			
		||||
static int b43_ratelimit(struct b43_wl *wl)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -4097,7 +4097,7 @@ static void b43_update_basic_rates(struct b43_wldev *dev, u32 brates)
 | 
			
		|||
static void b43_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *conf,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct b43_wl *wl = hw_to_b43_wl(hw);
 | 
			
		||||
	struct b43_wldev *dev;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2806,7 +2806,7 @@ static void b43legacy_update_basic_rates(struct b43legacy_wldev *dev, u32 brates
 | 
			
		|||
static void b43legacy_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *conf,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct b43legacy_wl *wl = hw_to_b43legacy_wl(hw);
 | 
			
		||||
	struct b43legacy_wldev *dev;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -582,7 +582,7 @@ static int brcms_ops_config(struct ieee80211_hw *hw, u32 changed)
 | 
			
		|||
static void
 | 
			
		||||
brcms_ops_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
			struct ieee80211_vif *vif,
 | 
			
		||||
			struct ieee80211_bss_conf *info, u32 changed)
 | 
			
		||||
			struct ieee80211_bss_conf *info, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct brcms_info *wl = hw->priv;
 | 
			
		||||
	struct bcma_device *core = wl->wlc->hw->d11core;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5311,13 +5311,13 @@ il_beacon_update(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
 | 
			
		|||
 | 
			
		||||
void
 | 
			
		||||
il_mac_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
			struct ieee80211_bss_conf *bss_conf, u32 changes)
 | 
			
		||||
			struct ieee80211_bss_conf *bss_conf, u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct il_priv *il = hw->priv;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&il->mutex);
 | 
			
		||||
	D_MAC80211("enter: changes 0x%x\n", changes);
 | 
			
		||||
	D_MAC80211("enter: changes 0x%llx\n", changes);
 | 
			
		||||
 | 
			
		||||
	if (!il_is_alive(il)) {
 | 
			
		||||
		D_MAC80211("leave - not alive\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -5438,7 +5438,7 @@ il_mac_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	if (changes && il_is_associated(il) && vif->cfg.aid) {
 | 
			
		||||
		D_MAC80211("Changes (%#x) while associated\n", changes);
 | 
			
		||||
		D_MAC80211("Changes (%#llx) while associated\n", changes);
 | 
			
		||||
		ret = il_send_rxon_assoc(il);
 | 
			
		||||
		if (!ret) {
 | 
			
		||||
			/* Sync active_rxon with latest change. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1947,7 +1947,7 @@ il_get_hw_mode(struct il_priv *il, enum nl80211_band band)
 | 
			
		|||
int il_mac_config(struct ieee80211_hw *hw, u32 changed);
 | 
			
		||||
void il_mac_reset_tsf(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
 | 
			
		||||
void il_mac_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
			     struct ieee80211_bss_conf *bss_conf, u32 changes);
 | 
			
		||||
			     struct ieee80211_bss_conf *bss_conf, u64 changes);
 | 
			
		||||
void il_tx_cmd_protection(struct il_priv *il, struct ieee80211_tx_info *info,
 | 
			
		||||
			  __le16 fc, __le32 *tx_flags);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed);
 | 
			
		|||
void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
			     struct ieee80211_vif *vif,
 | 
			
		||||
			     struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
			     u32 changes);
 | 
			
		||||
			     u64 changes);
 | 
			
		||||
void iwlagn_config_ht40(struct ieee80211_conf *conf,
 | 
			
		||||
			struct iwl_rxon_context *ctx);
 | 
			
		||||
void iwl_set_rxon_ht(struct iwl_priv *priv, struct iwl_ht_config *ht_conf);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1383,7 +1383,7 @@ static void iwlagn_chain_noise_reset(struct iwl_priv *priv)
 | 
			
		|||
void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
			     struct ieee80211_vif *vif,
 | 
			
		||||
			     struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
			     u32 changes)
 | 
			
		||||
			     u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw);
 | 
			
		||||
	struct iwl_rxon_context *ctx = iwl_rxon_ctx_from_vif(vif);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2181,7 +2181,7 @@ static void iwl_mvm_protect_assoc(struct iwl_mvm *mvm,
 | 
			
		|||
static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
 | 
			
		||||
					     struct ieee80211_vif *vif,
 | 
			
		||||
					     struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
					     u32 changes)
 | 
			
		||||
					     u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 | 
			
		||||
	int ret;
 | 
			
		||||
| 
						 | 
				
			
			@ -2590,7 +2590,7 @@ static void
 | 
			
		|||
iwl_mvm_bss_info_changed_ap_ibss(struct iwl_mvm *mvm,
 | 
			
		||||
				 struct ieee80211_vif *vif,
 | 
			
		||||
				 struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				 u32 changes)
 | 
			
		||||
				 u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2621,7 +2621,7 @@ iwl_mvm_bss_info_changed_ap_ibss(struct iwl_mvm *mvm,
 | 
			
		|||
static void iwl_mvm_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				     struct ieee80211_vif *vif,
 | 
			
		||||
				     struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				     u32 changes)
 | 
			
		||||
				     u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -449,7 +449,7 @@ static int p54_get_stats(struct ieee80211_hw *dev,
 | 
			
		|||
static void p54_bss_info_changed(struct ieee80211_hw *dev,
 | 
			
		||||
				 struct ieee80211_vif *vif,
 | 
			
		||||
				 struct ieee80211_bss_conf *info,
 | 
			
		||||
				 u32 changed)
 | 
			
		||||
				 u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct p54_common *priv = dev->priv;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2100,14 +2100,14 @@ static void mac80211_hwsim_bcn_en_iter(void *data, u8 *mac,
 | 
			
		|||
static void mac80211_hwsim_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
					    struct ieee80211_vif *vif,
 | 
			
		||||
					    struct ieee80211_bss_conf *info,
 | 
			
		||||
					    u32 changed)
 | 
			
		||||
					    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct hwsim_vif_priv *vp = (void *)vif->drv_priv;
 | 
			
		||||
	struct mac80211_hwsim_data *data = hw->priv;
 | 
			
		||||
 | 
			
		||||
	hwsim_check_magic(vif);
 | 
			
		||||
 | 
			
		||||
	wiphy_dbg(hw->wiphy, "%s(changed=0x%x vif->addr=%pM)\n",
 | 
			
		||||
	wiphy_dbg(hw->wiphy, "%s(changed=0x%llx vif->addr=%pM)\n",
 | 
			
		||||
		  __func__, changed, vif->addr);
 | 
			
		||||
 | 
			
		||||
	if (changed & BSS_CHANGED_BSSID) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -417,7 +417,7 @@ static void lbtf_op_configure_filter(struct ieee80211_hw *hw,
 | 
			
		|||
static void lbtf_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
			struct ieee80211_vif *vif,
 | 
			
		||||
			struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
			u32 changes)
 | 
			
		||||
			u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct lbtf_private *priv = hw->priv;
 | 
			
		||||
	struct sk_buff *beacon;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5163,7 +5163,7 @@ mwl8k_bss_info_changed_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		|||
 | 
			
		||||
static void
 | 
			
		||||
mwl8k_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
		       struct ieee80211_bss_conf *info, u32 changed)
 | 
			
		||||
		       struct ieee80211_bss_conf *info, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	if (vif->type == NL80211_IFTYPE_STATION)
 | 
			
		||||
		mwl8k_bss_info_changed_sta(hw, vif, info, changed);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -297,7 +297,7 @@ mt7603_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,
 | 
			
		|||
 | 
			
		||||
static void
 | 
			
		||||
mt7603_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
			struct ieee80211_bss_conf *info, u32 changed)
 | 
			
		||||
			struct ieee80211_bss_conf *info, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct mt7603_dev *dev = hw->priv;
 | 
			
		||||
	struct mt7603_vif *mvif = (struct mt7603_vif *)vif->drv_priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -576,7 +576,7 @@ static void mt7615_configure_filter(struct ieee80211_hw *hw,
 | 
			
		|||
static void mt7615_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *info,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct mt7615_dev *dev = mt7615_hw_dev(hw);
 | 
			
		||||
	struct mt7615_phy *phy = mt7615_hw_phy(hw);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -187,7 +187,7 @@ void mt76x02_sw_scan_complete(struct ieee80211_hw *hw,
 | 
			
		|||
void mt76x02_sta_ps(struct mt76_dev *dev, struct ieee80211_sta *sta, bool ps);
 | 
			
		||||
void mt76x02_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
			      struct ieee80211_vif *vif,
 | 
			
		||||
			      struct ieee80211_bss_conf *info, u32 changed);
 | 
			
		||||
			      struct ieee80211_bss_conf *info, u64 changed);
 | 
			
		||||
void mt76x02_reconfig_complete(struct ieee80211_hw *hw,
 | 
			
		||||
			       enum ieee80211_reconfig_type reconfig_type);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -636,7 +636,7 @@ EXPORT_SYMBOL_GPL(mt76x02_sta_ps);
 | 
			
		|||
void mt76x02_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
			      struct ieee80211_vif *vif,
 | 
			
		||||
			      struct ieee80211_bss_conf *info,
 | 
			
		||||
			      u32 changed)
 | 
			
		||||
			      u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct mt76x02_vif *mvif = (struct mt76x02_vif *)vif->drv_priv;
 | 
			
		||||
	struct mt76x02_dev *dev = hw->priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -573,7 +573,7 @@ mt7915_update_bss_color(struct ieee80211_hw *hw,
 | 
			
		|||
static void mt7915_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *info,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct mt7915_phy *phy = mt7915_hw_phy(hw);
 | 
			
		||||
	struct mt7915_dev *dev = mt7915_hw_dev(hw);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -637,7 +637,7 @@ static void mt7921_configure_filter(struct ieee80211_hw *hw,
 | 
			
		|||
static void mt7921_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *info,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct mt7921_phy *phy = mt7921_hw_phy(hw);
 | 
			
		||||
	struct mt7921_dev *dev = mt7921_hw_dev(hw);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -132,7 +132,7 @@ mt76_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,
 | 
			
		|||
 | 
			
		||||
static void
 | 
			
		||||
mt7601u_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
			 struct ieee80211_bss_conf *info, u32 changed)
 | 
			
		||||
			 struct ieee80211_bss_conf *info, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct mt7601u_dev *dev = hw->priv;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -587,12 +587,12 @@ static void plfxlc_op_configure_filter(struct ieee80211_hw *hw,
 | 
			
		|||
static void plfxlc_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				       struct ieee80211_vif *vif,
 | 
			
		||||
				       struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				       u32 changes)
 | 
			
		||||
				       u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct plfxlc_mac *mac = plfxlc_hw_mac(hw);
 | 
			
		||||
	int associated;
 | 
			
		||||
 | 
			
		||||
	dev_dbg(plfxlc_mac_dev(mac), "changes: %x\n", changes);
 | 
			
		||||
	dev_dbg(plfxlc_mac_dev(mac), "changes: %llx\n", changes);
 | 
			
		||||
 | 
			
		||||
	if (mac->type != NL80211_IFTYPE_ADHOC) { /* for STATION */
 | 
			
		||||
		associated = is_valid_ether_addr(bss_conf->bssid);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1479,7 +1479,7 @@ int rt2x00mac_get_stats(struct ieee80211_hw *hw,
 | 
			
		|||
void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				struct ieee80211_vif *vif,
 | 
			
		||||
				struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				u32 changes);
 | 
			
		||||
				u64 changes);
 | 
			
		||||
int rt2x00mac_conf_tx(struct ieee80211_hw *hw,
 | 
			
		||||
		      struct ieee80211_vif *vif, u16 queue,
 | 
			
		||||
		      const struct ieee80211_tx_queue_params *params);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -574,7 +574,7 @@ EXPORT_SYMBOL_GPL(rt2x00mac_get_stats);
 | 
			
		|||
void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				struct ieee80211_vif *vif,
 | 
			
		||||
				struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				u32 changes)
 | 
			
		||||
				u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct rt2x00_dev *rt2x00dev = hw->priv;
 | 
			
		||||
	struct rt2x00_intf *intf = vif_to_intf(vif);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1500,7 +1500,7 @@ static void rtl8180_conf_erp(struct ieee80211_hw *dev,
 | 
			
		|||
static void rtl8180_bss_info_changed(struct ieee80211_hw *dev,
 | 
			
		||||
				     struct ieee80211_vif *vif,
 | 
			
		||||
				     struct ieee80211_bss_conf *info,
 | 
			
		||||
				     u32 changed)
 | 
			
		||||
				     u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct rtl8180_priv *priv = dev->priv;
 | 
			
		||||
	struct rtl8180_vif *vif_priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1251,7 +1251,7 @@ static void rtl8187_conf_erp(struct rtl8187_priv *priv, bool use_short_slot,
 | 
			
		|||
static void rtl8187_bss_info_changed(struct ieee80211_hw *dev,
 | 
			
		||||
				     struct ieee80211_vif *vif,
 | 
			
		||||
				     struct ieee80211_bss_conf *info,
 | 
			
		||||
				     u32 changed)
 | 
			
		||||
				     u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct rtl8187_priv *priv = dev->priv;
 | 
			
		||||
	struct rtl8187_vif *vif_priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4558,7 +4558,7 @@ rtl8xxxu_wireless_mode(struct ieee80211_hw *hw, struct ieee80211_sta *sta)
 | 
			
		|||
 | 
			
		||||
static void
 | 
			
		||||
rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
			  struct ieee80211_bss_conf *bss_conf, u32 changed)
 | 
			
		||||
			  struct ieee80211_bss_conf *bss_conf, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct rtl8xxxu_priv *priv = hw->priv;
 | 
			
		||||
	struct device *dev = &priv->udev->dev;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1040,7 +1040,7 @@ EXPORT_SYMBOL_GPL(rtl_update_beacon_work_callback);
 | 
			
		|||
static void rtl_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				    struct ieee80211_vif *vif,
 | 
			
		||||
				    struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				    u32 changed)
 | 
			
		||||
				    u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct rtl_priv *rtlpriv = rtl_priv(hw);
 | 
			
		||||
	struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -355,7 +355,7 @@ static void rtw_conf_tx(struct rtw_dev *rtwdev,
 | 
			
		|||
static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				     struct ieee80211_vif *vif,
 | 
			
		||||
				     struct ieee80211_bss_conf *conf,
 | 
			
		||||
				     u32 changed)
 | 
			
		||||
				     u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct rtw_dev *rtwdev = hw->priv;
 | 
			
		||||
	struct rtw_vif *rtwvif = (struct rtw_vif *)vif->drv_priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -336,7 +336,7 @@ static void rtw89_station_mode_sta_assoc(struct rtw89_dev *rtwdev,
 | 
			
		|||
static void rtw89_ops_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				       struct ieee80211_vif *vif,
 | 
			
		||||
				       struct ieee80211_bss_conf *conf,
 | 
			
		||||
				       u32 changed)
 | 
			
		||||
				       u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct rtw89_dev *rtwdev = hw->priv;
 | 
			
		||||
	struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -783,7 +783,7 @@ static void rsi_switch_channel(struct rsi_hw *adapter,
 | 
			
		|||
static void rsi_mac80211_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
					  struct ieee80211_vif *vif,
 | 
			
		||||
					  struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
					  u32 changed)
 | 
			
		||||
					  u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct rsi_hw *adapter = hw->priv;
 | 
			
		||||
	struct rsi_common *common = adapter->priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -506,7 +506,7 @@ static void wfx_enable_beacon(struct wfx_vif *wvif, bool enable)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void wfx_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
			  struct ieee80211_bss_conf *info, u32 changed)
 | 
			
		||||
			  struct ieee80211_bss_conf *info, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct wfx_dev *wdev = hw->priv;
 | 
			
		||||
	struct wfx_vif *wvif = (struct wfx_vif *)vif->drv_priv;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,7 @@ void wfx_leave_ibss(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
 | 
			
		|||
int wfx_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
		u16 queue, const struct ieee80211_tx_queue_params *params);
 | 
			
		||||
void wfx_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
			  struct ieee80211_bss_conf *info, u32 changed);
 | 
			
		||||
			  struct ieee80211_bss_conf *info, u64 changed);
 | 
			
		||||
int wfx_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta);
 | 
			
		||||
int wfx_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_sta *sta);
 | 
			
		||||
void wfx_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1796,14 +1796,14 @@ static int cw1200_set_btcoexinfo(struct cw1200_common *priv)
 | 
			
		|||
void cw1200_bss_info_changed(struct ieee80211_hw *dev,
 | 
			
		||||
			     struct ieee80211_vif *vif,
 | 
			
		||||
			     struct ieee80211_bss_conf *info,
 | 
			
		||||
			     u32 changed)
 | 
			
		||||
			     u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct cw1200_common *priv = dev->priv;
 | 
			
		||||
	bool do_join = false;
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&priv->conf_mutex);
 | 
			
		||||
 | 
			
		||||
	pr_debug("BSS CHANGED:  %08x\n", changed);
 | 
			
		||||
	pr_debug("BSS CHANGED:  %llx\n", changed);
 | 
			
		||||
 | 
			
		||||
	/* TODO: BSS_CHANGED_QOS */
 | 
			
		||||
	/* TODO: BSS_CHANGED_TXPOWER */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -103,7 +103,7 @@ void cw1200_sta_notify(struct ieee80211_hw *dev, struct ieee80211_vif *vif,
 | 
			
		|||
void cw1200_bss_info_changed(struct ieee80211_hw *dev,
 | 
			
		||||
			     struct ieee80211_vif *vif,
 | 
			
		||||
			     struct ieee80211_bss_conf *info,
 | 
			
		||||
			     u32 changed);
 | 
			
		||||
			     u64 changed);
 | 
			
		||||
int cw1200_ampdu_action(struct ieee80211_hw *hw,
 | 
			
		||||
			struct ieee80211_vif *vif,
 | 
			
		||||
			struct ieee80211_ampdu_params *params);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1077,7 +1077,7 @@ static int wl1251_op_set_rts_threshold(struct ieee80211_hw *hw, u32 value)
 | 
			
		|||
static void wl1251_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				       struct ieee80211_vif *vif,
 | 
			
		||||
				       struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				       u32 changed)
 | 
			
		||||
				       u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct wl1251 *wl = hw->priv;
 | 
			
		||||
	struct sk_buff *beacon, *skb;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4580,7 +4580,7 @@ static void wl1271_bss_info_changed_sta(struct wl1271 *wl,
 | 
			
		|||
static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				       struct ieee80211_vif *vif,
 | 
			
		||||
				       struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				       u32 changed)
 | 
			
		||||
				       u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct wl1271 *wl = hw->priv;
 | 
			
		||||
	struct wl12xx_vif *wlvif = wl12xx_vif_to_data(vif);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1278,12 +1278,12 @@ static void set_rts_cts(struct zd_mac *mac, unsigned int short_preamble)
 | 
			
		|||
static void zd_op_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				   struct ieee80211_vif *vif,
 | 
			
		||||
				   struct ieee80211_bss_conf *bss_conf,
 | 
			
		||||
				   u32 changes)
 | 
			
		||||
				   u64 changes)
 | 
			
		||||
{
 | 
			
		||||
	struct zd_mac *mac = zd_hw_mac(hw);
 | 
			
		||||
	int associated;
 | 
			
		||||
 | 
			
		||||
	dev_dbg_f(zd_mac_dev(mac), "changes: %x\n", changes);
 | 
			
		||||
	dev_dbg_f(zd_mac_dev(mac), "changes: %llx\n", changes);
 | 
			
		||||
 | 
			
		||||
	if (mac->type == NL80211_IFTYPE_MESH_POINT ||
 | 
			
		||||
	    mac->type == NL80211_IFTYPE_ADHOC ||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1395,7 +1395,7 @@ static int vnt_config(struct ieee80211_hw *hw, u32 changed)
 | 
			
		|||
 | 
			
		||||
static void vnt_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				 struct ieee80211_vif *vif,
 | 
			
		||||
				 struct ieee80211_bss_conf *conf, u32 changed)
 | 
			
		||||
				 struct ieee80211_bss_conf *conf, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct vnt_private *priv = hw->priv;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -745,7 +745,7 @@ static int vnt_config(struct ieee80211_hw *hw, u32 changed)
 | 
			
		|||
 | 
			
		||||
static void vnt_bss_info_changed(struct ieee80211_hw *hw,
 | 
			
		||||
				 struct ieee80211_vif *vif,
 | 
			
		||||
				 struct ieee80211_bss_conf *conf, u32 changed)
 | 
			
		||||
				 struct ieee80211_bss_conf *conf, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct vnt_private *priv = hw->priv;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -273,8 +273,8 @@ struct ieee80211_vif_chanctx_switch {
 | 
			
		|||
/**
 | 
			
		||||
 * enum ieee80211_bss_change - BSS change notification flags
 | 
			
		||||
 *
 | 
			
		||||
 * These flags are used with the bss_info_changed() callback
 | 
			
		||||
 * to indicate which BSS parameter changed.
 | 
			
		||||
 * These flags are used with the bss_info_changed(), link_info_changed()
 | 
			
		||||
 * and vif_cfg_changed() callbacks to indicate which parameter(s) changed.
 | 
			
		||||
 *
 | 
			
		||||
 * @BSS_CHANGED_ASSOC: association status changed (associated/disassociated),
 | 
			
		||||
 *	also implies a change in the AID.
 | 
			
		||||
| 
						 | 
				
			
			@ -3524,6 +3524,22 @@ struct ieee80211_prep_tx_info {
 | 
			
		|||
 *	for association indication. The @changed parameter indicates which
 | 
			
		||||
 *	of the bss parameters has changed when a call is made. The callback
 | 
			
		||||
 *	can sleep.
 | 
			
		||||
 *	Note: this callback is called if @vif_cfg_changed or @link_info_changed
 | 
			
		||||
 *	are not implemented.
 | 
			
		||||
 *
 | 
			
		||||
 * @vif_cfg_changed: Handler for configuration requests related to interface
 | 
			
		||||
 *	(MLD) parameters from &struct ieee80211_vif_cfg that vary during the
 | 
			
		||||
 *	lifetime of the interface (e.g. assoc status, IP addresses, etc.)
 | 
			
		||||
 *	The @changed parameter indicates which value changed.
 | 
			
		||||
 *	The callback can sleep.
 | 
			
		||||
 *
 | 
			
		||||
 * @link_info_changed: Handler for configuration requests related to link
 | 
			
		||||
 *	parameters from &struct ieee80211_bss_conf that are related to an
 | 
			
		||||
 *	individual link. e.g. legacy/HT/VHT/... rate information.
 | 
			
		||||
 *	The @changed parameter indicates which value changed, and the @link_id
 | 
			
		||||
 *	parameter indicates the link ID. Note that the @link_id will be 0 for
 | 
			
		||||
 *	non-MLO connections.
 | 
			
		||||
 *	The callback can sleep.
 | 
			
		||||
 *
 | 
			
		||||
 * @prepare_multicast: Prepare for multicast filter configuration.
 | 
			
		||||
 *	This callback is optional, and its return value is passed
 | 
			
		||||
| 
						 | 
				
			
			@ -4032,7 +4048,13 @@ struct ieee80211_ops {
 | 
			
		|||
	void (*bss_info_changed)(struct ieee80211_hw *hw,
 | 
			
		||||
				 struct ieee80211_vif *vif,
 | 
			
		||||
				 struct ieee80211_bss_conf *info,
 | 
			
		||||
				 u32 changed);
 | 
			
		||||
				 u64 changed);
 | 
			
		||||
	void (*vif_cfg_changed)(struct ieee80211_hw *hw,
 | 
			
		||||
				struct ieee80211_vif *vif,
 | 
			
		||||
				u64 changed);
 | 
			
		||||
	void (*link_info_changed)(struct ieee80211_hw *hw,
 | 
			
		||||
				  struct ieee80211_vif *vif,
 | 
			
		||||
				  unsigned int link_id, u64 changed);
 | 
			
		||||
 | 
			
		||||
	int (*start_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
 | 
			
		||||
	void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,7 +39,8 @@ static void ieee80211_set_mu_mimo_follow(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
		memcpy(sdata->vif.bss_conf.mu_group.position,
 | 
			
		||||
		       params->vht_mumimo_groups + WLAN_MEMBERSHIP_LEN,
 | 
			
		||||
		       WLAN_USER_POSITION_LEN);
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_MU_GROUPS);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0,
 | 
			
		||||
						  BSS_CHANGED_MU_GROUPS);
 | 
			
		||||
		/* don't care about endianness - just check for 0 */
 | 
			
		||||
		memcpy(&membership, params->vht_mumimo_groups,
 | 
			
		||||
		       WLAN_MEMBERSHIP_LEN);
 | 
			
		||||
| 
						 | 
				
			
			@ -1333,7 +1334,7 @@ static int ieee80211_change_beacon(struct wiphy *wiphy, struct net_device *dev,
 | 
			
		|||
		err |= BSS_CHANGED_HE_BSS_COLOR;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, err);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, err);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1414,7 +1415,7 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,
 | 
			
		|||
	sdata->beacon_rate_set = false;
 | 
			
		||||
	sdata->vif.cfg.ssid_len = 0;
 | 
			
		||||
	clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED, &sdata->state);
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
 | 
			
		||||
	if (sdata->wdev.cac_started) {
 | 
			
		||||
		chandef = sdata->vif.bss_conf.chandef;
 | 
			
		||||
| 
						 | 
				
			
			@ -2347,7 +2348,7 @@ static int ieee80211_update_mesh_config(struct wiphy *wiphy,
 | 
			
		|||
	if (_chg_mesh_attr(NL80211_MESHCONF_HT_OPMODE, mask)) {
 | 
			
		||||
		conf->ht_opmode = nconf->ht_opmode;
 | 
			
		||||
		sdata->vif.bss_conf.ht_operation_mode = nconf->ht_opmode;
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_HT);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_HT);
 | 
			
		||||
	}
 | 
			
		||||
	if (_chg_mesh_attr(NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT, mask))
 | 
			
		||||
		conf->dot11MeshHWMPactivePathToRootTimeout =
 | 
			
		||||
| 
						 | 
				
			
			@ -2502,7 +2503,7 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 | 
			
		|||
		changed |= BSS_CHANGED_P2P_PS;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2543,7 +2544,7 @@ static int ieee80211_set_txq_params(struct wiphy *wiphy,
 | 
			
		|||
		return -EINVAL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_QOS);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_QOS);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -2692,7 +2693,7 @@ static int ieee80211_set_mcast_rate(struct wiphy *wiphy, struct net_device *dev,
 | 
			
		|||
	memcpy(sdata->vif.bss_conf.mcast_rate, rate,
 | 
			
		||||
	       sizeof(int) * NUM_NL80211_BANDS);
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_MCAST_RATE);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_MCAST_RATE);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3026,7 +3027,7 @@ static int ieee80211_set_cqm_rssi_config(struct wiphy *wiphy,
 | 
			
		|||
	/* tell the driver upon association, unless already associated */
 | 
			
		||||
	if (sdata->u.mgd.associated &&
 | 
			
		||||
	    sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_CQM_RSSI)
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_CQM);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3051,7 +3052,7 @@ static int ieee80211_set_cqm_rssi_range_config(struct wiphy *wiphy,
 | 
			
		|||
	/* tell the driver upon association, unless already associated */
 | 
			
		||||
	if (sdata->u.mgd.associated &&
 | 
			
		||||
	    sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_CQM_RSSI)
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_CQM);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3389,7 +3390,7 @@ static int __ieee80211_csa_finalize(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
	if (err)
 | 
			
		||||
		return err;
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
	if (sdata->deflink.csa_block_tx) {
 | 
			
		||||
		ieee80211_wake_vif_queues(local, sdata,
 | 
			
		||||
| 
						 | 
				
			
			@ -3677,7 +3678,7 @@ __ieee80211_channel_switch(struct wiphy *wiphy, struct net_device *dev,
 | 
			
		|||
					  params->count, params->block_tx);
 | 
			
		||||
 | 
			
		||||
	if (changed) {
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
		drv_channel_switch_beacon(sdata, ¶ms->chandef);
 | 
			
		||||
	} else {
 | 
			
		||||
		/* if the beacon didn't change, we can finalize immediately */
 | 
			
		||||
| 
						 | 
				
			
			@ -3980,7 +3981,7 @@ static int ieee80211_set_ap_chanwidth(struct wiphy *wiphy,
 | 
			
		|||
 | 
			
		||||
	ret = ieee80211_vif_change_bandwidth(sdata, chandef, &changed);
 | 
			
		||||
	if (ret == 0)
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -4389,7 +4390,7 @@ ieee80211_color_change_bss_config_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
	sdata->vif.bss_conf.he_bss_color.enabled = enable;
 | 
			
		||||
	changed |= BSS_CHANGED_HE_BSS_COLOR;
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
	if (!sdata->vif.bss_conf.nontransmitted && sdata->vif.mbssid_tx_vif) {
 | 
			
		||||
		struct ieee80211_sub_if_data *child;
 | 
			
		||||
| 
						 | 
				
			
			@ -4399,8 +4400,8 @@ ieee80211_color_change_bss_config_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
			if (child != sdata && child->vif.mbssid_tx_vif == &sdata->vif) {
 | 
			
		||||
				child->vif.bss_conf.he_bss_color.color = color;
 | 
			
		||||
				child->vif.bss_conf.he_bss_color.enabled = enable;
 | 
			
		||||
				ieee80211_bss_info_change_notify(child,
 | 
			
		||||
								 BSS_CHANGED_HE_BSS_COLOR);
 | 
			
		||||
				ieee80211_link_info_change_notify(child, 0,
 | 
			
		||||
								  BSS_CHANGED_HE_BSS_COLOR);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		mutex_unlock(&sdata->local->iflist_mtx);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -799,8 +799,7 @@ static int ieee80211_assign_vif_chanctx(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
 | 
			
		||||
	if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE &&
 | 
			
		||||
	    sdata->vif.type != NL80211_IFTYPE_MONITOR)
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata,
 | 
			
		||||
						 BSS_CHANGED_IDLE);
 | 
			
		||||
		ieee80211_vif_cfg_change_notify(sdata, BSS_CHANGED_IDLE);
 | 
			
		||||
 | 
			
		||||
	ieee80211_check_fast_xmit_iface(sdata);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1188,7 +1187,7 @@ ieee80211_vif_use_reserved_reassign(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
	ieee80211_recalc_radar_chanctx(local, new_ctx);
 | 
			
		||||
 | 
			
		||||
	if (changed)
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
out:
 | 
			
		||||
	ieee80211_vif_chanctx_reservation_complete(sdata);
 | 
			
		||||
| 
						 | 
				
			
			@ -1533,8 +1532,8 @@ static int ieee80211_vif_use_reserved_switch(struct ieee80211_local *local)
 | 
			
		|||
			ieee80211_vif_update_chandef(sdata,
 | 
			
		||||
						     &sdata->deflink.reserved_chandef);
 | 
			
		||||
			if (changed)
 | 
			
		||||
				ieee80211_bss_info_change_notify(sdata,
 | 
			
		||||
								 changed);
 | 
			
		||||
				ieee80211_link_info_change_notify(sdata, 0,
 | 
			
		||||
								  changed);
 | 
			
		||||
 | 
			
		||||
			ieee80211_recalc_txpower(sdata, false);
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -147,10 +147,27 @@ static inline int drv_config(struct ieee80211_local *local, u32 changed)
 | 
			
		|||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void drv_bss_info_changed(struct ieee80211_local *local,
 | 
			
		||||
					struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
					struct ieee80211_bss_conf *info,
 | 
			
		||||
					u32 changed)
 | 
			
		||||
static inline void drv_vif_cfg_changed(struct ieee80211_local *local,
 | 
			
		||||
				       struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
				       u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	might_sleep();
 | 
			
		||||
 | 
			
		||||
	if (!check_sdata_in_driver(sdata))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	trace_drv_vif_cfg_changed(local, sdata, changed);
 | 
			
		||||
	if (local->ops->vif_cfg_changed)
 | 
			
		||||
		local->ops->vif_cfg_changed(&local->hw, &sdata->vif, changed);
 | 
			
		||||
	else if (local->ops->bss_info_changed)
 | 
			
		||||
		local->ops->bss_info_changed(&local->hw, &sdata->vif,
 | 
			
		||||
					     &sdata->vif.bss_conf, changed);
 | 
			
		||||
	trace_drv_return_void(local);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline void drv_link_info_changed(struct ieee80211_local *local,
 | 
			
		||||
					 struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
					 int link_id, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	might_sleep();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -172,9 +189,13 @@ static inline void drv_bss_info_changed(struct ieee80211_local *local,
 | 
			
		|||
	if (!check_sdata_in_driver(sdata))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	trace_drv_bss_info_changed(local, sdata, info, changed);
 | 
			
		||||
	if (local->ops->bss_info_changed)
 | 
			
		||||
		local->ops->bss_info_changed(&local->hw, &sdata->vif, info, changed);
 | 
			
		||||
	trace_drv_link_info_changed(local, sdata, link_id, changed);
 | 
			
		||||
	if (local->ops->link_info_changed)
 | 
			
		||||
		local->ops->link_info_changed(&local->hw, &sdata->vif,
 | 
			
		||||
					      link_id, changed);
 | 
			
		||||
	else if (local->ops->bss_info_changed)
 | 
			
		||||
		local->ops->bss_info_changed(&local->hw, &sdata->vif,
 | 
			
		||||
					     &sdata->vif.bss_conf, changed);
 | 
			
		||||
	trace_drv_return_void(local);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1851,7 +1851,7 @@ int ieee80211_ibss_join(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
		| IEEE80211_HT_PARAM_RIFS_MODE;
 | 
			
		||||
 | 
			
		||||
	changed |= BSS_CHANGED_HT | BSS_CHANGED_MCAST_RATE;
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
	sdata->deflink.smps_mode = IEEE80211_SMPS_OFF;
 | 
			
		||||
	sdata->deflink.needed_rx_chains = local->rx_chains;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1836,7 +1836,11 @@ u64 ieee80211_calculate_rx_timestamp(struct ieee80211_local *local,
 | 
			
		|||
int ieee80211_hw_config(struct ieee80211_local *local, u32 changed);
 | 
			
		||||
void ieee80211_tx_set_protected(struct ieee80211_tx_data *tx);
 | 
			
		||||
void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
				      u32 changed);
 | 
			
		||||
				      u64 changed);
 | 
			
		||||
void ieee80211_vif_cfg_change_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
				     u64 changed);
 | 
			
		||||
void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
				       int link_id, u64 changed);
 | 
			
		||||
void ieee80211_configure_filter(struct ieee80211_local *local);
 | 
			
		||||
u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,7 +80,8 @@ void ieee80211_recalc_txpower(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
{
 | 
			
		||||
	if (__ieee80211_recalc_txpower(sdata) ||
 | 
			
		||||
	    (update_bss && ieee80211_sdata_running(sdata)))
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_TXPOWER);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0,
 | 
			
		||||
						  BSS_CHANGED_TXPOWER);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static u32 __ieee80211_idle_off(struct ieee80211_local *local)
 | 
			
		||||
| 
						 | 
				
			
			@ -1281,7 +1282,7 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
 | 
			
		|||
		if (sdata->vif.type != NL80211_IFTYPE_P2P_DEVICE &&
 | 
			
		||||
		    sdata->vif.type != NL80211_IFTYPE_NAN)
 | 
			
		||||
			changed |= ieee80211_reset_erp_info(sdata);
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
		switch (sdata->vif.type) {
 | 
			
		||||
		case NL80211_IFTYPE_STATION:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -199,15 +199,88 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
 | 
			
		|||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define BSS_CHANGED_VIF_CFG_FLAGS (BSS_CHANGED_ASSOC |\
 | 
			
		||||
				   BSS_CHANGED_IDLE |\
 | 
			
		||||
				   BSS_CHANGED_IBSS |\
 | 
			
		||||
				   BSS_CHANGED_ARP_FILTER |\
 | 
			
		||||
				   BSS_CHANGED_SSID)
 | 
			
		||||
 | 
			
		||||
void ieee80211_bss_info_change_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
				      u32 changed)
 | 
			
		||||
				      u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ieee80211_local *local = sdata->local;
 | 
			
		||||
 | 
			
		||||
	might_sleep();
 | 
			
		||||
 | 
			
		||||
	if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	drv_bss_info_changed(local, sdata, &sdata->vif.bss_conf, changed);
 | 
			
		||||
	if (WARN_ON_ONCE(changed & (BSS_CHANGED_BEACON |
 | 
			
		||||
				    BSS_CHANGED_BEACON_ENABLED) &&
 | 
			
		||||
			 sdata->vif.type != NL80211_IFTYPE_AP &&
 | 
			
		||||
			 sdata->vif.type != NL80211_IFTYPE_ADHOC &&
 | 
			
		||||
			 sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
 | 
			
		||||
			 sdata->vif.type != NL80211_IFTYPE_OCB))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (WARN_ON_ONCE(sdata->vif.type == NL80211_IFTYPE_P2P_DEVICE ||
 | 
			
		||||
			 sdata->vif.type == NL80211_IFTYPE_NAN ||
 | 
			
		||||
			 (sdata->vif.type == NL80211_IFTYPE_MONITOR &&
 | 
			
		||||
			  !sdata->vif.bss_conf.mu_mimo_owner &&
 | 
			
		||||
			  !(changed & BSS_CHANGED_TXPOWER))))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (!check_sdata_in_driver(sdata))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (changed & BSS_CHANGED_VIF_CFG_FLAGS) {
 | 
			
		||||
		u64 ch = changed & BSS_CHANGED_VIF_CFG_FLAGS;
 | 
			
		||||
 | 
			
		||||
		trace_drv_vif_cfg_changed(local, sdata, changed);
 | 
			
		||||
		if (local->ops->vif_cfg_changed)
 | 
			
		||||
			local->ops->vif_cfg_changed(&local->hw, &sdata->vif, ch);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (changed & ~BSS_CHANGED_VIF_CFG_FLAGS) {
 | 
			
		||||
		u64 ch = changed & ~BSS_CHANGED_VIF_CFG_FLAGS;
 | 
			
		||||
 | 
			
		||||
		/* FIXME: should be for each link */
 | 
			
		||||
		trace_drv_link_info_changed(local, sdata, 0, changed);
 | 
			
		||||
		if (local->ops->link_info_changed)
 | 
			
		||||
			local->ops->link_info_changed(&local->hw, &sdata->vif,
 | 
			
		||||
						      0, ch);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (local->ops->bss_info_changed)
 | 
			
		||||
		local->ops->bss_info_changed(&local->hw, &sdata->vif,
 | 
			
		||||
					     &sdata->vif.bss_conf, changed);
 | 
			
		||||
	trace_drv_return_void(local);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ieee80211_vif_cfg_change_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
				     u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ieee80211_local *local = sdata->local;
 | 
			
		||||
 | 
			
		||||
	WARN_ON_ONCE(changed & ~BSS_CHANGED_VIF_CFG_FLAGS);
 | 
			
		||||
 | 
			
		||||
	if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	drv_vif_cfg_changed(local, sdata, changed);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ieee80211_link_info_change_notify(struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
				       int link_id, u64 changed)
 | 
			
		||||
{
 | 
			
		||||
	struct ieee80211_local *local = sdata->local;
 | 
			
		||||
 | 
			
		||||
	WARN_ON_ONCE(changed & BSS_CHANGED_VIF_CFG_FLAGS);
 | 
			
		||||
 | 
			
		||||
	if (!changed || sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	drv_link_info_changed(local, sdata, link_id, changed);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u32 ieee80211_reset_erp_info(struct ieee80211_sub_if_data *sdata)
 | 
			
		||||
| 
						 | 
				
			
			@ -387,8 +460,7 @@ static int ieee80211_ifa_changed(struct notifier_block *nb,
 | 
			
		|||
 | 
			
		||||
	/* Configure driver only if associated (which also implies it is up) */
 | 
			
		||||
	if (ifmgd->associated)
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata,
 | 
			
		||||
						 BSS_CHANGED_ARP_FILTER);
 | 
			
		||||
		ieee80211_vif_cfg_change_notify(sdata, BSS_CHANGED_ARP_FILTER);
 | 
			
		||||
 | 
			
		||||
	sdata_unlock(sdata);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -557,6 +629,10 @@ struct ieee80211_hw *ieee80211_alloc_hw_nm(size_t priv_data_len,
 | 
			
		|||
	if (WARN_ON(ops->sta_state && (ops->sta_add || ops->sta_remove)))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	if (WARN_ON(!!ops->link_info_changed != !!ops->vif_cfg_changed ||
 | 
			
		||||
		    (ops->link_info_changed && ops->bss_info_changed)))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	/* check all or no channel context operations exist */
 | 
			
		||||
	i = !!ops->add_chanctx + !!ops->remove_chanctx +
 | 
			
		||||
	    !!ops->change_chanctx + !!ops->assign_vif_chanctx +
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1057,7 +1057,7 @@ int ieee80211_start_mesh(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	ieee80211_recalc_dtim(local, sdata);
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
 | 
			
		||||
	netif_carrier_on(sdata->dev);
 | 
			
		||||
	return 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -1081,7 +1081,7 @@ void ieee80211_stop_mesh(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
	sdata->vif.bss_conf.enable_beacon = false;
 | 
			
		||||
	sdata->beacon_rate_set = false;
 | 
			
		||||
	clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED, &sdata->state);
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
 | 
			
		||||
	/* remove beacon */
 | 
			
		||||
	bcn = rcu_dereference_protected(ifmsh->beacon,
 | 
			
		||||
| 
						 | 
				
			
			@ -1581,7 +1581,7 @@ static void mesh_bss_info_changed(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
		if (ieee80211_mesh_rebuild_beacon(sdata))
 | 
			
		||||
			return;
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ieee80211_mesh_work(struct ieee80211_sub_if_data *sdata)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1835,7 +1835,7 @@ void ieee80211_recalc_ps_vif(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
 | 
			
		||||
	if (sdata->vif.bss_conf.ps != ps_allowed) {
 | 
			
		||||
		sdata->vif.bss_conf.ps = ps_allowed;
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_PS);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_PS);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2031,7 +2031,7 @@ __ieee80211_sta_handle_tspec_ac_params(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
void ieee80211_sta_handle_tspec_ac_params(struct ieee80211_sub_if_data *sdata)
 | 
			
		||||
{
 | 
			
		||||
	if (__ieee80211_sta_handle_tspec_ac_params(sdata))
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_QOS);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_QOS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void ieee80211_sta_handle_tspec_ac_params_wk(struct work_struct *work)
 | 
			
		||||
| 
						 | 
				
			
			@ -2920,7 +2920,7 @@ static void ieee80211_destroy_auth_data(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
		sta_info_destroy_addr(sdata, auth_data->bss->bssid);
 | 
			
		||||
 | 
			
		||||
		eth_zero_addr(sdata->deflink.u.mgd.bssid);
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_BSSID);
 | 
			
		||||
		sdata->u.mgd.flags = 0;
 | 
			
		||||
		mutex_lock(&sdata->local->mtx);
 | 
			
		||||
		ieee80211_vif_release_channel(sdata);
 | 
			
		||||
| 
						 | 
				
			
			@ -2949,7 +2949,7 @@ static void ieee80211_destroy_assoc_data(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
		sta_info_destroy_addr(sdata, assoc_data->bss->bssid);
 | 
			
		||||
 | 
			
		||||
		eth_zero_addr(sdata->deflink.u.mgd.bssid);
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_BSSID);
 | 
			
		||||
		sdata->u.mgd.flags = 0;
 | 
			
		||||
		sdata->vif.bss_conf.mu_mimo_owner = false;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4387,7 +4387,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
					       elems->pwr_constr_elem,
 | 
			
		||||
					       elems->cisco_dtpc_elem);
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, changed);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, changed);
 | 
			
		||||
free:
 | 
			
		||||
	kfree(elems);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -5697,7 +5697,7 @@ static int ieee80211_prep_connection(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
		 * tell driver about BSSID, basic rates and timing
 | 
			
		||||
		 * this was set up above, before setting the channel
 | 
			
		||||
		 */
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata,
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0,
 | 
			
		||||
			BSS_CHANGED_BSSID | BSS_CHANGED_BASIC_RATES |
 | 
			
		||||
			BSS_CHANGED_BEACON_INT);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5865,7 +5865,7 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
 | 
			
		||||
 err_clear:
 | 
			
		||||
	eth_zero_addr(sdata->deflink.u.mgd.bssid);
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_BSSID);
 | 
			
		||||
	ifmgd->auth_data = NULL;
 | 
			
		||||
	mutex_lock(&sdata->local->mtx);
 | 
			
		||||
	ieee80211_vif_release_channel(sdata);
 | 
			
		||||
| 
						 | 
				
			
			@ -6212,7 +6212,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
	return 0;
 | 
			
		||||
 err_clear:
 | 
			
		||||
	eth_zero_addr(sdata->deflink.u.mgd.bssid);
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_BSSID);
 | 
			
		||||
	ifmgd->assoc_data = NULL;
 | 
			
		||||
 err_free:
 | 
			
		||||
	kfree(assoc_data);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -118,8 +118,8 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local)
 | 
			
		|||
			set_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED,
 | 
			
		||||
				&sdata->state);
 | 
			
		||||
			sdata->vif.bss_conf.enable_beacon = false;
 | 
			
		||||
			ieee80211_bss_info_change_notify(
 | 
			
		||||
				sdata, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
			ieee80211_link_info_change_notify(
 | 
			
		||||
				sdata, 0, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (sdata->vif.type == NL80211_IFTYPE_STATION &&
 | 
			
		||||
| 
						 | 
				
			
			@ -155,8 +155,8 @@ void ieee80211_offchannel_return(struct ieee80211_local *local)
 | 
			
		|||
		if (test_and_clear_bit(SDATA_STATE_OFFCHANNEL_BEACON_STOPPED,
 | 
			
		||||
				       &sdata->state)) {
 | 
			
		||||
			sdata->vif.bss_conf.enable_beacon = true;
 | 
			
		||||
			ieee80211_bss_info_change_notify(
 | 
			
		||||
				sdata, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
			ieee80211_link_info_change_notify(
 | 
			
		||||
				sdata, 0, BSS_CHANGED_BEACON_ENABLED);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	mutex_unlock(&local->iflist_mtx);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -630,7 +630,7 @@ ieee80211_recalc_p2p_go_ps_allowed(struct ieee80211_sub_if_data *sdata)
 | 
			
		|||
 | 
			
		||||
	if (allow_p2p_go_ps != sdata->vif.bss_conf.allow_p2p_go_ps) {
 | 
			
		||||
		sdata->vif.bss_conf.allow_p2p_go_ps = allow_p2p_go_ps;
 | 
			
		||||
		ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_P2P_PS);
 | 
			
		||||
		ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_P2P_PS);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1335,7 +1335,7 @@ iee80211_tdls_recalc_ht_protection(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
		return;
 | 
			
		||||
 | 
			
		||||
	sdata->vif.bss_conf.ht_operation_mode = opmode;
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_HT);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_HT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ieee80211_tdls_oper(struct wiphy *wiphy, struct net_device *dev,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -390,22 +390,71 @@ TRACE_EVENT(drv_config,
 | 
			
		|||
	)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
TRACE_EVENT(drv_bss_info_changed,
 | 
			
		||||
TRACE_EVENT(drv_vif_cfg_changed,
 | 
			
		||||
	TP_PROTO(struct ieee80211_local *local,
 | 
			
		||||
		 struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
		 struct ieee80211_bss_conf *info,
 | 
			
		||||
		 u32 changed),
 | 
			
		||||
		 u64 changed),
 | 
			
		||||
 | 
			
		||||
	TP_ARGS(local, sdata, info, changed),
 | 
			
		||||
	TP_ARGS(local, sdata, changed),
 | 
			
		||||
 | 
			
		||||
	TP_STRUCT__entry(
 | 
			
		||||
		LOCAL_ENTRY
 | 
			
		||||
		VIF_ENTRY
 | 
			
		||||
		__field(u32, changed)
 | 
			
		||||
		__field(u64, changed)
 | 
			
		||||
		__field(bool, assoc)
 | 
			
		||||
		__field(bool, ibss_joined)
 | 
			
		||||
		__field(bool, ibss_creator)
 | 
			
		||||
		__field(u16, aid)
 | 
			
		||||
		__dynamic_array(u32, arp_addr_list,
 | 
			
		||||
				sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
 | 
			
		||||
					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
 | 
			
		||||
					sdata->vif.cfg.arp_addr_cnt)
 | 
			
		||||
		__field(int, arp_addr_cnt)
 | 
			
		||||
		__dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len)
 | 
			
		||||
		__field(int, s1g)
 | 
			
		||||
		__field(bool, idle)
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	TP_fast_assign(
 | 
			
		||||
		LOCAL_ASSIGN;
 | 
			
		||||
		VIF_ASSIGN;
 | 
			
		||||
		__entry->changed = changed;
 | 
			
		||||
		__entry->aid = sdata->vif.cfg.aid;
 | 
			
		||||
		__entry->assoc = sdata->vif.cfg.assoc;
 | 
			
		||||
		__entry->ibss_joined = sdata->vif.cfg.ibss_joined;
 | 
			
		||||
		__entry->ibss_creator = sdata->vif.cfg.ibss_creator;
 | 
			
		||||
 | 
			
		||||
		__entry->arp_addr_cnt = sdata->vif.cfg.arp_addr_cnt;
 | 
			
		||||
		memcpy(__get_dynamic_array(arp_addr_list),
 | 
			
		||||
		       sdata->vif.cfg.arp_addr_list,
 | 
			
		||||
		       sizeof(u32) * (sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
 | 
			
		||||
					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
 | 
			
		||||
					sdata->vif.cfg.arp_addr_cnt));
 | 
			
		||||
		memcpy(__get_dynamic_array(ssid),
 | 
			
		||||
		       sdata->vif.cfg.ssid,
 | 
			
		||||
		       sdata->vif.cfg.ssid_len);
 | 
			
		||||
		__entry->s1g = sdata->vif.cfg.s1g;
 | 
			
		||||
		__entry->idle = sdata->vif.cfg.idle;
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	TP_printk(
 | 
			
		||||
		LOCAL_PR_FMT  VIF_PR_FMT " changed:%#llx",
 | 
			
		||||
		LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
 | 
			
		||||
	)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
TRACE_EVENT(drv_link_info_changed,
 | 
			
		||||
	TP_PROTO(struct ieee80211_local *local,
 | 
			
		||||
		 struct ieee80211_sub_if_data *sdata,
 | 
			
		||||
		 int link_id, u64 changed),
 | 
			
		||||
 | 
			
		||||
	TP_ARGS(local, sdata, link_id, changed),
 | 
			
		||||
 | 
			
		||||
	TP_STRUCT__entry(
 | 
			
		||||
		LOCAL_ENTRY
 | 
			
		||||
		VIF_ENTRY
 | 
			
		||||
		__field(u64, changed)
 | 
			
		||||
		__field(int, link_id)
 | 
			
		||||
		__field(bool, cts)
 | 
			
		||||
		__field(bool, shortpre)
 | 
			
		||||
		__field(bool, shortslot)
 | 
			
		||||
| 
						 | 
				
			
			@ -424,15 +473,8 @@ TRACE_EVENT(drv_bss_info_changed,
 | 
			
		|||
		__field(u32, channel_width)
 | 
			
		||||
		__field(u32, channel_cfreq1)
 | 
			
		||||
		__field(u32, channel_cfreq1_offset)
 | 
			
		||||
		__dynamic_array(u32, arp_addr_list,
 | 
			
		||||
				sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
 | 
			
		||||
					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
 | 
			
		||||
					sdata->vif.cfg.arp_addr_cnt)
 | 
			
		||||
		__field(int, arp_addr_cnt)
 | 
			
		||||
		__field(bool, qos)
 | 
			
		||||
		__field(bool, idle)
 | 
			
		||||
		__field(bool, ps)
 | 
			
		||||
		__dynamic_array(u8, ssid, sdata->vif.cfg.ssid_len)
 | 
			
		||||
		__field(bool, hidden_ssid)
 | 
			
		||||
		__field(int, txpower)
 | 
			
		||||
		__field(u8, p2p_oppps_ctwindow)
 | 
			
		||||
| 
						 | 
				
			
			@ -442,49 +484,37 @@ TRACE_EVENT(drv_bss_info_changed,
 | 
			
		|||
		LOCAL_ASSIGN;
 | 
			
		||||
		VIF_ASSIGN;
 | 
			
		||||
		__entry->changed = changed;
 | 
			
		||||
		__entry->aid = sdata->vif.cfg.aid;
 | 
			
		||||
		__entry->assoc = sdata->vif.cfg.assoc;
 | 
			
		||||
		__entry->ibss_joined = sdata->vif.cfg.ibss_joined;
 | 
			
		||||
		__entry->ibss_creator = sdata->vif.cfg.ibss_creator;
 | 
			
		||||
		__entry->shortpre = info->use_short_preamble;
 | 
			
		||||
		__entry->cts = info->use_cts_prot;
 | 
			
		||||
		__entry->shortslot = info->use_short_slot;
 | 
			
		||||
		__entry->enable_beacon = info->enable_beacon;
 | 
			
		||||
		__entry->dtimper = info->dtim_period;
 | 
			
		||||
		__entry->bcnint = info->beacon_int;
 | 
			
		||||
		__entry->assoc_cap = info->assoc_capability;
 | 
			
		||||
		__entry->sync_tsf = info->sync_tsf;
 | 
			
		||||
		__entry->sync_device_ts = info->sync_device_ts;
 | 
			
		||||
		__entry->sync_dtim_count = info->sync_dtim_count;
 | 
			
		||||
		__entry->basic_rates = info->basic_rates;
 | 
			
		||||
		memcpy(__entry->mcast_rate, info->mcast_rate,
 | 
			
		||||
		__entry->link_id = link_id;
 | 
			
		||||
		__entry->shortpre = sdata->vif.bss_conf.use_short_preamble;
 | 
			
		||||
		__entry->cts = sdata->vif.bss_conf.use_cts_prot;
 | 
			
		||||
		__entry->shortslot = sdata->vif.bss_conf.use_short_slot;
 | 
			
		||||
		__entry->enable_beacon = sdata->vif.bss_conf.enable_beacon;
 | 
			
		||||
		__entry->dtimper = sdata->vif.bss_conf.dtim_period;
 | 
			
		||||
		__entry->bcnint = sdata->vif.bss_conf.beacon_int;
 | 
			
		||||
		__entry->assoc_cap = sdata->vif.bss_conf.assoc_capability;
 | 
			
		||||
		__entry->sync_tsf = sdata->vif.bss_conf.sync_tsf;
 | 
			
		||||
		__entry->sync_device_ts = sdata->vif.bss_conf.sync_device_ts;
 | 
			
		||||
		__entry->sync_dtim_count = sdata->vif.bss_conf.sync_dtim_count;
 | 
			
		||||
		__entry->basic_rates = sdata->vif.bss_conf.basic_rates;
 | 
			
		||||
		memcpy(__entry->mcast_rate, sdata->vif.bss_conf.mcast_rate,
 | 
			
		||||
		       sizeof(__entry->mcast_rate));
 | 
			
		||||
		__entry->ht_operation_mode = info->ht_operation_mode;
 | 
			
		||||
		__entry->cqm_rssi_thold = info->cqm_rssi_thold;
 | 
			
		||||
		__entry->cqm_rssi_hyst = info->cqm_rssi_hyst;
 | 
			
		||||
		__entry->channel_width = info->chandef.width;
 | 
			
		||||
		__entry->channel_cfreq1 = info->chandef.center_freq1;
 | 
			
		||||
		__entry->channel_cfreq1_offset = info->chandef.freq1_offset;
 | 
			
		||||
		__entry->arp_addr_cnt = sdata->vif.cfg.arp_addr_cnt;
 | 
			
		||||
		memcpy(__get_dynamic_array(arp_addr_list),
 | 
			
		||||
		       sdata->vif.cfg.arp_addr_list,
 | 
			
		||||
		       sizeof(u32) * (sdata->vif.cfg.arp_addr_cnt > IEEE80211_BSS_ARP_ADDR_LIST_LEN ?
 | 
			
		||||
					IEEE80211_BSS_ARP_ADDR_LIST_LEN :
 | 
			
		||||
					sdata->vif.cfg.arp_addr_cnt));
 | 
			
		||||
		__entry->qos = info->qos;
 | 
			
		||||
		__entry->idle = sdata->vif.cfg.idle;
 | 
			
		||||
		__entry->ps = info->ps;
 | 
			
		||||
		memcpy(__get_dynamic_array(ssid),
 | 
			
		||||
		       sdata->vif.cfg.ssid,
 | 
			
		||||
		       sdata->vif.cfg.ssid_len);
 | 
			
		||||
		__entry->hidden_ssid = info->hidden_ssid;
 | 
			
		||||
		__entry->txpower = info->txpower;
 | 
			
		||||
		__entry->p2p_oppps_ctwindow = info->p2p_noa_attr.oppps_ctwindow;
 | 
			
		||||
		__entry->ht_operation_mode = sdata->vif.bss_conf.ht_operation_mode;
 | 
			
		||||
		__entry->cqm_rssi_thold = sdata->vif.bss_conf.cqm_rssi_thold;
 | 
			
		||||
		__entry->cqm_rssi_hyst = sdata->vif.bss_conf.cqm_rssi_hyst;
 | 
			
		||||
		__entry->channel_width = sdata->vif.bss_conf.chandef.width;
 | 
			
		||||
		__entry->channel_cfreq1 = sdata->vif.bss_conf.chandef.center_freq1;
 | 
			
		||||
		__entry->channel_cfreq1_offset = sdata->vif.bss_conf.chandef.freq1_offset;
 | 
			
		||||
		__entry->qos = sdata->vif.bss_conf.qos;
 | 
			
		||||
		__entry->ps = sdata->vif.bss_conf.ps;
 | 
			
		||||
		__entry->hidden_ssid = sdata->vif.bss_conf.hidden_ssid;
 | 
			
		||||
		__entry->txpower = sdata->vif.bss_conf.txpower;
 | 
			
		||||
		__entry->p2p_oppps_ctwindow = sdata->vif.bss_conf.p2p_noa_attr.oppps_ctwindow;
 | 
			
		||||
	),
 | 
			
		||||
 | 
			
		||||
	TP_printk(
 | 
			
		||||
		LOCAL_PR_FMT  VIF_PR_FMT " changed:%#x",
 | 
			
		||||
		LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
 | 
			
		||||
		LOCAL_PR_FMT  VIF_PR_FMT " link_id:%d, changed:%#llx",
 | 
			
		||||
		LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id,
 | 
			
		||||
		__entry->changed
 | 
			
		||||
	)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1699,8 +1699,8 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
	    sdata->vif.type != NL80211_IFTYPE_NAN) {
 | 
			
		||||
		sdata->vif.bss_conf.qos = enable_qos;
 | 
			
		||||
		if (bss_notify)
 | 
			
		||||
			ieee80211_bss_info_change_notify(sdata,
 | 
			
		||||
							 BSS_CHANGED_QOS);
 | 
			
		||||
			ieee80211_link_info_change_notify(sdata, 0,
 | 
			
		||||
							  BSS_CHANGED_QOS);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -665,7 +665,7 @@ void ieee80211_process_mu_groups(struct ieee80211_sub_if_data *sdata,
 | 
			
		|||
	       mgmt->u.action.u.vht_group_notif.position,
 | 
			
		||||
	       WLAN_USER_POSITION_LEN);
 | 
			
		||||
 | 
			
		||||
	ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_MU_GROUPS);
 | 
			
		||||
	ieee80211_link_info_change_notify(sdata, 0, BSS_CHANGED_MU_GROUPS);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ieee80211_update_mu_groups(struct ieee80211_vif *vif,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue