qcacld-3.0: Add edca_pifs_param_ie in OTA frames for ll sap

For LL SAP, add edca_pifs_param vendor ie in assoc rsp, beacon
and probe rsp and send it to earbud via OTA frames.

Change-Id: I7641e8c98d57acf600fe2137a04b34625e29c3e0
CRs-Fixed: 3344888
此提交包含在:
Jyoti Kumari
2022-11-22 20:24:42 +05:30
提交者 Madan Koyyalamudi
父節點 af62331dd8
當前提交 e6921ffc40
共有 3 個檔案被更改,包括 56 行新增0 行删除

查看文件

@@ -1812,4 +1812,14 @@ void populate_dot11f_rnr_tbtt_info_7(struct mac_context *mac_ctx,
struct pe_session *rnr_session,
tDot11fIEreduced_neighbor_report *dot11f);
/**
* populate_dot11f_edca_pifs_param_set() - populate edca/pifs param ie
* @mac: Mac context
* @qcn_ie: pointer to tDot11fIEqcn_ie
*
* Return: none
*/
void populate_dot11f_edca_pifs_param_set(
struct mac_context *mac,
tDot11fIEqcn_ie *qcn_ie);
#endif /* __PARSE_H__ */

查看文件

@@ -1248,6 +1248,15 @@ void lim_update_probe_rsp_template_ie_bitmap_beacon2(struct mac_context *mac,
sizeof(beacon2->WMMCaps));
}
/* QCN IE - only for ll sap */
if (beacon2->qcn_ie.present) {
set_probe_rsp_ie_bitmap(DefProbeRspIeBitmap,
WLAN_ELEMID_VENDOR);
qdf_mem_copy((void *)&prb_rsp->qcn_ie,
(void *)&beacon2->qcn_ie,
sizeof(beacon2->qcn_ie));
}
/* Extended Capability */
if (beacon2->ExtCap.present) {
set_probe_rsp_ie_bitmap(DefProbeRspIeBitmap, DOT11F_EID_EXTCAP);

查看文件

@@ -1672,6 +1672,34 @@ void populate_dot11f_bss_max_idle(struct mac_context *mac,
}
}
void populate_dot11f_edca_pifs_param_set(struct mac_context *mac,
tDot11fIEqcn_ie *qcn_ie)
{
struct wlan_edca_pifs_param_ie param = {0};
struct edca_param *eparam;
struct pifs_param *pparam;
uint8_t edca_param_type;
qcn_ie->present = 1;
qcn_ie->edca_pifs_param_attr.present = 1;
edca_param_type = mac->mlme_cfg->edca_params.edca_param_type;
wlan_mlme_set_edca_pifs_param(&param, edca_param_type);
qcn_ie->edca_pifs_param_attr.edca_param_type = edca_param_type;
if (edca_param_type == HOST_EDCA_PARAM_TYPE_AGGRESSIVE) {
qcn_ie->edca_pifs_param_attr.num_data = sizeof(*eparam);
eparam = (struct edca_param *)qcn_ie->edca_pifs_param_attr.data;
qdf_mem_copy(eparam, &param.edca_pifs_param.eparam,
sizeof(*eparam));
} else if (edca_param_type == HOST_EDCA_PARAM_TYPE_PIFS) {
qcn_ie->edca_pifs_param_attr.num_data = sizeof(*pparam);
pparam = (struct pifs_param *)qcn_ie->edca_pifs_param_attr.data;
qdf_mem_copy(pparam, &param.edca_pifs_param.pparam,
sizeof(*pparam));
}
}
void populate_dot11f_qcn_ie(struct mac_context *mac,
struct pe_session *pe_session,
tDot11fIEqcn_ie *qcn_ie,
@@ -1693,6 +1721,15 @@ void populate_dot11f_qcn_ie(struct mac_context *mac,
}
populate_dot11f_qcn_ie_he_params(mac, pe_session, qcn_ie, attr_id);
if (policy_mgr_is_ll_sap_present(
mac->psoc,
policy_mgr_convert_device_mode_to_qdf_type(
pe_session->opmode), pe_session->vdev_id)) {
pe_debug("Populate edca/pifs param ie for ll sap");
populate_dot11f_edca_pifs_param_set(
mac,
qcn_ie);
}
}
QDF_STATUS