[2/2] ath10k: mac: enable WIPHY_FLAG_CHANNEL_CHANGE_ON_BEACON on ath10k

Message ID 20230629035254.2.I23c5e51afcc6173299bb2806c8c38364ad15dd63@changeid
State New
Headers
Series [1/2] wifi: cfg80211: call reg_call_notifier on beacon hints |

Commit Message

Abhishek Kumar June 29, 2023, 3:52 a.m. UTC
  Enabling this flag, ensures that reg_call_notifier is called
on beacon hints from handle_reg_beacon in cfg80211. This call
propagates the channel property changes to ath10k driver, thus
changing the channel property from passive scan to active scan
based on beacon hints.
Once the channels are rightly changed from passive to active,the
connection to hidden SSID does not fail.

Signed-off-by: Abhishek Kumar <kuabhs@chromium.org>
---

 drivers/net/wireless/ath/ath10k/mac.c | 1 +
 1 file changed, 1 insertion(+)
  

Comments

Kalle Valo Oct. 3, 2023, 2:44 p.m. UTC | #1
Abhishek Kumar <kuabhs@chromium.org> wrote:

> Enabling this flag, ensures that reg_call_notifier is called
> on beacon hints from handle_reg_beacon in cfg80211. This call
> propagates the channel property changes to ath10k driver, thus
> changing the channel property from passive scan to active scan
> based on beacon hints.
> Once the channels are rightly changed from passive to active,the
> connection to hidden SSID does not fail.
> 
> Signed-off-by: Abhishek Kumar <kuabhs@chromium.org>

There's no Tested-on tag, on which hardware/firmware did you test this?

This flag is now enabled on ALL ath10k supported hardware: SNOC, PCI, SDIO and
maybe soon USB. I'm just wondering can we trust that this doesn't break
anything.
  
Kalle Valo Oct. 14, 2023, 5:20 a.m. UTC | #2
Kalle Valo <kvalo@kernel.org> writes:

> Abhishek Kumar <kuabhs@chromium.org> wrote:
>
>> Enabling this flag, ensures that reg_call_notifier is called
>> on beacon hints from handle_reg_beacon in cfg80211. This call
>> propagates the channel property changes to ath10k driver, thus
>> changing the channel property from passive scan to active scan
>> based on beacon hints.
>> Once the channels are rightly changed from passive to active,the
>> connection to hidden SSID does not fail.
>> 
>> Signed-off-by: Abhishek Kumar <kuabhs@chromium.org>
>
> There's no Tested-on tag, on which hardware/firmware did you test this?
>
> This flag is now enabled on ALL ath10k supported hardware: SNOC, PCI, SDIO and
> maybe soon USB. I'm just wondering can we trust that this doesn't break
> anything.

Jeff, what are your thoughts on this? I'm worried how different ath10k
firmwares can be and if this breaks something.
  
Jeff Johnson Oct. 16, 2023, 4:41 p.m. UTC | #3
On 10/13/2023 10:20 PM, Kalle Valo wrote:
> Kalle Valo <kvalo@kernel.org> writes:
> 
>> Abhishek Kumar <kuabhs@chromium.org> wrote:
>>
>>> Enabling this flag, ensures that reg_call_notifier is called
>>> on beacon hints from handle_reg_beacon in cfg80211. This call
>>> propagates the channel property changes to ath10k driver, thus
>>> changing the channel property from passive scan to active scan
>>> based on beacon hints.
>>> Once the channels are rightly changed from passive to active,the
>>> connection to hidden SSID does not fail.
>>>
>>> Signed-off-by: Abhishek Kumar <kuabhs@chromium.org>
>>
>> There's no Tested-on tag, on which hardware/firmware did you test this?
>>
>> This flag is now enabled on ALL ath10k supported hardware: SNOC, PCI, SDIO and
>> maybe soon USB. I'm just wondering can we trust that this doesn't break
>> anything.
> 
> Jeff, what are your thoughts on this? I'm worried how different ath10k
> firmwares can be and if this breaks something.
> 

Since the 1/2 patch is already in pull-request: wireless-next-2023-10-06 
I went through the logic of that again. It would have been nice if that 
actually described how it fixes the problem. What actually causes a 
channel to change from passive to active?

Note the existing logic prior to the 1/2 patch already updates the wiphy 
and userspace with the updated channel flags, so it seems reasonable to 
also update the driver

However, this led me down the rabbit hole of trying to figure out what 
happens if a beacon hint causes us to change a channel from passive to 
active, but then that AP goes away. What, if anything, causes the 
channel to revert back to passive? I'm not immediately seeing that logic 
anywhere.

My concern is that we have an AP with a hidden SSID on a DFS channel, 
and as a result of a beacon hint we switch that channel to active scan. 
But then later that AP detects radar and vacates the channel. Then we 
potentially have stations doing active scan on a DFS channel with an 
active radar.

Hopefully this is all handled, and it just isn't obvious in my 
admittedly very quick 10 minute scan of the code.

And as far as the 2/2 patch, note this logic is all dependent upon 
reg_is_world_roaming(wiphy) returning true, so ath10k impact would 
really depend upon the board regulatory settings, whether configured for 
a fixed regulatory domain/country code or configured for world roaming.

/jeff
  

Patch

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 7675858f069b..12df3228b120 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -10033,6 +10033,7 @@  int ath10k_mac_register(struct ath10k *ar)
 
 	ar->hw->wiphy->features |= NL80211_FEATURE_STATIC_SMPS;
 	ar->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
+	ar->hw->wiphy->flags |= WIPHY_FLAG_CHANNEL_CHANGE_ON_BEACON;
 
 	if (ar->ht_cap_info & WMI_HT_CAP_DYNAMIC_SMPS)
 		ar->hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;