[AMD Official Use Only - General] > -----Original Message----- > From: Limonciello, Mario <Mario.Limonciello@xxxxxxx> > Sent: Monday, July 24, 2023 9:41 PM > To: Andrew Lunn <andrew@xxxxxxx>; Quan, Evan <Evan.Quan@xxxxxxx> > Cc: rafael@xxxxxxxxxx; lenb@xxxxxxxxxx; Deucher, Alexander > <Alexander.Deucher@xxxxxxx>; Koenig, Christian > <Christian.Koenig@xxxxxxx>; Pan, Xinhui <Xinhui.Pan@xxxxxxx>; > airlied@xxxxxxxxx; daniel@xxxxxxxx; johannes@xxxxxxxxxxxxxxxx; > davem@xxxxxxxxxxxxx; edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx; > pabeni@xxxxxxxxxx; mdaenzer@xxxxxxxxxx; > maarten.lankhorst@xxxxxxxxxxxxxxx; tzimmermann@xxxxxxx; > hdegoede@xxxxxxxxxx; jingyuwang_vip@xxxxxxx; Lazar, Lijo > <Lijo.Lazar@xxxxxxx>; jim.cromie@xxxxxxxxx; bellosilicio@xxxxxxxxx; > andrealmeid@xxxxxxxxxx; trix@xxxxxxxxxx; jsg@xxxxxxxxx; arnd@xxxxxxxx; > linux-kernel@xxxxxxxxxxxxxxx; linux-acpi@xxxxxxxxxxxxxxx; amd- > gfx@xxxxxxxxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; linux- > wireless@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx > Subject: Re: [PATCH V7 4/9] wifi: mac80211: Add support for ACPI WBRF > > On 7/24/2023 04:22, Andrew Lunn wrote: > >> @@ -1395,6 +1395,8 @@ int ieee80211_register_hw(struct > ieee80211_hw *hw) > >> debugfs_hw_add(local); > >> rate_control_add_debugfs(local); > >> > >> + ieee80211_check_wbrf_support(local); > >> + > >> rtnl_lock(); > >> wiphy_lock(hw->wiphy); > >> > > > >> +void ieee80211_check_wbrf_support(struct ieee80211_local *local) { > >> + struct wiphy *wiphy = local->hw.wiphy; > >> + struct device *dev; > >> + > >> + if (!wiphy) > >> + return; > >> + > >> + dev = wiphy->dev.parent; > >> + if (!dev) > >> + return; > >> + > >> + local->wbrf_supported = wbrf_supported_producer(dev); > >> + dev_dbg(dev, "WBRF is %s supported\n", > >> + local->wbrf_supported ? "" : "not"); } > > > > This seems wrong. wbrf_supported_producer() is about "Should this > > device report the frequencies it is using?" The answer to that depends > > on a combination of: Are there consumers registered with the core, and > > is the policy set so WBRF should take actions. > The problem here is, > > you have no idea of the probe order. It could be this device probes > > before others, so wbrf_supported_producer() reports false, but a few > > second later would report true, once other devices have probed. > > > > It should be an inexpensive call into the core, so can be made every > > time the channel changes. All the core needs to do is check if the > > list of consumers is empty, and if not, check a Boolean policy value. > > > > Andrew > > No, it's not a combination of whether consumers are registered with the core. > If a consumer probes later it needs to know the current in use frequencies too. > > The reason is because of this sequence of events: > 1) Producer probes. > 2) Producer selects a frequency. > 3) Consumer probes. > 4) Producer stays at same frequency. > > If the producer doesn't notify the frequency because a consumer isn't yet > loaded then the consumer won't be able to get the current frequency. Yes, exactly.