qcacld-3.0: Send HE 6GHZ band Capabilities IE to firmware
Send HE 6GHZ band Capabilities IE to firmware by WMI command. Firmware will add the IE to probe request during scan. Change-Id: I4a383a46206a50da244485f71e38ca8e4e847c10 CRs-Fixed: 2621402
Tento commit je obsažen v:
@@ -5756,6 +5756,9 @@ QDF_STATUS lim_send_ies_per_band(struct mac_context *mac_ctx,
|
||||
|
||||
status = lim_send_he_caps_ie(mac_ctx, session, vdev_id);
|
||||
|
||||
if (QDF_IS_STATUS_SUCCESS(status))
|
||||
status = lim_send_he_6g_band_caps_ie(mac_ctx, session, vdev_id);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -7478,6 +7481,47 @@ QDF_STATUS lim_populate_he_mcs_set(struct mac_context *mac_ctx,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BAND_6GHZ) && defined(WLAN_FEATURE_11AX)
|
||||
QDF_STATUS lim_send_he_6g_band_caps_ie(struct mac_context *mac_ctx,
|
||||
struct pe_session *session,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
uint8_t he_6g_band_caps_ie[DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN + 3];
|
||||
tDot11fIEhe_6ghz_band_cap he_6g_band_cap;
|
||||
QDF_STATUS status;
|
||||
uint32_t size = 0;
|
||||
uint32_t result;
|
||||
|
||||
qdf_mem_zero(&he_6g_band_cap, sizeof(he_6g_band_cap));
|
||||
populate_dot11f_he_6ghz_cap(mac_ctx, session, &he_6g_band_cap);
|
||||
if (!he_6g_band_cap.present) {
|
||||
pe_debug("no HE 6g band cap for vdev %d", vdev_id);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
qdf_mem_zero(he_6g_band_caps_ie, sizeof(he_6g_band_caps_ie));
|
||||
result = dot11f_pack_ie_he_6ghz_band_cap(mac_ctx, &he_6g_band_cap,
|
||||
he_6g_band_caps_ie,
|
||||
sizeof(he_6g_band_caps_ie),
|
||||
&size);
|
||||
if (result != DOT11F_PARSE_SUCCESS) {
|
||||
pe_err("pack erro for HE 6g band cap for vdev %d", vdev_id);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
pe_debug("send HE 6ghz band cap: 0x%01x 0x%01x for vdev %d",
|
||||
he_6g_band_caps_ie[3], he_6g_band_caps_ie[4],
|
||||
vdev_id);
|
||||
status = lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HE_6GHZ_BAND_CAP,
|
||||
CDS_BAND_5GHZ, &he_6g_band_caps_ie[2],
|
||||
DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN + 1);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
pe_err("Unable send HE 6g band Cap IE for 5GHZ band, status: %d",
|
||||
status);
|
||||
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
lim_assoc_rej_get_remaining_delta(struct sir_rssi_disallow_lst *node)
|
||||
{
|
||||
|
@@ -1551,6 +1551,30 @@ lim_update_he_6ghz_band_caps(struct mac_context *mac,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BAND_6GHZ) && defined(WLAN_FEATURE_11AX)
|
||||
/**
|
||||
* lim_send_he_6g_band_caps_ie() - Send HE 6ghz band caps to FW
|
||||
* @mac_ctx: Global MAC context
|
||||
* @session: session ptr
|
||||
* @vdev_id: vdev id
|
||||
*
|
||||
* Send HE 6ghz band capabilities IE to firmware
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success
|
||||
*/
|
||||
QDF_STATUS lim_send_he_6g_band_caps_ie(struct mac_context *mac_ctx,
|
||||
struct pe_session *session,
|
||||
uint8_t vdev_id);
|
||||
#else
|
||||
static inline
|
||||
QDF_STATUS lim_send_he_6g_band_caps_ie(struct mac_context *mac_ctx,
|
||||
struct pe_session *session,
|
||||
uint8_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* lim_decrement_pending_mgmt_count: Decrement mgmt frame count
|
||||
* @mac_ctx: Pointer to global MAC structure
|
||||
|
@@ -6177,7 +6177,7 @@ populate_dot11f_he_6ghz_cap(struct mac_context *mac_ctx,
|
||||
struct mlme_ht_capabilities_info *ht_cap_info;
|
||||
struct mlme_vht_capabilities_info *vht_cap_info;
|
||||
|
||||
if (!session || !session->he_6ghz_band)
|
||||
if (session && !session->he_6ghz_band)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
ht_cap_info = &mac_ctx->mlme_cfg->ht_caps.ht_cap_info;
|
||||
@@ -6186,8 +6186,12 @@ populate_dot11f_he_6ghz_cap(struct mac_context *mac_ctx,
|
||||
he_6g_cap->present = 1;
|
||||
he_6g_cap->min_mpdu_start_spacing =
|
||||
mac_ctx->mlme_cfg->ht_caps.ampdu_params.mpdu_density;
|
||||
he_6g_cap->max_ampdu_len_exp =
|
||||
session->vht_config.max_ampdu_lenexp;
|
||||
if (session)
|
||||
he_6g_cap->max_ampdu_len_exp =
|
||||
session->vht_config.max_ampdu_lenexp;
|
||||
else
|
||||
he_6g_cap->max_ampdu_len_exp =
|
||||
vht_cap_info->ampdu_len_exponent & 0x7;
|
||||
he_6g_cap->max_mpdu_len = vht_cap_info->ampdu_len;
|
||||
he_6g_cap->sm_pow_save = ht_cap_info->mimo_power_save;
|
||||
he_6g_cap->rd_responder = 0;
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele