wifi: mac80211: split bss_info_changed method
authorJohannes Berg <johannes.berg@intel.com>
Tue, 24 May 2022 08:55:56 +0000 (10:55 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 20 Jun 2022 10:55:09 +0000 (12:55 +0200)
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>
64 files changed:
drivers/net/wireless/admtek/adm8211.c
drivers/net/wireless/ath/ar5523/ar5523.c
drivers/net/wireless/ath/ath10k/mac.c
drivers/net/wireless/ath/ath11k/mac.c
drivers/net/wireless/ath/ath5k/mac80211-ops.c
drivers/net/wireless/ath/ath9k/htc_drv_main.c
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/carl9170/main.c
drivers/net/wireless/ath/wcn36xx/main.c
drivers/net/wireless/atmel/at76c50x-usb.c
drivers/net/wireless/broadcom/b43/main.c
drivers/net/wireless/broadcom/b43legacy/main.c
drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c
drivers/net/wireless/intel/iwlegacy/common.c
drivers/net/wireless/intel/iwlegacy/common.h
drivers/net/wireless/intel/iwlwifi/dvm/agn.h
drivers/net/wireless/intel/iwlwifi/dvm/rxon.c
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
drivers/net/wireless/intersil/p54/main.c
drivers/net/wireless/mac80211_hwsim.c
drivers/net/wireless/marvell/libertas_tf/main.c
drivers/net/wireless/marvell/mwl8k.c
drivers/net/wireless/mediatek/mt76/mt7603/main.c
drivers/net/wireless/mediatek/mt76/mt7615/main.c
drivers/net/wireless/mediatek/mt76/mt76x02.h
drivers/net/wireless/mediatek/mt76/mt76x02_util.c
drivers/net/wireless/mediatek/mt76/mt7915/main.c
drivers/net/wireless/mediatek/mt76/mt7921/main.c
drivers/net/wireless/mediatek/mt7601u/main.c
drivers/net/wireless/purelifi/plfxlc/mac.c
drivers/net/wireless/ralink/rt2x00/rt2x00.h
drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c
drivers/net/wireless/realtek/rtl818x/rtl8187/dev.c
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
drivers/net/wireless/realtek/rtlwifi/core.c
drivers/net/wireless/realtek/rtw88/mac80211.c
drivers/net/wireless/realtek/rtw89/mac80211.c
drivers/net/wireless/rsi/rsi_91x_mac80211.c
drivers/net/wireless/silabs/wfx/sta.c
drivers/net/wireless/silabs/wfx/sta.h
drivers/net/wireless/st/cw1200/sta.c
drivers/net/wireless/st/cw1200/sta.h
drivers/net/wireless/ti/wl1251/main.c
drivers/net/wireless/ti/wlcore/main.c
drivers/net/wireless/zydas/zd1211rw/zd_mac.c
drivers/staging/vt6655/device_main.c
drivers/staging/vt6656/main_usb.c
include/net/mac80211.h
net/mac80211/cfg.c
net/mac80211/chan.c
net/mac80211/driver-ops.h
net/mac80211/ibss.c
net/mac80211/ieee80211_i.h
net/mac80211/iface.c
net/mac80211/main.c
net/mac80211/mesh.c
net/mac80211/mlme.c
net/mac80211/offchannel.c
net/mac80211/sta_info.c
net/mac80211/tdls.c
net/mac80211/trace.h
net/mac80211/util.c
net/mac80211/vht.c

index 2db9c948c0fc332aa4f2f125302a2f93b278fb38..6bee16b207d1fff8136c2856ef9a2ea49a48468d 100644 (file)
@@ -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;
 
index 4cd06a0942d43d57cf7b508d725255bf4ff06080..6f937d2cc1263e7c73ca6ddc2c2c8b5dcfdd8b09 100644 (file)
@@ -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;
index 4e7e2da3c859a532883cc7bd8d12f97872cfc9d0..c1f8123d81fe3ecc0c7881e5708b33fe67cd2706 100644 (file)
@@ -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;
index 1691615493617e7fd572b000d33b09f0c6486daa..3e07b1454fe42b395b0ef163fe9ba3c170b54f7d 100644 (file)
@@ -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);
index 0df0fa1da181e2ba7d4023c5acf42d0f98c6e642..8da232e8151871265f57d73107ec7373acbd7c3d 100644 (file)
@@ -250,7 +250,7 @@ unlock:
 
 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;
