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:
Liangwei Dong
2020-02-13 16:28:53 +08:00
odevzdal nshrivas
rodič 1cfaf81095
revize c1aed9f593
3 změnil soubory, kde provedl 75 přidání a 3 odebrání

Zobrazit soubor

@@ -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)
{

Zobrazit soubor

@@ -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

Zobrazit soubor

@@ -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;