mbox series

[v5,0/3] wifi: cfg80211/mac80211: add link_id handling in AP channel switch during Multi-Link Operation

Message ID 20240125130410.827701-1-quic_adisi@quicinc.com
Headers show
Series wifi: cfg80211/mac80211: add link_id handling in AP channel switch during Multi-Link Operation | expand

Message

Aditya Kumar Singh Jan. 25, 2024, 1:04 p.m. UTC
Currently, during channel switch, deflink (or link_id 0) is always
considered. However, with Multi-Link Operation (MLO), there is a
need to handle link specific data structures based on the actual
operational link_id during channel switch operation.

Hence, add support for the same. Non-MLO based operations will use
link_id as 0 or deflink member as applicable.

While at it, beacon count down now needs to be updated on proper
link_id's beacon, do that as well.

Aditya Kumar Singh (3):
  wifi: cfg80211: send link id in channel_switch ops
  wifi: mac80211: add support for AP channel switch with MLO
  wifi: mac80211: update beacon counters per link basis
---
v5: * fixed compilation issue reported by kernel test robot.

v4: * fixed compilation issue reported by kernel test robot.
    * rebased on latest ToT.
    * moved link_id arguement into csa_params struct in [1/3]

v3: * splitted [v2 1/2] into [v3 1/3] and [v3 2/3] having simple cfg80211
      changes in 1/3 for easy review. Rest in 2/3 [Johannes]
    * used wiphy_dereference() instead of sdata_dereference() [Johannes]

v2: * reabsed on ToT
    * removed unwanted locking sequence during cancelling CSA work handler
      since now locking is moved to wiphy level, that part is uncessary now.
---
 drivers/net/wireless/ath/ath10k/mac.c         |   4 +-
 drivers/net/wireless/ath/ath10k/wmi.c         |   2 +-
 drivers/net/wireless/ath/ath11k/mac.c         |   2 +-
 drivers/net/wireless/ath/ath11k/wmi.c         |   2 +-
 drivers/net/wireless/ath/ath12k/wmi.c         |   2 +-
 drivers/net/wireless/ath/ath9k/beacon.c       |   2 +-
 .../net/wireless/ath/ath9k/htc_drv_beacon.c   |   2 +-
 .../net/wireless/intel/iwlwifi/mvm/mac-ctxt.c |   6 +-
 .../wireless/intel/iwlwifi/mvm/time-event.c   |   2 +-
 drivers/net/wireless/mediatek/mt76/mac80211.c |   2 +-
 .../net/wireless/mediatek/mt76/mt7615/mcu.c   |   2 +-
 .../net/wireless/mediatek/mt76/mt7915/mcu.c   |   2 +-
 .../net/wireless/mediatek/mt76/mt7996/mcu.c   |   2 +-
 .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c |   2 +-
 drivers/net/wireless/ti/wlcore/event.c        |   2 +-
 drivers/net/wireless/virtual/mac80211_hwsim.c |   2 +-
 include/net/cfg80211.h                        |   3 +
 include/net/mac80211.h                        |   7 +-
 net/mac80211/cfg.c                            | 110 +++++++++++-------
 net/mac80211/tx.c                             |  14 ++-
 net/wireless/nl80211.c                        |   1 +
 net/wireless/trace.h                          |   7 +-
 22 files changed, 112 insertions(+), 68 deletions(-)


base-commit: acf868ff60b1cd1f2e597f0b15aee2ff43f9fcd3

Comments

Johannes Berg Jan. 26, 2024, 9:18 a.m. UTC | #1
On Thu, 2024-01-25 at 18:34 +0530, Aditya Kumar Singh wrote:
> Currently, during channel switch, no link id information is passed
> due to which channel switch is carried on deflink always.

I guess I already know what you mean, but ... that's really hard to
parse, can you rewrite it?

> --- a/include/net/cfg80211.h
> +++ b/include/net/cfg80211.h
> @@ -1531,6 +1531,8 @@ struct cfg80211_ap_update {
>   * @punct_bitmap: Preamble puncturing bitmap. Each bit represents
>   *	a 20 MHz channel, lowest bit corresponding to the lowest channel.
>   *	Bit set to 1 indicates that the channel is punctured.
> + * @link_id: defines the link on which channel switch is expected during
> + *	     MLO. 0 is case of non-MLO.

please use a tab

johannes
Johannes Berg Jan. 26, 2024, 9:31 a.m. UTC | #2
On Thu, 2024-01-25 at 18:34 +0530, Aditya Kumar Singh wrote:
> Currently, function to update beacon counter uses deflink to fetch
> the beacon and then update the counter. However, with MLO, there is
> a need to update the counter for the beacon in a particular link.
> 
> Add support to use link_id in order to fetch the beacon from a particular
> link data during beacon update counter.
> 

Seems it would make sense to put this patch _before_ patch 2, since
otherwise in patch 2 it would appear to be kind of working but then not
really work?

johannes
Aditya Kumar Singh Jan. 27, 2024, 4:52 a.m. UTC | #3
On 1/26/24 14:48, Johannes Berg wrote:
> On Thu, 2024-01-25 at 18:34 +0530, Aditya Kumar Singh wrote:
>> Currently, during channel switch, no link id information is passed
>> due to which channel switch is carried on deflink always.
> 
> I guess I already know what you mean, but ... that's really hard to
> parse, can you rewrite it?
> 

Sure, let me rephrase it.

>> --- a/include/net/cfg80211.h
>> +++ b/include/net/cfg80211.h
>> @@ -1531,6 +1531,8 @@ struct cfg80211_ap_update {
>>    * @punct_bitmap: Preamble puncturing bitmap. Each bit represents
>>    *	a 20 MHz channel, lowest bit corresponding to the lowest channel.
>>    *	Bit set to 1 indicates that the channel is punctured.
>> + * @link_id: defines the link on which channel switch is expected during
>> + *	     MLO. 0 is case of non-MLO.
> 
> please use a tab
> 
Oh, checkpatch did not warn me. Let me take a look still. Thanks for 
pointing it out.
Aditya Kumar Singh Jan. 27, 2024, 5:01 a.m. UTC | #4
On 1/26/24 15:01, Johannes Berg wrote:
> On Thu, 2024-01-25 at 18:34 +0530, Aditya Kumar Singh wrote:
>> Currently, function to update beacon counter uses deflink to fetch
>> the beacon and then update the counter. However, with MLO, there is
>> a need to update the counter for the beacon in a particular link.
>>
>> Add support to use link_id in order to fetch the beacon from a particular
>> link data during beacon update counter.
>>
> 
> Seems it would make sense to put this patch _before_ patch 2, since
> otherwise in patch 2 it would appear to be kind of working but then not
> really work?
> 

You are right! I will move this to before [2] then followed by 
csa_finish() changes and then last patch would be to start csa process 
on given link. Looks fine?