index 3a5ec4da6a380ab057f800a503e1bf052c9770ab..14d713e03872586c5e9bc856f419a8de71724e48 100644 (file)
@@ -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;
index 56c2681e5192d2ccdac7207c6506e234825d24ab..729f8ee9644d36819f44946914e0eb78ab692776 100644 (file)
@@ -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 |                    \
index e28a5f3085c0a4f1d7071740f7480d6618153bf5..3d881028bd00258a3554a384bdc3d1db2c7eb351 100644 (file)
@@ -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;
index 72ba2e2fc93aa9d6a3f66e48b7126eddb492f0c9..04fb26cb8322a53eafd6d2a69e0b00ea95e64112 100644 (file)
@@ -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);
index 7582761c61e2c98165936ced97803f361767a1a7..24e609c1f5231f552cf62c43e9f2dba9a15174f4 100644 (file)
@@ -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;
 
index 17bcec5f3ff752dfc41f4fa72877d530e032adda..e3121a9d057973c7f3244e6040aa0af4ee4b451a 100644 (file)
@@ -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;
index eec3af9c37451012b3483690e3445a42a073c8a9..96d5a034c09b0574df4eaf06900e6e9cccd0b7e5 100644 (file)
@@ -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;
index e6cd638a85d66754c22f8ac260e61b0f98fbc335..fd3c131c622ccad221d00db8e47a8ac4ac999ebe 100644 (file)
@@ -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;
index b01945415be6f1ba3a4fa13c62565c146949a8ee..affad34f70f09f9f704d116d13816397e48de73b 100644 (file)
@@ -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. */
index 40877ef1fbf2b67484df80d39a1b97326e86007e..d1383b4f0f0554437886b7f4a1edbb88971e9ec3 100644 (file)
@@ -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);
 
index abb8696ba294ace026f7579842ac38da4e4e34b6..411a6f6638b43e281811d26231da980f1de13fc4 100644 (file)
@@ -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);
index 17a14970edec4080f3d572e76ceb97302dedd3de..45e382fe45a2be5a6abd47090d2a4b058c1a80d4 100644 (file)
@@ -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);
index b5257b4fd000b08433e07e41071494bcee1f79f0..586208506275ecc5954c4dfdbf7fff1f33353ff5 100644 (file)
@@ -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);
 
index a9dfe6a3da0de65f5f483f2cccb337db48d328f8..cc6769a4fec724e4f8049a224e5a904519da8ec4 100644 (file)
@@ -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;
 
index 5aaf34f6f43b2c71b7cae9ed95b4996c8eaeee0a..de10a40d53062573562ee446744172ab1233dbcd 100644 (file)
@@ -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) {
index 02a1e1f547d802124df7aadbce3aae357c7e24f3..21c3e0bdc444552413061ca1fbc701f11b12f9b3 100644 (file)
@@ -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;
index 5f1bcfb5e3f661397fa92a645c8171ec0172f5a5..7eef3a74d124171a7d305fc747b395302927a269 100644 (file)
@@ -5163,7 +5163,7 @@ out:
 
 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);
index 1f14ecda1f550a90d13b7530b81817f791a04519..088c0a4cf774ff7d45095524af5787c20685bc61 100644 (file)
@@ -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;
index d992fdea0f326e29f35a0507e02de3c6e5232feb..277c22a4d04977242c739da610bb4537db30018c 100644 (file)
@@ -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);
index f76fd22ee03560da8c65c6693a5a7df97143207e..74ad418f5a700f8d8ef3174295038c608b7ee290 100644 (file)
@@ -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);
 
