qcacld-3.0: Add new field for N-link MLO connection in wmi_service

Extends the wmi_service_ready_ext2_event_fixed_param
structure with a new field to support N-link MLO
connections.

The host will now calculate the maximum number of
links per MLD value by intersecting the firmware
capability and the ini value present in MLME component.
And this calculated value will be stored in the MLME
component.

Change-Id: I89bf3553781cd809cdb5496fbf0f68e59569033a
CRs-Fixed: 3512343
This commit is contained in:
Deeksha Gupta
2023-05-23 17:12:54 +05:30
committed by Rahul Choudhary
szülő cf1271629f
commit e6770d16fb
7 fájl változott, egészen pontosan 72 új sor hozzáadva és 0 régi sor törölve

7
Kbuild
Fájl megtekintése

@@ -4601,6 +4601,13 @@ CONFIG_WLAN_MAX_MLD ?= 1
endif endif
ccflags-y += -DWLAN_MAX_MLD=$(CONFIG_WLAN_MAX_MLD) ccflags-y += -DWLAN_MAX_MLD=$(CONFIG_WLAN_MAX_MLD)
ifdef CONFIG_WLAN_FEATURE_11BE_MLO
CONFIG_WLAN_MAX_ML_DEFAULT_LINK ?= 2
else
CONFIG_WLAN_MAX_ML_DEFAULT_LINK ?= 1
endif
ccflags-y += -DWLAN_MAX_ML_DEFAULT_LINK=$(CONFIG_WLAN_MAX_ML_DEFAULT_LINK)
#Maximum pending commands for a vdev is calculated in vdev create handler #Maximum pending commands for a vdev is calculated in vdev create handler
#by WLAN_SER_MAX_PENDING_CMDS/WLAN_SER_MAX_VDEVS. For SAP case, we will need #by WLAN_SER_MAX_PENDING_CMDS/WLAN_SER_MAX_VDEVS. For SAP case, we will need
#to accommodate 32 Pending commands to handle multiple STA sending #to accommodate 32 Pending commands to handle multiple STA sending

Fájl megtekintése

@@ -1140,6 +1140,16 @@ wlan_mlme_send_ch_width_update_with_notify(struct wlan_objmgr_psoc *psoc,
QDF_STATUS mlme_update_tgt_eht_caps_in_cfg(struct wlan_objmgr_psoc *psoc, QDF_STATUS mlme_update_tgt_eht_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
struct wma_tgt_cfg *cfg); struct wma_tgt_cfg *cfg);
/**
* mlme_update_tgt_mlo_caps_in_cfg() - Update tgt MLO cap in mlme component
* @psoc: pointer to psoc object
*
* This api to be used by callers to update MLO caps in mlme.
*
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
*/
QDF_STATUS mlme_update_tgt_mlo_caps_in_cfg(struct wlan_objmgr_psoc *psoc);
/** /**
* wlan_mlme_convert_eht_op_bw_to_phy_ch_width() - convert channel width in eht * wlan_mlme_convert_eht_op_bw_to_phy_ch_width() - convert channel width in eht
* operation IE to phy_ch_width * operation IE to phy_ch_width

Fájl megtekintése

@@ -3723,6 +3723,12 @@ ucfg_mlme_update_tgt_eht_cap(struct wlan_objmgr_psoc *psoc,
return mlme_update_tgt_eht_caps_in_cfg(psoc, cfg); return mlme_update_tgt_eht_caps_in_cfg(psoc, cfg);
} }
static inline QDF_STATUS
ucfg_mlme_update_tgt_mlo_cap(struct wlan_objmgr_psoc *psoc)
{
return mlme_update_tgt_mlo_caps_in_cfg(psoc);
}
/** /**
* ucfg_mlme_get_usr_disable_sta_eht() - Get user disable sta eht flag * ucfg_mlme_get_usr_disable_sta_eht() - Get user disable sta eht flag
* @psoc: psoc object * @psoc: psoc object
@@ -3749,6 +3755,12 @@ void ucfg_mlme_set_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc,
wlan_mlme_set_usr_disable_sta_eht(psoc, disable); wlan_mlme_set_usr_disable_sta_eht(psoc, disable);
} }
#else #else
static inline QDF_STATUS
ucfg_mlme_update_tgt_mlo_cap(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
static inline static inline
bool ucfg_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc) bool ucfg_mlme_get_usr_disable_sta_eht(struct wlan_objmgr_psoc *psoc)
{ {

Fájl megtekintése

@@ -1175,6 +1175,25 @@ QDF_STATUS mlme_update_tgt_eht_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
QDF_STATUS mlme_update_tgt_mlo_caps_in_cfg(struct wlan_objmgr_psoc *psoc)
{
struct target_psoc_info *tgt_hdl;
QDF_STATUS status;
uint16_t value;
tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
if (!tgt_hdl) {
mlme_debug("target psoc info is NULL");
return QDF_STATUS_E_FAILURE;
}
value = target_if_res_cfg_get_num_max_mlo_link(tgt_hdl);
status = wlan_mlme_set_sta_mlo_conn_max_num(psoc, value);
mlme_debug("Max ML link supported: %d", value);
return status;
}
enum phy_ch_width wlan_mlme_convert_eht_op_bw_to_phy_ch_width( enum phy_ch_width wlan_mlme_convert_eht_op_bw_to_phy_ch_width(
uint8_t channel_width) uint8_t channel_width)
{ {

Fájl megtekintése

@@ -2806,6 +2806,7 @@ int hdd_update_tgt_cfg(hdd_handle_t hdd_handle, struct wma_tgt_cfg *cfg)
hdd_update_tgt_twt_cap(hdd_ctx, cfg); hdd_update_tgt_twt_cap(hdd_ctx, cfg);
hdd_update_tgt_eht_cap(hdd_ctx, cfg); hdd_update_tgt_eht_cap(hdd_ctx, cfg);
hdd_update_wiphy_eht_cap(hdd_ctx); hdd_update_wiphy_eht_cap(hdd_ctx);
ucfg_mlme_update_tgt_mlo_cap(hdd_ctx->psoc);
for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++) { for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++) {
sme_modify_nss_chains_tgt_cfg(hdd_ctx->mac_handle, sme_modify_nss_chains_tgt_cfg(hdd_ctx->mac_handle,

Fájl megtekintése

@@ -42,6 +42,7 @@
* @en_tdls_11ax_support: Get TDLS ax support * @en_tdls_11ax_support: Get TDLS ax support
* @en_tdls_6g_support: Get TDLS 6g fw capability * @en_tdls_6g_support: Get TDLS 6g fw capability
* @en_tdls_mlo_support: Get TDLS mlo fw support * @en_tdls_mlo_support: Get TDLS mlo fw support
* @en_n_link_mlo_support: Get N-Link mlo fw support
* @en_roam_offload: enable roam offload * @en_roam_offload: enable roam offload
* @en_11ax: enable 11ax * @en_11ax: enable 11ax
* @is_fw_mawc_capable: Motion Aided Wireless Connectivity feature * @is_fw_mawc_capable: Motion Aided Wireless Connectivity feature
@@ -84,6 +85,7 @@ struct wma_tgt_services {
#endif #endif
#ifdef WLAN_FEATURE_11BE #ifdef WLAN_FEATURE_11BE
bool en_tdls_mlo_support; bool en_tdls_mlo_support;
bool en_n_link_mlo_support;
#endif #endif
#endif /* FEATURE_WLAN_TDLS */ #endif /* FEATURE_WLAN_TDLS */
#ifdef WLAN_FEATURE_ROAM_OFFLOAD #ifdef WLAN_FEATURE_ROAM_OFFLOAD

