> -----Original Message----- > From: Martin Kaistra <martin.kaistra@xxxxxxxxxxxxx> > Sent: Thursday, April 27, 2023 5:09 PM > To: linux-wireless@xxxxxxxxxxxxxxx > Cc: Jes Sorensen <Jes.Sorensen@xxxxxxxxx>; Kalle Valo <kvalo@xxxxxxxxxx>; Ping-Ke Shih > <pkshih@xxxxxxxxxxx>; Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx>; Sebastian Andrzej Siewior > <bigeasy@xxxxxxxxxxxxx> > Subject: [PATCH v3 03/18] wifi: rtl8xxxu: Add beacon functions > > Add a workqueue to update the beacon contents asynchronously and > implement downloading the beacon to the HW and starting beacon tx like > the vendor driver. > > Signed-off-by: Martin Kaistra <martin.kaistra@xxxxxxxxxxxxx> > --- [...] > /* > * The rtl8723a has 3 channel groups for it's efuse settings. It only > @@ -4964,6 +4978,16 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, > dev_dbg(dev, "Changed BASIC_RATES!\n"); > rtl8xxxu_set_basic_rates(priv, bss_conf->basic_rates); > } > + > + if (changed & BSS_CHANGED_BEACON_ENABLED && bss_conf->enable_beacon) > + rtl8xxxu_start_tx_beacon(priv); > + > + if (changed & BSS_CHANGED_BEACON) > + schedule_work(&priv->update_beacon_work); > + > + if (changed & BSS_CHANGED_BEACON_ENABLED && !bss_conf->enable_beacon) > + rtl8xxxu_stop_tx_beacon(priv); > + I thought these three synchronous works, so I have this suggestion, but actually update_beacon_work is asynchronous. Then, we can start/stop tx_beacon into a branch. if (changed & BSS_CHANGED_BEACON_ENABLED) { if (bss_conf->enable_beacon) rtl8xxxu_start_tx_beacon(priv); else rtl8xxxu_stop_tx_beacon(priv); } if (changed & BSS_CHANGED_BEACON) schedule_work(&priv->update_beacon_work); Ping-Ke