index 5bd0a0bae68874b0d03c2e1934cb20a84c078cdc..a0e2d042751b9182807a0e5a951ba44868a55124 100644 (file)
@@ -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;
index 05327b0b6fc37e0cdb572b13f38c95477da28465..fbeac9aa2af6dfd7bb3f6df738cfc1874647c8b4 100644 (file)
@@ -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);
index 8532033794bd78120846d88ee9658e4fb509d329..63583605d1cdf37b463be9daa60a296e8be917ee 100644 (file)
@@ -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);
index 671d8897ae76c2b4c0c018c46d7de96ad24a49a0..6c9c7a61c5c9878fbfa600cedb645280007fddcb 100644 (file)
@@ -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;
 
index 90e552532701ac06914f8999cad9900285b9e680..1fc1682683e169f7e9b6c0b8295f0894c7d52e5c 100644 (file)
@@ -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);
index 9f6fc40649be7f1369ba3b023e477d326fed72f5..918e0477bb7d7f3b204649d03bf2c67f0a33c60d 100644 (file)
@@ -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);
index 660554a01894dce89b3d19fc74757aec8f9e8266..6205d22765c77282fe41016f1a7a63557432986d 100644 (file)
@@ -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);
index 025619cd14e826c4956e255d898d0e23f2c982fb..10e8fdc3187957881df179a49fa39dfbce7af904 100644 (file)
@@ -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;
index eb68b2d3caa1212509fa9940971127b14fbdb264..8ab65c888baf3b6b07ecf48cba13ad83cafbdfb1 100644 (file)
@@ -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;
index 0239e12ec8a5b6a5fff71c31744180e242e3061d..65c4cb1e030c1c0464cc4a0ac29f5c8843ebdb76 100644 (file)
@@ -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;
index 5177eb02740eb225d1c578101718a0fda35a22f1..2f7fd8888d3a74d73bbd70fc116bfaf33e35225d 100644 (file)
@@ -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);
index c5954c18862d36f8f71b13489a0525ca89e74c72..9e0b5692fbab71a270c189de08d944e7bac3ddea 100644 (file)
@@ -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;
index ac8b9bf2b0bbcfa412ccd15b66a38a57b42cb5cc..5afb8fe5708ed78d8fc071949a3ef4fb1d159e55 100644 (file)
@@ -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;
index d4b3834388abbf2fa16c0ad36c6c3ac29524ba87..1dff3d263382d9d0ed00f86f31b57ce73d35ba9a 100644 (file)
@@ -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;
index 79fafe8143d92d77d3a9ef75c35fbc7a5e412f03..f4103a653e3b86492892b7ea7be8395447093665 100644 (file)
@@ -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;
index c69b2227e9ac89026b1cccb637fdac904ad1e1e1..d9c6bd632b209a119946c68536c5a497de7a7270 100644 (file)
@@ -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,
index 3f48def51ebc62597f9d0b95a7cd89bbb81e51dc..5fa6878ee109498c8df8b6d4fa7e7351084d66e2 100644 (file)
@@ -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 */
index 706dab8e73bf35bba11a86f0b9435b6973cbc2ad..05e3ab7ccef1749591fea288f7f4374062fb589d 100644 (file)
@@ -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);
index bdc93c4f54ba851279d6f62a9e2002be13d86ff1..340ab4985fe286ad526b23fb692682a30aa27d5e 100644 (file)
@@ -1077,7 +1077,7 @@ out:
 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;
index ad9560bd9512ca997d367a285678013085e5be6f..d365bdce2a10b4cd9cb28f4aa78b4ec77419f77f 100644 (file)
@@ -4580,7 +4580,7 @@ out:
 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);
