qcacld-3.0: Add support to configure MLD ID in scan request

In the MLO-MBSSID test, STA can request information of
non-Tx BSS through Tx BSS by configuring non-Tx BSS MLD ID
within the ML probe request that is invoked as part of scan
request. Add support to configure MLD ID in scan start
params to FW.

Change-Id: Iec5a144e597a7f6b9b741f279e4424f975c5115c
CRs-Fixed: 3561040
This commit is contained in:
Gururaj Pandurangi
2023-07-31 19:02:21 -07:00
committed by Rahul Choudhary
parent e9e8c4d57c
commit 73be1b7d8d
5 changed files with 75 additions and 2 deletions

View File

@@ -2821,6 +2821,26 @@ QDF_STATUS
wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
uint8_t value);
/**
* wlan_mlme_get_eht_mld_id() - Get the MLD ID of the requested BSS
* @psoc: psoc context
*
* Return: MLD ID of the requested BSS
*/
uint8_t
wlan_mlme_get_eht_mld_id(struct wlan_objmgr_psoc *psoc);
/**
* wlan_mlme_set_eht_mld_id() - Set MLD ID of the requested BSS information
* within the ML probe request.
* @psoc: psoc context
* @value: MLD ID
*
* Return: qdf status
*/
QDF_STATUS
wlan_mlme_set_eht_mld_id(struct wlan_objmgr_psoc *psoc, uint8_t value);
/*
* wlan_mlme_get_mlo_prefer_percentage() - get MLO preference percentage
* @psoc: pointer to psoc object
@@ -2888,6 +2908,18 @@ wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_NOSUPPORT;
}
static inline uint8_t
wlan_mlme_get_eht_mld_id(struct wlan_objmgr_psoc *psoc)
{
return 0;
}
static inline QDF_STATUS
wlan_mlme_set_eht_mld_id(struct wlan_objmgr_psoc *psoc, uint8_t value)
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline void
wlan_mlme_get_mlo_prefer_percentage(
struct wlan_objmgr_psoc *psoc,

View File

@@ -1458,6 +1458,7 @@ struct wlan_mlme_aux_dev_caps {
* @eht_mode: EHT mode of operation
* @t2lm_negotiation_support: T2LM negotiation supported enum value
* @enable_emlsr_mode: 11BE eMLSR mode support
* @mld_id: MLD ID of requested BSS within ML probe request frame
* @safe_mode_enable: safe mode to bypass some strict 6 GHz checks for
* connection, bypass strict power levels
* @sr_enable_modes: modes for which SR(Spatial Reuse) is enabled
@@ -1518,6 +1519,7 @@ struct wlan_mlme_generic {
enum wlan_eht_mode eht_mode;
bool enable_emlsr_mode;
enum t2lm_negotiation_support t2lm_negotiation_support;
uint8_t mld_id;
#endif
#ifdef WLAN_FEATURE_MCC_QUOTA
struct wlan_user_mcc_quota user_mcc_quota;

View File

@@ -3905,6 +3905,33 @@ wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
uint8_t
wlan_mlme_get_eht_mld_id(struct wlan_objmgr_psoc *psoc)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return 0;
return mlme_obj->cfg.gen.mld_id;
}
QDF_STATUS
wlan_mlme_set_eht_mld_id(struct wlan_objmgr_psoc *psoc,
uint8_t value)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return QDF_STATUS_E_FAILURE;
mlme_obj->cfg.gen.mld_id = value;
return QDF_STATUS_SUCCESS;
}
#endif
QDF_STATUS

View File

@@ -8617,6 +8617,8 @@ wlan_hdd_wifi_test_config_policy[
.type = NLA_U8},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_EHT_MLO_STR_TX] = {
.type = NLA_U8},
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_MLD_ID_ML_PROBE_REQ] = {
.type = NLA_U8},
};
/**
@@ -14249,7 +14251,7 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
mac_handle,
vdev_id, cfg_val);
if (ret_val)
sme_err("Failed to send vdev pause");
hdd_err("Failed to send vdev pause");
}
}
}
@@ -14266,7 +14268,16 @@ __wlan_hdd_cfg80211_set_wifi_test_config(struct wiphy *wiphy,
0x48, 2, arg);
if (ret_val)
sme_err("Failed to send STR TX indication");
hdd_err("Failed to send STR TX indication");
}
cmd_id = QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_MLD_ID_ML_PROBE_REQ;
if (tb[cmd_id]) {
cfg_val = nla_get_u8(tb[cmd_id]);
hdd_debug("MLD ID in ML probe request: %d", cfg_val);
ret_val = wlan_mlme_set_eht_mld_id(hdd_ctx->psoc, cfg_val);
if (ret_val)
hdd_err("Failed to set MLD ID");
}
if (update_sme_cfg)

View File

@@ -15331,6 +15331,7 @@ void sme_reset_eht_caps(mac_handle_t mac_handle, uint8_t vdev_id)
sme_set_per_link_ba_mode(mac_handle, ba_mode_auto);
sme_set_mcs_15_tx_rx_disable(vdev_id);
wlan_mlme_set_btm_abridge_flag(mac_ctx->psoc, false);
wlan_mlme_set_eht_mld_id(mac_ctx->psoc, 0);
}
void sme_update_eht_cap_nss(mac_handle_t mac_handle, uint8_t vdev_id,