OSDN Git Service

rsi: Add support for changing beacon interval
authorMarek Vasut <marex@denx.de>
Fri, 7 May 2021 21:31:49 +0000 (23:31 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 15 Jun 2021 13:37:41 +0000 (16:37 +0300)
Pick code for changing the beacon interval (e.g. using beacon_int in
hostap config) from the downstream RSI driver.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Amitkumar Karwar <amit.karwar@redpinesignals.com>
Cc: Angus Ainslie <angus@akkea.ca>
Cc: David S. Miller <davem@davemloft.net>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Kalle Valo <kvalo@codeaurora.org>
Cc: Karun Eagalapati <karun256@gmail.com>
Cc: Martin Kepplinger <martink@posteo.de>
Cc: Prameela Rani Garnepudi <prameela.j04cs@gmail.com>
Cc: Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>
Cc: Siva Rebbagondla <siva8118@gmail.com>
Cc: netdev@vger.kernel.org
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210507213149.140192-1-marex@denx.de
drivers/net/wireless/rsi/rsi_91x_mac80211.c

index 1602530..d9f1e73 100644 (file)
@@ -837,6 +837,23 @@ static void rsi_mac80211_bss_info_changed(struct ieee80211_hw *hw,
                        common->cqm_info.rssi_hyst);
        }
 
+       if (changed & BSS_CHANGED_BEACON_INT) {
+               rsi_dbg(INFO_ZONE, "%s: Changed Beacon interval: %d\n",
+                       __func__, bss_conf->beacon_int);
+               if (common->beacon_interval != bss->beacon_int) {
+                       common->beacon_interval = bss->beacon_int;
+                       if (vif->type == NL80211_IFTYPE_AP) {
+                               struct vif_priv *vif_info = (struct vif_priv *)vif->drv_priv;
+
+                               rsi_set_vap_capabilities(common, RSI_OPMODE_AP,
+                                                        vif->addr, vif_info->vap_id,
+                                                        VAP_UPDATE);
+                       }
+               }
+               adapter->ps_info.listen_interval =
+                       bss->beacon_int * adapter->ps_info.num_bcns_per_lis_int;
+       }
+
        if ((changed & BSS_CHANGED_BEACON_ENABLED) &&
            ((vif->type == NL80211_IFTYPE_AP) ||
             (vif->type == NL80211_IFTYPE_P2P_GO))) {