qcacld-3.0: Move HE caps to vdev mlme priv

Move HE caps to vdev mlme priv and remove it from csr session.

Change-Id: I3f68aa66cfd1828dea4e46aff1dd758fbfde4a48
CRs-Fixed: 2809092
This commit is contained in:
gaurank kathpalia
2020-10-30 12:21:11 +05:30
committed by snandini
parent 0c8a806d02
commit 4cea7d089e
8 changed files with 119 additions and 159 deletions

View File

@@ -259,6 +259,8 @@ struct mscs_req_info {
* @opr_rate_set: operational rates set * @opr_rate_set: operational rates set
* @ext_opr_rate_set: extended operational rates set * @ext_opr_rate_set: extended operational rates set
* @mscs_req_info: Information related to mscs request * @mscs_req_info: Information related to mscs request
* @he_config: he config
* @he_sta_obsspd: he_sta_obsspd
*/ */
struct mlme_legacy_priv { struct mlme_legacy_priv {
bool chan_switch_in_progress; bool chan_switch_in_progress;
@@ -289,6 +291,10 @@ struct mlme_legacy_priv {
#ifdef WLAN_FEATURE_MSCS #ifdef WLAN_FEATURE_MSCS
struct mscs_req_info mscs_req_info; struct mscs_req_info mscs_req_info;
#endif #endif
#ifdef WLAN_FEATURE_11AX
tDot11fIEhe_cap he_config;
uint32_t he_sta_obsspd;
#endif
}; };

View File

@@ -634,9 +634,6 @@ struct start_bss_req {
tSirNwType nwType; /* Indicates 11a/b/g */ tSirNwType nwType; /* Indicates 11a/b/g */
tSirMacRateSet operationalRateSet; /* Has 11a or 11b rates */ tSirMacRateSet operationalRateSet; /* Has 11a or 11b rates */
tSirMacRateSet extendedRateSet; /* Has 11g rates */ tSirMacRateSet extendedRateSet; /* Has 11g rates */
#ifdef WLAN_FEATURE_11AX
tDot11fIEhe_cap he_config;
#endif
#ifdef WLAN_FEATURE_11W #ifdef WLAN_FEATURE_11W
bool pmfCapable; bool pmfCapable;
bool pmfRequired; bool pmfRequired;
@@ -955,9 +952,6 @@ struct join_req {
bool isFastRoamIniFeatureEnabled; bool isFastRoamIniFeatureEnabled;
uint8_t txLdpcIniFeatureEnabled; uint8_t txLdpcIniFeatureEnabled;
#ifdef WLAN_FEATURE_11AX
tDot11fIEhe_cap he_config;
#endif
uint8_t enableVhtpAid; uint8_t enableVhtpAid;
uint8_t enableVhtGid; uint8_t enableVhtGid;
uint8_t enableAmpduPs; uint8_t enableAmpduPs;

View File

@@ -774,7 +774,7 @@ __lim_handle_sme_start_bss_request(struct mac_context *mac_ctx, uint32_t *msg_bu
if (IS_DOT11_MODE_HE(session->dot11mode)) { if (IS_DOT11_MODE_HE(session->dot11mode)) {
lim_update_session_he_capable(mac_ctx, session); lim_update_session_he_capable(mac_ctx, session);
lim_copy_bss_he_cap(session, sme_start_bss_req); lim_copy_bss_he_cap(session);
} else if (wlan_reg_is_6ghz_chan_freq(session->curr_op_freq)) { } else if (wlan_reg_is_6ghz_chan_freq(session->curr_op_freq)) {
pe_err("Invalid oper_ch_freq %d for dot11mode %d", pe_err("Invalid oper_ch_freq %d for dot11mode %d",
session->curr_op_freq, session->dot11mode); session->curr_op_freq, session->dot11mode);
@@ -1818,7 +1818,7 @@ __lim_process_sme_join_req(struct mac_context *mac_ctx, void *msg_buf)
if (IS_DOT11_MODE_HE(session->dot11mode)) { if (IS_DOT11_MODE_HE(session->dot11mode)) {
lim_update_session_he_capable(mac_ctx, session); lim_update_session_he_capable(mac_ctx, session);
lim_copy_join_req_he_cap(session, sme_join_req); lim_copy_join_req_he_cap(session);
} }

View File

@@ -6998,17 +6998,59 @@ void lim_decide_he_op(struct mac_context *mac_ctx, uint32_t *mlme_he_ops,
wma_update_vdev_he_ops(mlme_he_ops, &he_ops); wma_update_vdev_he_ops(mlme_he_ops, &he_ops);
} }
void lim_copy_bss_he_cap(struct pe_session *session, static void
struct start_bss_req *sme_start_bss_req) lim_revise_req_he_cap_per_band(struct mlme_legacy_priv *mlme_priv,
struct pe_session *session)
{ {
qdf_mem_copy(&(session->he_config), &(sme_start_bss_req->he_config), struct mac_context *mac = session->mac_ctx;
tDot11fIEhe_cap *he_config;
he_config = &mlme_priv->he_config;
if (wlan_reg_is_24ghz_ch_freq(session->curr_op_freq)) {
he_config->bfee_sts_lt_80 =
mac->he_cap_2g.bfee_sts_lt_80;
} else {
he_config->bfee_sts_lt_80 =
mac->he_cap_5g.bfee_sts_lt_80;
he_config->num_sounding_lt_80 =
mac->he_cap_5g.num_sounding_lt_80;
if (he_config->chan_width_2 ||
he_config->chan_width_3) {
he_config->bfee_sts_gt_80 =
mac->he_cap_5g.bfee_sts_gt_80;
he_config->num_sounding_gt_80 =
mac->he_cap_5g.num_sounding_gt_80;
he_config->he_ppdu_20_in_160_80p80Mhz =
mac->he_cap_5g.he_ppdu_20_in_160_80p80Mhz;
he_config->he_ppdu_80_in_160_80p80Mhz =
mac->he_cap_5g.he_ppdu_80_in_160_80p80Mhz;
}
}
}
void lim_copy_bss_he_cap(struct pe_session *session)
{
struct mlme_legacy_priv *mlme_priv;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(session->vdev);
if (!mlme_priv)
return;
lim_revise_req_he_cap_per_band(mlme_priv, session);
qdf_mem_copy(&(session->he_config), &(mlme_priv->he_config),
sizeof(session->he_config)); sizeof(session->he_config));
} }
void lim_copy_join_req_he_cap(struct pe_session *session, void lim_copy_join_req_he_cap(struct pe_session *session)
struct join_req *sme_join_req)
{ {
qdf_mem_copy(&(session->he_config), &(sme_join_req->he_config), struct mlme_legacy_priv *mlme_priv;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(session->vdev);
if (!mlme_priv)
return;
if (!session->mac_ctx->usr_cfg_tx_bfee_nsts)
lim_revise_req_he_cap_per_band(mlme_priv, session);
qdf_mem_copy(&(session->he_config), &(mlme_priv->he_config),
sizeof(session->he_config)); sizeof(session->he_config));
} }

View File

@@ -1116,12 +1116,10 @@ void lim_add_bss_he_cfg(struct bss_params *add_bss, struct pe_session *session);
/** /**
* lim_copy_bss_he_cap() - Copy HE capability into PE session from start bss * lim_copy_bss_he_cap() - Copy HE capability into PE session from start bss
* @session: pointer to PE session * @session: pointer to PE session
* @sme_start_bss_req: pointer to start BSS request
* *
* Return: None * Return: None
*/ */
void lim_copy_bss_he_cap(struct pe_session *session, void lim_copy_bss_he_cap(struct pe_session *session);
struct start_bss_req *sme_start_bss_req);
/** /**
* lim_update_he_6gop_assoc_resp() - Update HE 6GHz op info to BSS params * lim_update_he_6gop_assoc_resp() - Update HE 6GHz op info to BSS params
@@ -1138,12 +1136,10 @@ void lim_update_he_6gop_assoc_resp(struct bss_params *pAddBssParams,
* lim_copy_join_req_he_cap() - Copy HE capability to PE session from Join req * lim_copy_join_req_he_cap() - Copy HE capability to PE session from Join req
* and update as per bandwidth supported * and update as per bandwidth supported
* @session: pointer to PE session * @session: pointer to PE session
* @sme_join_req: pointer to SME join request
* *
* Return: None * Return: None
*/ */
void lim_copy_join_req_he_cap(struct pe_session *session, void lim_copy_join_req_he_cap(struct pe_session *session);
struct join_req *sme_join_req);
/** /**
* lim_log_he_6g_cap() - Print HE 6G cap IE * lim_log_he_6g_cap() - Print HE 6G cap IE
@@ -1462,13 +1458,11 @@ static inline void lim_decide_he_op(struct mac_context *mac_ctx,
} }
static inline static inline
void lim_copy_bss_he_cap(struct pe_session *session, void lim_copy_bss_he_cap(struct pe_session *session)
struct start_bss_req *sme_start_bss_req)
{ {
} }
static inline void lim_copy_join_req_he_cap(struct pe_session *session, static inline void lim_copy_join_req_he_cap(struct pe_session *session)
struct join_req *sme_join_req)
{ {
} }

View File

@@ -593,10 +593,6 @@ struct csr_roam_session {
tCsrEseCckmIe suppCckmIeInfo; tCsrEseCckmIe suppCckmIeInfo;
#endif #endif
uint8_t bRefAssocStartCnt; /* Tracking assoc start indication */ uint8_t bRefAssocStartCnt; /* Tracking assoc start indication */
#ifdef WLAN_FEATURE_11AX
tDot11fIEhe_cap he_config;
uint32_t he_sta_obsspd;
#endif
#ifdef WLAN_FEATURE_ROAM_OFFLOAD #ifdef WLAN_FEATURE_ROAM_OFFLOAD
uint8_t psk_pmk[SIR_ROAM_SCAN_PSK_SIZE]; uint8_t psk_pmk[SIR_ROAM_SCAN_PSK_SIZE];
size_t pmk_len; size_t pmk_len;

View File

@@ -2373,95 +2373,38 @@ uint32_t csr_convert_phy_cb_state_to_ini_value(ePhyChanBondState phyCbState)
} }
#ifdef WLAN_FEATURE_11AX #ifdef WLAN_FEATURE_11AX
#define CSR_REVISE_REQ_HE_CAP_PER_BAND(_req, _pmac, _ch_freq) \
csr_revise_req_he_cap_per_band(&(_req)->he_config, _pmac, _ch_freq)
static void
csr_revise_req_he_cap_per_band(tDot11fIEhe_cap *he_config,
struct mac_context *mac,
uint32_t ch_freq)
{
if (wlan_reg_is_24ghz_ch_freq(ch_freq)) {
he_config->bfee_sts_lt_80 =
mac->he_cap_2g.bfee_sts_lt_80;
} else {
he_config->bfee_sts_lt_80 =
mac->he_cap_5g.bfee_sts_lt_80;
he_config->num_sounding_lt_80 =
mac->he_cap_5g.num_sounding_lt_80;
if (he_config->chan_width_2 ||
he_config->chan_width_3) {
he_config->bfee_sts_gt_80 =
mac->he_cap_5g.bfee_sts_gt_80;
he_config->num_sounding_gt_80 =
mac->he_cap_5g.num_sounding_gt_80;
he_config->he_ppdu_20_in_160_80p80Mhz =
mac->he_cap_5g.he_ppdu_20_in_160_80p80Mhz;
he_config->he_ppdu_80_in_160_80p80Mhz =
mac->he_cap_5g.he_ppdu_80_in_160_80p80Mhz;
}
}
}
/**
* csr_join_req_copy_he_cap() - Copy HE cap into CSR Join Req
* @csr_join_req: pointer to CSR Join Req
* @session: pointer to CSR session
*
* Return: None
*/
static void csr_join_req_copy_he_cap(struct join_req *csr_join_req,
struct csr_roam_session *session)
{
qdf_mem_copy(&csr_join_req->he_config, &session->he_config,
sizeof(session->he_config));
}
/**
* csr_start_bss_copy_he_cap() - Copy HE cap into CSR Join Req
* @req: pointer to START BSS Req
* @session: pointer to CSR session
*
* Return: None
*/
static void csr_start_bss_copy_he_cap(struct start_bss_req *req,
struct csr_roam_session *session)
{
qdf_mem_copy(&req->he_config, &session->he_config,
sizeof(session->he_config));
}
void csr_init_session_twt_cap(struct csr_roam_session *session,
uint32_t type_of_persona)
{
if (WMI_VDEV_TYPE_AP == type_of_persona) {
session->he_config.twt_request = 0;
} else if (WMI_VDEV_TYPE_STA == type_of_persona) {
session->he_config.twt_responder = 0;
}
}
void csr_update_session_he_cap(struct mac_context *mac_ctx, void csr_update_session_he_cap(struct mac_context *mac_ctx,
struct csr_roam_session *session) struct csr_roam_session *session)
{ {
enum QDF_OPMODE persona; enum QDF_OPMODE persona;
tDot11fIEhe_cap *he_cap = &session->he_config; tDot11fIEhe_cap *he_cap;
he_cap->present = true; struct wlan_objmgr_vdev *vdev;
struct mlme_legacy_priv *mlme_priv;
qdf_mem_copy(&session->he_config, vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc,
session->vdev_id,
WLAN_LEGACY_SME_ID);
if (!vdev)
return;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (!mlme_priv) {
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
return;
}
qdf_mem_copy(&mlme_priv->he_config,
&mac_ctx->mlme_cfg->he_caps.dot11_he_cap, &mac_ctx->mlme_cfg->he_caps.dot11_he_cap,
sizeof(session->he_config)); sizeof(mlme_priv->he_config));
he_cap = &mlme_priv->he_config;
he_cap->present = true;
/* /*
* Do not advertise requester role for SAP & responder role * Do not advertise requester role for SAP & responder role
* for STA * for STA
*/ */
persona = csr_get_session_persona(mac_ctx, session->sessionId); persona = wlan_vdev_mlme_get_opmode(vdev);
if (QDF_SAP_MODE == persona) { if (persona == QDF_SAP_MODE || persona == QDF_P2P_GO_MODE) {
session->he_config.twt_request = 0; he_cap->twt_request = 0;
} else if (QDF_STA_MODE == persona) { } else if (persona == QDF_STA_MODE || persona == QDF_P2P_CLIENT_MODE) {
session->he_config.twt_responder = 0; he_cap->twt_responder = 0;
} }
if (he_cap->ppet_present) { if (he_cap->ppet_present) {
@@ -2475,24 +2418,9 @@ void csr_update_session_he_cap(struct mac_context *mac_ctx,
} else { } else {
he_cap->ppet.ppe_threshold.num_ppe_th = 0; he_cap->ppet.ppe_threshold.num_ppe_th = 0;
} }
session->he_sta_obsspd = mac_ctx->mlme_cfg->he_caps.he_sta_obsspd; mlme_priv->he_sta_obsspd = mac_ctx->mlme_cfg->he_caps.he_sta_obsspd;
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
} }
#else
#define CSR_REVISE_REQ_HE_CAP_PER_BAND(_req, _pmac, _ch_freq) /* no op */
static inline
void csr_join_req_copy_he_cap(struct join_req *csr_join_req,
struct csr_roam_session *session)
{
}
static inline
void csr_start_bss_copy_he_cap(struct start_bss_req *req,
struct csr_roam_session *session)
{
}
#endif #endif
/** /**
@@ -14731,13 +14659,26 @@ static bool csr_enable_twt(struct mac_context *mac_ctx, tDot11fBeaconIEs *ie)
#ifdef WLAN_FEATURE_11AX #ifdef WLAN_FEATURE_11AX
static void static void
csr_update_he_caps_mcs(struct wlan_mlme_cfg *mlme_cfg, csr_update_he_caps_mcs(struct mac_context *mac
, struct wlan_mlme_cfg *mlme_cfg,
struct csr_roam_session *csr_session) struct csr_roam_session *csr_session)
{ {
uint32_t tx_mcs_map = 0; uint32_t tx_mcs_map = 0;
uint32_t rx_mcs_map = 0; uint32_t rx_mcs_map = 0;
uint32_t mcs_map = 0; uint32_t mcs_map = 0;
struct wlan_objmgr_vdev *vdev;
struct mlme_legacy_priv *mlme_priv;
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac->psoc,
csr_session->vdev_id,
WLAN_LEGACY_SME_ID);
if (!vdev)
return;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (!mlme_priv) {
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
return;
}
rx_mcs_map = mlme_cfg->he_caps.dot11_he_cap.rx_he_mcs_map_lt_80; rx_mcs_map = mlme_cfg->he_caps.dot11_he_cap.rx_he_mcs_map_lt_80;
tx_mcs_map = mlme_cfg->he_caps.dot11_he_cap.tx_he_mcs_map_lt_80; tx_mcs_map = mlme_cfg->he_caps.dot11_he_cap.tx_he_mcs_map_lt_80;
mcs_map = rx_mcs_map & 0x3; mcs_map = rx_mcs_map & 0x3;
@@ -14751,12 +14692,14 @@ csr_update_he_caps_mcs(struct wlan_mlme_cfg *mlme_cfg,
} }
sme_debug("new HE Nss MCS MAP: Rx 0x%0X, Tx: 0x%0X", sme_debug("new HE Nss MCS MAP: Rx 0x%0X, Tx: 0x%0X",
rx_mcs_map, tx_mcs_map); rx_mcs_map, tx_mcs_map);
csr_session->he_config.tx_he_mcs_map_lt_80 = tx_mcs_map; mlme_priv->he_config.tx_he_mcs_map_lt_80 = tx_mcs_map;
csr_session->he_config.rx_he_mcs_map_lt_80 = rx_mcs_map; mlme_priv->he_config.rx_he_mcs_map_lt_80 = rx_mcs_map;
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
} }
#else #else
static void static void
csr_update_he_caps_mcs(struct wlan_mlme_cfg *mlme_cfg, csr_update_he_caps_mcs(struct mac_context *mac,
struct wlan_mlme_cfg *mlme_cfg,
struct csr_roam_session *csr_session) struct csr_roam_session *csr_session)
{ {
} }
@@ -14809,15 +14752,27 @@ static void csr_handle_iot_ap_no_common_he_rates(struct mac_context *mac,
uint32_t *dot11mode) uint32_t *dot11mode)
{ {
uint16_t int_mcs; uint16_t int_mcs;
struct wlan_objmgr_vdev *vdev;
struct mlme_legacy_priv *mlme_priv;
/* if the connection is not 11AX mode then return */ /* if the connection is not 11AX mode then return */
if (*dot11mode != MLME_DOT11_MODE_11AX) if (*dot11mode != MLME_DOT11_MODE_11AX)
return; return;
int_mcs = HE_INTERSECT_MCS(session->he_config.tx_he_mcs_map_lt_80, vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac->psoc,
session->vdev_id,
WLAN_LEGACY_SME_ID);
if (!vdev)
return;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (!mlme_priv) {
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
return;
}
int_mcs = HE_INTERSECT_MCS(mlme_priv->he_config.tx_he_mcs_map_lt_80,
ies->he_cap.rx_he_mcs_map_lt_80); ies->he_cap.rx_he_mcs_map_lt_80);
sme_debug("HE self rates %x AP rates %x int_mcs %x vendorIE %d", sme_debug("HE self rates %x AP rates %x int_mcs %x vendorIE %d",
session->he_config.rx_he_mcs_map_lt_80, mlme_priv->he_config.rx_he_mcs_map_lt_80,
ies->he_cap.rx_he_mcs_map_lt_80, int_mcs, ies->he_cap.rx_he_mcs_map_lt_80, int_mcs,
ies->vendor_vht_ie.present); ies->vendor_vht_ie.present);
if (ies->he_cap.present) if (ies->he_cap.present)
@@ -14827,6 +14782,7 @@ static void csr_handle_iot_ap_no_common_he_rates(struct mac_context *mac,
*dot11mode = MLME_DOT11_MODE_11AC; *dot11mode = MLME_DOT11_MODE_11AC;
sme_debug("No common 11AX rate. Force 11AC connection"); sme_debug("No common 11AX rate. Force 11AC connection");
} }
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
} }
#else #else
static void csr_handle_iot_ap_no_common_he_rates(struct mac_context *mac, static void csr_handle_iot_ap_no_common_he_rates(struct mac_context *mac,
@@ -15145,7 +15101,7 @@ QDF_STATUS csr_send_join_req_msg(struct mac_context *mac, uint32_t sessionId,
mac->roam.configParam.is_force_1x1); mac->roam.configParam.is_force_1x1);
} }
csr_update_he_caps_mcs(mac->mlme_cfg, pSession); csr_update_he_caps_mcs(mac, mac->mlme_cfg, pSession);
/* /*
* If CCK WAR is set for current AP, update to firmware via * If CCK WAR is set for current AP, update to firmware via
* WMI_VDEV_PARAM_ABG_MODE_TX_CHAIN_NUM * WMI_VDEV_PARAM_ABG_MODE_TX_CHAIN_NUM
@@ -15578,14 +15534,6 @@ QDF_STATUS csr_send_join_req_msg(struct mac_context *mac, uint32_t sessionId,
(&pIes->Country.triplets[0])); (&pIes->Country.triplets[0]));
csr_apply_power2_current(mac); csr_apply_power2_current(mac);
} }
if (IS_DOT11_MODE_HE(csr_join_req->dot11mode)) {
csr_join_req_copy_he_cap(csr_join_req, pSession);
/* change the HE caps like sts per band */
if (!mac->usr_cfg_tx_bfee_nsts)
CSR_REVISE_REQ_HE_CAP_PER_BAND(csr_join_req,
mac,
bss_freq);
}
csr_join_req->enableVhtpAid = csr_join_req->enableVhtpAid =
mac->mlme_cfg->vht_caps.vht_cap_info.enable_paid; mac->mlme_cfg->vht_caps.vht_cap_info.enable_paid;
@@ -16161,13 +16109,6 @@ QDF_STATUS csr_send_mb_start_bss_req_msg(struct mac_context *mac, uint32_t
&pParam->extendedRateSet, &pParam->extendedRateSet,
sizeof(tSirMacRateSet)); sizeof(tSirMacRateSet));
if (IS_DOT11_MODE_HE(pMsg->dot11mode)) {
csr_start_bss_copy_he_cap(pMsg, pSession);
/* change the HE caps like sts per band */
CSR_REVISE_REQ_HE_CAP_PER_BAND(pMsg, mac,
pParam->operation_chan_freq);
}
pMsg->add_ie_params = pParam->add_ie_params; pMsg->add_ie_params = pParam->add_ie_params;
pMsg->obssEnabled = mac->roam.configParam.obssEnabled; pMsg->obssEnabled = mac->roam.configParam.obssEnabled;
pMsg->sap_dot11mc = pParam->sap_dot11mc; pMsg->sap_dot11mc = pParam->sap_dot11mc;
@@ -16457,12 +16398,6 @@ QDF_STATUS csr_setup_vdev_session(struct vdev_mlme_obj *vdev_mlme)
vdev_mlme->proto.vht_info.caps = vht_config.caps; vdev_mlme->proto.vht_info.caps = vht_config.caps;
csr_update_session_he_cap(mac_ctx, session); csr_update_session_he_cap(mac_ctx, session);
/*
* Do not advertise requester role for SAP & responder role
* for STA
*/
csr_init_session_twt_cap(session, vdev_mlme->mgmt.generic.type);
csr_send_set_ie(vdev_mlme->mgmt.generic.type, csr_send_set_ie(vdev_mlme->mgmt.generic.type,
vdev_mlme->mgmt.generic.subtype, vdev_mlme->mgmt.generic.subtype,
wlan_vdev_get_id(vdev)); wlan_vdev_get_id(vdev));

View File

@@ -1067,18 +1067,11 @@ bool csr_is_pmkid_found_for_peer(struct mac_context *mac,
#ifdef WLAN_FEATURE_11AX #ifdef WLAN_FEATURE_11AX
void csr_update_session_he_cap(struct mac_context *mac_ctx, void csr_update_session_he_cap(struct mac_context *mac_ctx,
struct csr_roam_session *session); struct csr_roam_session *session);
void csr_init_session_twt_cap(struct csr_roam_session *session,
uint32_t type_of_persona);
#else #else
static inline void csr_update_session_he_cap(struct mac_context *mac_ctx, static inline void csr_update_session_he_cap(struct mac_context *mac_ctx,
struct csr_roam_session *session) struct csr_roam_session *session)
{ {
} }
static inline void csr_init_session_twt_cap(struct csr_roam_session *session,
uint32_t type_of_persona)
{
}
#endif #endif
/** /**
* csr_get_channel_for_hw_mode_change() - This function to find * csr_get_channel_for_hw_mode_change() - This function to find