From: Aloka Dixit Date: Tue, 6 Dec 2022 00:50:40 +0000 (-0800) Subject: wifi: mac80211_hwsim: EMA support X-Git-Tag: v6.6.7~2736^2~193^2~79 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0dd45ebc08de2449efe1a0908147796856a5f824;p=platform%2Fkernel%2Flinux-starfive.git wifi: mac80211_hwsim: EMA support Add support enhanced multi-BSS advertisements (EMA) for profile periodicity up to 3 beacons. Signed-off-by: Aloka Dixit Link: https://lore.kernel.org/r/20221206005040.3177-5-quic_alokad@quicinc.com Signed-off-by: Johannes Berg --- diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.c b/drivers/net/wireless/virtual/mac80211_hwsim.c index 58ceabbd..2aa7b74 100644 --- a/drivers/net/wireless/virtual/mac80211_hwsim.c +++ b/drivers/net/wireless/virtual/mac80211_hwsim.c @@ -2125,11 +2125,27 @@ static void mac80211_hwsim_beacon_tx(void *arg, u8 *mac, if (vif->mbssid_tx_vif && vif->mbssid_tx_vif != vif) return; - skb = ieee80211_beacon_get(hw, vif, link_id); - if (!skb) - return; + if (vif->bss_conf.ema_ap) { + struct ieee80211_ema_beacons *ema; + u8 i = 0; + + ema = ieee80211_beacon_get_template_ema_list(hw, vif, link_id); + if (!ema || !ema->cnt) + return; + + for (i = 0; i < ema->cnt; i++) { + __mac80211_hwsim_beacon_tx(link_conf, data, hw, vif, + ema->bcn[i].skb); + ema->bcn[i].skb = NULL; /* Already freed */ + } + ieee80211_beacon_free_ema_list(ema); + } else { + skb = ieee80211_beacon_get(hw, vif, link_id); + if (!skb) + return; - __mac80211_hwsim_beacon_tx(link_conf, data, hw, vif, skb); + __mac80211_hwsim_beacon_tx(link_conf, data, hw, vif, skb); + } while ((skb = ieee80211_get_buffered_bc(hw, vif)) != NULL) { mac80211_hwsim_tx_frame(hw, skb, @@ -4409,6 +4425,7 @@ static int mac80211_hwsim_new_radio(struct genl_info *info, } hw->wiphy->mbssid_max_interfaces = 8; + hw->wiphy->ema_max_profile_periodicity = 3; data->rx_rssi = DEFAULT_RX_RSSI;