@@ -1696,43 +1696,53 @@ mt7996_wait_reset_state(struct mt7996_dev *dev, u32 state)
16961696static void
16971697mt7996_update_vif_beacon (void * priv , u8 * mac , struct ieee80211_vif * vif )
16981698{
1699- struct ieee80211_hw * hw = priv ;
1699+ struct ieee80211_bss_conf * link_conf ;
1700+ struct mt7996_phy * phy = priv ;
1701+ struct mt7996_dev * dev = phy -> dev ;
1702+ unsigned int link_id ;
1703+
17001704
17011705 switch (vif -> type ) {
17021706 case NL80211_IFTYPE_MESH_POINT :
17031707 case NL80211_IFTYPE_ADHOC :
17041708 case NL80211_IFTYPE_AP :
1705- mt7996_mcu_add_beacon (hw , vif , & vif -> bss_conf );
17061709 break ;
17071710 default :
1708- break ;
1711+ return ;
1712+ }
1713+
1714+ for_each_vif_active_link (vif , link_conf , link_id ) {
1715+ struct mt7996_vif_link * link ;
1716+
1717+ link = mt7996_vif_link (dev , vif , link_id );
1718+ if (!link || link -> phy != phy )
1719+ continue ;
1720+
1721+ mt7996_mcu_add_beacon (dev -> mt76 .hw , vif , link_conf );
17091722 }
17101723}
17111724
1725+ void mt7996_mac_update_beacons (struct mt7996_phy * phy )
1726+ {
1727+ ieee80211_iterate_active_interfaces (phy -> mt76 -> hw ,
1728+ IEEE80211_IFACE_ITER_RESUME_ALL ,
1729+ mt7996_update_vif_beacon , phy );
1730+ }
1731+
17121732static void
17131733mt7996_update_beacons (struct mt7996_dev * dev )
17141734{
17151735 struct mt76_phy * phy2 , * phy3 ;
17161736
1717- ieee80211_iterate_active_interfaces (dev -> mt76 .hw ,
1718- IEEE80211_IFACE_ITER_RESUME_ALL ,
1719- mt7996_update_vif_beacon , dev -> mt76 .hw );
1737+ mt7996_mac_update_beacons (& dev -> phy );
17201738
17211739 phy2 = dev -> mt76 .phys [MT_BAND1 ];
1722- if (!phy2 )
1723- return ;
1724-
1725- ieee80211_iterate_active_interfaces (phy2 -> hw ,
1726- IEEE80211_IFACE_ITER_RESUME_ALL ,
1727- mt7996_update_vif_beacon , phy2 -> hw );
1740+ if (phy2 )
1741+ mt7996_mac_update_beacons (phy2 -> priv );
17281742
17291743 phy3 = dev -> mt76 .phys [MT_BAND2 ];
1730- if (!phy3 )
1731- return ;
1732-
1733- ieee80211_iterate_active_interfaces (phy3 -> hw ,
1734- IEEE80211_IFACE_ITER_RESUME_ALL ,
1735- mt7996_update_vif_beacon , phy3 -> hw );
1744+ if (phy3 )
1745+ mt7996_mac_update_beacons (phy3 -> priv );
17361746}
17371747
17381748void mt7996_tx_token_put (struct mt7996_dev * dev )
0 commit comments