Fájl megtekintése

@@ -5115,12 +5115,27 @@ wma_get_tdls_mlo_support(struct wmi_unified *wmi_handle,
wmi_service_enabled(wmi_handle, wmi_service_enabled(wmi_handle,
wmi_service_tdls_mlo_support); wmi_service_tdls_mlo_support);
} }
static inline void
wma_get_n_link_mlo_support(struct wmi_unified *wmi_handle,
struct wma_tgt_services *cfg)
{
cfg->en_n_link_mlo_support =
wmi_service_enabled(wmi_handle,
wmi_service_n_link_mlo_support);
}
#else #else
static inline void static inline void
wma_get_tdls_mlo_support(struct wmi_unified *wmi_handle, wma_get_tdls_mlo_support(struct wmi_unified *wmi_handle,
struct wma_tgt_services *cfg) struct wma_tgt_services *cfg)
{ {
} }
static inline void
wma_get_n_link_mlo_support(struct wmi_unified *wmi_handle,
struct wma_tgt_services *cfg)
{
}
#endif /* WLAN_FEATURE_11BE */ #endif /* WLAN_FEATURE_11BE */
#ifdef WLAN_FEATURE_11AX #ifdef WLAN_FEATURE_11AX
@@ -5168,6 +5183,11 @@ wma_get_tdls_mlo_support(struct wmi_unified *wmi_handle,
{ {
} }
static inline void
wma_get_n_link_mlo_support(struct wmi_unified *wmi_handle,
struct wma_tgt_services *cfg)
{}
static inline void static inline void
wma_get_tdls_ax_support(struct wmi_unified *wmi_handle, wma_get_tdls_ax_support(struct wmi_unified *wmi_handle,
struct wma_tgt_services *cfg) struct wma_tgt_services *cfg)
@@ -5381,6 +5401,7 @@ static inline void wma_update_target_services(struct wmi_unified *wmi_handle,
wma_get_tdls_wideband_support(wmi_handle, cfg); wma_get_tdls_wideband_support(wmi_handle, cfg);
wma_get_dynamic_vdev_macaddr_support(wmi_handle, cfg); wma_get_dynamic_vdev_macaddr_support(wmi_handle, cfg);
wma_get_service_cap_per_link_mlo_stats(wmi_handle, cfg); wma_get_service_cap_per_link_mlo_stats(wmi_handle, cfg);
wma_get_n_link_mlo_support(wmi_handle, cfg);
} }
/** /**