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:

committed by
Rahul Choudhary

parent
e9e8c4d57c
commit
73be1b7d8d
@@ -2821,6 +2821,26 @@ QDF_STATUS
|
|||||||
wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t value);
|
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
|
* wlan_mlme_get_mlo_prefer_percentage() - get MLO preference percentage
|
||||||
* @psoc: pointer to psoc object
|
* @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;
|
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
|
static inline void
|
||||||
wlan_mlme_get_mlo_prefer_percentage(
|
wlan_mlme_get_mlo_prefer_percentage(
|
||||||
struct wlan_objmgr_psoc *psoc,
|
struct wlan_objmgr_psoc *psoc,
|
||||||
|
@@ -1458,6 +1458,7 @@ struct wlan_mlme_aux_dev_caps {
|
|||||||
* @eht_mode: EHT mode of operation
|
* @eht_mode: EHT mode of operation
|
||||||
* @t2lm_negotiation_support: T2LM negotiation supported enum value
|
* @t2lm_negotiation_support: T2LM negotiation supported enum value
|
||||||
* @enable_emlsr_mode: 11BE eMLSR mode support
|
* @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
|
* @safe_mode_enable: safe mode to bypass some strict 6 GHz checks for
|
||||||
* connection, bypass strict power levels
|
* connection, bypass strict power levels
|
||||||
* @sr_enable_modes: modes for which SR(Spatial Reuse) is enabled
|
* @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;
|
enum wlan_eht_mode eht_mode;
|
||||||
bool enable_emlsr_mode;
|
bool enable_emlsr_mode;
|
||||||
enum t2lm_negotiation_support t2lm_negotiation_support;
|
enum t2lm_negotiation_support t2lm_negotiation_support;
|
||||||
|
uint8_t mld_id;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WLAN_FEATURE_MCC_QUOTA
|
#ifdef WLAN_FEATURE_MCC_QUOTA
|
||||||
struct wlan_user_mcc_quota user_mcc_quota;
|
struct wlan_user_mcc_quota user_mcc_quota;
|
||||||
|
@@ -3905,6 +3905,33 @@ wlan_mlme_set_t2lm_negotiation_supported(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
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
|
#endif
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
|
@@ -8617,6 +8617,8 @@ wlan_hdd_wifi_test_config_policy[
|
|||||||
.type = NLA_U8},
|
.type = NLA_U8},
|
||||||
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_EHT_MLO_STR_TX] = {
|
[QCA_WLAN_VENDOR_ATTR_WIFI_TEST_CONFIG_EHT_MLO_STR_TX] = {
|
||||||
.type = NLA_U8},
|
.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,
|
mac_handle,
|
||||||
vdev_id, cfg_val);
|
vdev_id, cfg_val);
|
||||||
if (ret_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);
|
0x48, 2, arg);
|
||||||
|
|
||||||
if (ret_val)
|
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)
|
if (update_sme_cfg)
|
||||||
|
@@ -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_per_link_ba_mode(mac_handle, ba_mode_auto);
|
||||||
sme_set_mcs_15_tx_rx_disable(vdev_id);
|
sme_set_mcs_15_tx_rx_disable(vdev_id);
|
||||||
wlan_mlme_set_btm_abridge_flag(mac_ctx->psoc, false);
|
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,
|
void sme_update_eht_cap_nss(mac_handle_t mac_handle, uint8_t vdev_id,
|
||||||
|
Reference in New Issue
Block a user