2024-02-16 14:47:07

by Aditya Kumar Singh

[permalink] [raw]
Subject: [PATCH v3 0/2] wifi: mac80211/mac80211_hwsim: support MLO CSA test case

Recently MLO CSA is enabled on the stack. Add test infra support in
mac80211_hwsim in order to support basic MLO CSA test case.

Aditya Kumar Singh (2):
wifi: mac80211: check beacon countdown is complete on per link basis
wifi: mac80211_hwsim: add support for switch_vif_chanctx callback
---
v3: proper patch in [2/2].

v2: handled all mode cases of channel contexts in [2/2].
---
drivers/net/wireless/ath/ath10k/mac.c | 2 +-
drivers/net/wireless/ath/ath10k/wmi.c | 2 +-
drivers/net/wireless/ath/ath11k/mac.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 | 2 +-
.../wireless/intel/iwlwifi/mvm/time-event.c | 2 +-
drivers/net/wireless/mediatek/mt76/mac80211.c | 4 +-
.../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 2 +-
drivers/net/wireless/virtual/mac80211_hwsim.c | 46 ++++++++++++++++++-
include/net/mac80211.h | 4 +-
net/mac80211/tx.c | 14 +++++-
12 files changed, 69 insertions(+), 15 deletions(-)


base-commit: 42ffccd0a36e099dea3d3272c5d62a0454ded1f0
--
2.25.1



2024-02-16 14:47:17

by Aditya Kumar Singh

[permalink] [raw]
Subject: [PATCH v3 2/2] wifi: mac80211_hwsim: add support for switch_vif_chanctx callback

Currently switch_vif_chanctx mac80211 callback is not supported for
MLO. Add it.

Signed-off-by: Aditya Kumar Singh <[email protected]>
---
drivers/net/wireless/virtual/mac80211_hwsim.c | 44 ++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/virtual/mac80211_hwsim.c b/drivers/net/wireless/virtual/mac80211_hwsim.c
index 2ea11a86d920..b55fe320633c 100644
--- a/drivers/net/wireless/virtual/mac80211_hwsim.c
+++ b/drivers/net/wireless/virtual/mac80211_hwsim.c
@@ -3215,6 +3215,47 @@ static void mac80211_hwsim_unassign_vif_chanctx(struct ieee80211_hw *hw,
}
}

+static int mac80211_hwsim_switch_vif_chanctx(struct ieee80211_hw *hw,
+ struct ieee80211_vif_chanctx_switch *vifs,
+ int n_vifs,
+ enum ieee80211_chanctx_switch_mode mode)
+{
+ int i;
+
+ if (n_vifs <= 0)
+ return -EINVAL;
+
+ wiphy_dbg(hw->wiphy,
+ "switch vif channel context mode: %u\n", mode);
+
+ for (i = 0; i < n_vifs; i++) {
+ hwsim_check_chanctx_magic(vifs[i].old_ctx);
+ wiphy_dbg(hw->wiphy,
+ "switch vif channel context: %d MHz/width: %d/cfreqs:%d/%d MHz -> %d MHz/width: %d/cfreqs:%d/%d MHz\n",
+ vifs[i].old_ctx->def.chan->center_freq,
+ vifs[i].old_ctx->def.width,
+ vifs[i].old_ctx->def.center_freq1,
+ vifs[i].old_ctx->def.center_freq2,
+ vifs[i].new_ctx->def.chan->center_freq,
+ vifs[i].new_ctx->def.width,
+ vifs[i].new_ctx->def.center_freq1,
+ vifs[i].new_ctx->def.center_freq2);
+
+ switch (mode) {
+ case CHANCTX_SWMODE_REASSIGN_VIF:
+ hwsim_check_chanctx_magic(vifs[i].new_ctx);
+ break;
+ case CHANCTX_SWMODE_SWAP_CONTEXTS:
+ hwsim_set_chanctx_magic(vifs[i].new_ctx);
+ hwsim_clear_chanctx_magic(vifs[i].old_ctx);
+ break;
+ default:
+ WARN_ON("Invalid mode");
+ }
+ }
+ return 0;
+}
+
static const char mac80211_hwsim_gstrings_stats[][ETH_GSTRING_LEN] = {
"tx_pkts_nic",
"tx_bytes_nic",
@@ -3940,7 +3981,8 @@ static const struct ieee80211_ops mac80211_hwsim_ops = {
.remove_chanctx = mac80211_hwsim_remove_chanctx, \
.change_chanctx = mac80211_hwsim_change_chanctx, \
.assign_vif_chanctx = mac80211_hwsim_assign_vif_chanctx,\
- .unassign_vif_chanctx = mac80211_hwsim_unassign_vif_chanctx,
+ .unassign_vif_chanctx = mac80211_hwsim_unassign_vif_chanctx, \
+ .switch_vif_chanctx = mac80211_hwsim_switch_vif_chanctx,

static const struct ieee80211_ops mac80211_hwsim_mchan_ops = {
HWSIM_COMMON_OPS
--
2.25.1


2024-02-21 10:08:35

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v3 0/2] wifi: mac80211/mac80211_hwsim: support MLO CSA test case

Hi Aditya,

> Recently MLO CSA is enabled on the stack. Add test infra support in
> mac80211_hwsim in order to support basic MLO CSA test case.
>

Can't apply this right now as we're pushing wireless-next up to net-
next, but looks fine to me. I'll probably drop a 'return -EINVAL' on the
warning case, but no need to resend for that.

I also wanted to ask though if this needed any hostapd changes?

And I guess for real multi-link we need the CSA update things we've been
discussing, I'm guessing you're not going to want to work on that in
either hostapd or kernel since the ath12k firmware handles it all,
right?

Thanks,
johannes

2024-02-21 11:27:43

by Aditya Kumar Singh

[permalink] [raw]
Subject: Re: [PATCH v3 0/2] wifi: mac80211/mac80211_hwsim: support MLO CSA test case

On 2/21/24 15:38, Johannes Berg wrote:
> Hi Aditya,
>
>> Recently MLO CSA is enabled on the stack. Add test infra support in
>> mac80211_hwsim in order to support basic MLO CSA test case.
>>
>
> Can't apply this right now as we're pushing wireless-next up to net-
> next, but looks fine to me. I'll probably drop a 'return -EINVAL' on the
> warning case, but no need to resend for that.
>

Sure, thanks.

> I also wanted to ask though if this needed any hostapd changes?

Yes there is hostapd test case to validate MLO CSA. Will get those for
review to Jouni soon.

> And I guess for real multi-link we need the CSA update things we've been
> discussing, I'm guessing you're not going to want to work on that in
> either hostapd or kernel since the ath12k firmware handles it all,
> right?
>
Yeah at least template update for partner links, not really inclined
there but I like the idea of controlling it via some flag as you
suggested so that driver can choose. Currently checking with team
internally on how to do that. We'll get back soon :) We do have some
points to add to the discussion thread, will send that as well.



2024-03-08 04:40:57

by Aditya Kumar Singh

[permalink] [raw]
Subject: Re: [PATCH v3 0/2] wifi: mac80211/mac80211_hwsim: support MLO CSA test case

On 2/21/24 15:38, Johannes Berg wrote:
> I also wanted to ask though if this needed any hostapd changes?

Here you go - "tests: Add basic MLO CSA test case"
(https://patchwork.ozlabs.org/project/hostap/patch/[email protected]/)

Sorry, got little bit delayed :)