index 3ef8533205f913c54e2960d630561826ab7427cb..b42fedba519d09db0d3dfad0795df77050cd2446 100644 (file)
@@ -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 ||
index 8c5de30478ec1a0eeb2afeb46ade1ebd96468e6f..e8ac7b93b58c2ee2c1a05c11b2f20ff65a9424ac 100644 (file)
@@ -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;
 
index 3ab8a7bb97155514c81025858251531b7af4b204..897ee0f7fc6bbfa9c86537c74c7d733c9481ec43 100644 (file)
@@ -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;
 
index 1520922d21a53918d8a13b86090dce72d831a634..17b6eb426356795273936c8d948a256f5d300c6f 100644 (file)
@@ -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);
index 0a717cb9540047a64bffca0487fd6e0c43efd981..a1404fe5cfe49fe17793ad555167bf7552a9ab8f 100644 (file)
@@ -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, &params->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);
index 67131ca3f6498ff246b09af04f8b86d6bf58b029..5d8b49f20198f7da4fa31f39396dad61542c7ede 100644 (file)
@@ -799,8 +799,7 @@ out:
 
        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);
                }
index fd2882348211c15c69efbdce51efad9394f859da..15ab8d00815b0c022c47dfcf0912ec63bf090014 100644 (file)
@@ -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);
 }
 
index 066f7c5adeec7056b1cc76bc945c0ab1bb41ac38..3b68e9f4345b6e70892a3af761abf3e5d3e19da2 100644 (file)
@@ -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;
index f0a8bb4440331bbc129cdd0130d92867307dbe34..20153957cdee7f8c18389f5bbb74293a4e9a71df 100644 (file)
@@ -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);
 
index 2ee34d8988215ca9a847760f79da9c9b706895e0..978dfa48e09800390763542087f778c4a2b85ede 100644 (file)
@@ -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:
index 0c81ae492df4f57e77c285461c942124437e4851..5c71b522013fc08b5df332b79316c887a52ac4d0 100644 (file)
@@ -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 +
index f60e257cba958f2847197ac2e7b245679e021885..13722a7f2254d6a3b1687a80732d499e535dbed4 100644 (file)
@@ -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)
index fd1b97e1e990c99c493abbbcc0fd9c2d3b9e8c8d..e172bdfe9b0a976aed4fc26ebdce474bbf37be86 100644 (file)
@@ -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 @@ skip_rates:
                 * 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);
index 6cd3df1eb6877e19728d1c4b8d5653290d25901e..2ed4e2325914a843760eabade726a82756dcd529 100644 (file)
@@ -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);
index 115efa830673bd234643dc7a7250359ef4380a19..9a70d846d0dda9452ba3c7c83d391745cdb75dee 100644 (file)
@@ -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);
        }
 }
 
index 8a2ec9c3124047c660c7989e1a1d33c89157168f..11a3b950b490390e86079e8b72fc6d68b9cf6417 100644 (file)
@@ -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,
index 74ef7e71e1efeb01e364c56fe69c928c2ad97ed1..9417378b4fc09fd98490f3e4e010bc449fde8b17 100644 (file)
@@ -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;
-       ),
-
-       TP_printk(
-               LOCAL_PR_FMT  VIF_PR_FMT " changed:%#x",
-               LOCAL_PR_ARG, VIF_PR_ARG, __entry->changed
+               __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 " link_id:%d, changed:%#llx",
+               LOCAL_PR_ARG, VIF_PR_ARG, __entry->link_id,
+               __entry->changed
        )
 );
 
index 9cbc09e6d84ec13273ecc5824bb6cc3aef8863ce..2a279dc3e457c5c9be67cbd50678267cd4f760ff 100644 (file)
@@ -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);
        }
 }
 
index ac97584b3a0be260f3e672d20f50322f3a7848ca..7daca8352debde8a207385f6333320dd0fb36e5d 100644 (file)
@@ -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,