mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-21 06:50:25 +00:00
wifi: iwlwifi: mld: add kunit test for emlsr with bt on
add kunit test to validate entering and exiting emlsr scenarios when the bt is on with certain penalty on wifi. Signed-off-by: Somashekhar Puttagangaiah <somashekhar.puttagangaiah@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250430155443.6621494fa412.If89b4b2dab308d825ca02284dd8e0030675d7af5@changeid
This commit is contained in:
parent
ad883b79b2
commit
f7cc80b871
4 changed files with 148 additions and 2 deletions
|
@ -640,7 +640,8 @@ s8 iwl_mld_get_emlsr_rssi_thresh(struct iwl_mld *mld,
|
|||
#define IWL_MLD_BT_COEX_ENABLE_EMLSR_RSSI_THRESH -63
|
||||
#define IWL_MLD_BT_COEX_WIFI_LOSS_THRESH 7
|
||||
|
||||
static bool
|
||||
VISIBLE_IF_IWLWIFI_KUNIT
|
||||
bool
|
||||
iwl_mld_bt_allows_emlsr(struct iwl_mld *mld, struct ieee80211_bss_conf *link,
|
||||
bool check_entry)
|
||||
{
|
||||
|
@ -669,6 +670,7 @@ iwl_mld_bt_allows_emlsr(struct iwl_mld *mld, struct ieee80211_bss_conf *link,
|
|||
link->link_id, bt_penalty);
|
||||
return bt_penalty < IWL_MLD_BT_COEX_WIFI_LOSS_THRESH;
|
||||
}
|
||||
EXPORT_SYMBOL_IF_IWLWIFI_KUNIT(iwl_mld_bt_allows_emlsr);
|
||||
|
||||
static u32
|
||||
iwl_mld_emlsr_disallowed_with_link(struct iwl_mld *mld,
|
||||
|
|
|
@ -161,6 +161,10 @@ struct iwl_mld_link_sel_data {
|
|||
u32 iwl_mld_emlsr_pair_state(struct ieee80211_vif *vif,
|
||||
struct iwl_mld_link_sel_data *a,
|
||||
struct iwl_mld_link_sel_data *b);
|
||||
|
||||
bool iwl_mld_bt_allows_emlsr(struct iwl_mld *mld,
|
||||
struct ieee80211_bss_conf *link,
|
||||
bool entry_criteria);
|
||||
#endif
|
||||
|
||||
#endif /* __iwl_mld_mlo_h__ */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
iwlmld-tests-y += module.o hcmd.o utils.o link.o rx.o agg.o link-selection.o
|
||||
iwlmld-tests-y += module.o hcmd.o utils.o link.o rx.o agg.o link-selection.o emlsr_with_bt.o
|
||||
|
||||
ccflags-y += -I$(src)/../
|
||||
obj-$(CONFIG_IWLWIFI_KUNIT_TESTS) += iwlmld-tests.o
|
||||
|
|
140
drivers/net/wireless/intel/iwlwifi/mld/tests/emlsr_with_bt.c
Normal file
140
drivers/net/wireless/intel/iwlwifi/mld/tests/emlsr_with_bt.c
Normal file
|
@ -0,0 +1,140 @@
|
|||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/*
|
||||
* KUnit tests for link selection functions
|
||||
*
|
||||
* Copyright (C) 2025 Intel Corporation
|
||||
*/
|
||||
#include <kunit/static_stub.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "mld.h"
|
||||
#include "mlo.h"
|
||||
|
||||
static const struct emlsr_with_bt_test_case {
|
||||
const char *desc;
|
||||
struct {
|
||||
struct iwl_bt_coex_profile_notif notif;
|
||||
s32 signal;
|
||||
bool check_entry;
|
||||
} input;
|
||||
bool emlsr_allowed;
|
||||
} emlsr_with_bt_cases[] = {
|
||||
{
|
||||
.desc = "BT penalty(exit) with low rssi 4.5: emlsr allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {4, 5},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {7, 9},
|
||||
.signal = -69,
|
||||
.check_entry = false,
|
||||
},
|
||||
.emlsr_allowed = true,
|
||||
},
|
||||
{
|
||||
.desc = "BT penalty(exit) from high rssi 5: emlsr allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {7, 9},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {5, 5},
|
||||
.signal = -68,
|
||||
.check_entry = false,
|
||||
},
|
||||
.emlsr_allowed = true,
|
||||
},
|
||||
{
|
||||
.desc = "BT penalty(exit) with low rssi 8: emlsr not allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {7, 9},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {4, 5},
|
||||
.signal = -69,
|
||||
.check_entry = false,
|
||||
},
|
||||
.emlsr_allowed = false,
|
||||
},
|
||||
{
|
||||
.desc = "BT penalty(exit) from high rssi 9: emlsr not allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {4, 5},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {9, 9},
|
||||
.signal = -68,
|
||||
.check_entry = false,
|
||||
},
|
||||
.emlsr_allowed = false,
|
||||
},
|
||||
{
|
||||
.desc = "BT penalty(entry) with low rssi 4.5: emlsr allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {4, 5},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {7, 9},
|
||||
.signal = -63,
|
||||
.check_entry = true,
|
||||
},
|
||||
.emlsr_allowed = true,
|
||||
},
|
||||
{
|
||||
.desc = "BT penalty(entry) from high rssi 5: emlsr allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {7, 9},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {5, 5},
|
||||
.signal = -62,
|
||||
.check_entry = false,
|
||||
},
|
||||
.emlsr_allowed = true,
|
||||
},
|
||||
{
|
||||
.desc = "BT penalty(entry) with low rssi 8: emlsr not allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {7, 9},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {4, 5},
|
||||
.signal = -63,
|
||||
.check_entry = false,
|
||||
},
|
||||
.emlsr_allowed = true,
|
||||
},
|
||||
{
|
||||
.desc = "BT penalty(entry) from high rssi 9: emlsr not allowed",
|
||||
.input = {
|
||||
.notif.wifi_loss_low_rssi[1] = {4, 5},
|
||||
.notif.wifi_loss_mid_high_rssi[1] = {9, 9},
|
||||
.signal = -62,
|
||||
.check_entry = true,
|
||||
},
|
||||
.emlsr_allowed = false,
|
||||
},
|
||||
};
|
||||
|
||||
KUNIT_ARRAY_PARAM_DESC(emlsr_with_bt, emlsr_with_bt_cases, desc);
|
||||
|
||||
static void test_emlsr_with_bt(struct kunit *test)
|
||||
{
|
||||
struct iwl_mld *mld = test->priv;
|
||||
const struct emlsr_with_bt_test_case *test_param =
|
||||
(const void *)(test->param_value);
|
||||
struct ieee80211_vif *vif =
|
||||
iwlmld_kunit_add_vif(true, NL80211_IFTYPE_STATION);
|
||||
struct ieee80211_bss_conf *link = iwlmld_kunit_add_link(vif, 1);
|
||||
bool actual_value = false;
|
||||
|
||||
KUNIT_ALLOC_AND_ASSERT(test, link->bss);
|
||||
|
||||
/* Extract test case parameters */
|
||||
link->bss->signal = DBM_TO_MBM(test_param->input.signal);
|
||||
memcpy(&mld->last_bt_notif, &test_param->input.notif,
|
||||
sizeof(struct iwl_bt_coex_profile_notif));
|
||||
|
||||
actual_value = iwl_mld_bt_allows_emlsr(mld, link,
|
||||
test_param->input.check_entry);
|
||||
/* Assert that the returned value matches the expected emlsr_allowed */
|
||||
KUNIT_EXPECT_EQ(test, actual_value, test_param->emlsr_allowed);
|
||||
}
|
||||
|
||||
static struct kunit_case emlsr_with_bt_test_cases[] = {
|
||||
KUNIT_CASE_PARAM(test_emlsr_with_bt, emlsr_with_bt_gen_params),
|
||||
{},
|
||||
};
|
||||
|
||||
static struct kunit_suite emlsr_with_bt = {
|
||||
.name = "iwlmld-emlsr-with-bt-tests",
|
||||
.test_cases = emlsr_with_bt_test_cases,
|
||||
.init = iwlmld_kunit_test_init,
|
||||
};
|
||||
|
||||
kunit_test_suite(emlsr_with_bt);
|
Loading…
Add table
Reference in a new issue