qcacmn: Capability to configure bcast TWT responder or requestor
The bcast twt functionality may need to be enabled separately for requestor and responder roles. Enable such configuration by looking up WMI service bit support from target: wmi_service_twt_bcast_req_support wmi_service_twt_bcast_resp_support Change-Id: Ibc91173c23cf69f0d248af27d61c77bee3e8f48a CRs-Fixed: 2828720
This commit is contained in:
@@ -5319,6 +5319,8 @@ typedef enum {
|
||||
#endif
|
||||
wmi_service_scan_conf_per_ch_support,
|
||||
wmi_service_csa_beacon_template,
|
||||
wmi_service_twt_bcast_req_support,
|
||||
wmi_service_twt_bcast_resp_support,
|
||||
wmi_services_max,
|
||||
} wmi_conv_service_ids;
|
||||
#define WMI_SERVICE_UNAVAILABLE 0xFFFF
|
||||
|
@@ -23,6 +23,24 @@
|
||||
#ifndef _WMI_UNIFIED_TWT_PARAM_H_
|
||||
#define _WMI_UNIFIED_TWT_PARAM_H_
|
||||
|
||||
/* enum WMI_TWT_ROLE - role specified in ext conf in wmi_twt_enable/disable_cmd
|
||||
* WMI_TWT_ROLE_REQUESTOR: TWT role is requestor
|
||||
* WMI_TWT_ROLE_RESPONDER: TWT role is responder
|
||||
*/
|
||||
enum WMI_TWT_ROLE {
|
||||
WMI_TWT_ROLE_REQUESTOR,
|
||||
WMI_TWT_ROLE_RESPONDER,
|
||||
};
|
||||
|
||||
/* enum WMI_TWT_OPERATION - specified in ext conf in wmi_twt_enable/disable_cmd
|
||||
* WMI_TWT_OPERATION_INDIVIDUAL: Individual TWT operation
|
||||
* WMI_TWT_OPERATION_BROADCAST: Broadcast TWT operation
|
||||
*/
|
||||
enum WMI_TWT_OPERATION {
|
||||
WMI_TWT_OPERATION_INDIVIDUAL,
|
||||
WMI_TWT_OPERATION_BROADCAST,
|
||||
};
|
||||
|
||||
/**
|
||||
* @pdev_id: pdev_id for identifying the MAC.
|
||||
* @sta_cong_timer_ms: STA TWT congestion timer TO value in terms of ms
|
||||
@@ -62,6 +80,9 @@
|
||||
* TWT slots for STAs. (units = milliseconds)
|
||||
* @remove_sta_slot_interval: Inrerval between decisions making to remove TWT
|
||||
* slot of STAs. (units = milliseconds)
|
||||
* @twt_role: values from enum WMI_TWT_ROLE.
|
||||
* @twt_oper: values from enum WMI_TWT_OPERATION.
|
||||
* @ext_conf_present: If requestor/responder extend config is present.
|
||||
* @b_twt_enable: Enable or disable broadcast TWT.
|
||||
* @b_twt_legacy_mbss_enable: Enable or disable legacy MBSSID TWT.
|
||||
* @b_twt_ax_mbss_enable: Enable or disable 11AX MBSSID TWT.
|
||||
@@ -84,6 +105,9 @@ struct wmi_twt_enable_param {
|
||||
uint32_t mode_check_interval;
|
||||
uint32_t add_sta_slot_interval;
|
||||
uint32_t remove_sta_slot_interval;
|
||||
enum WMI_TWT_ROLE twt_role;
|
||||
enum WMI_TWT_OPERATION twt_oper;
|
||||
bool ext_conf_present;
|
||||
uint32_t b_twt_enable:1,
|
||||
b_twt_legacy_mbss_enable:1,
|
||||
b_twt_ax_mbss_enable:1;
|
||||
@@ -114,11 +138,18 @@ struct wmi_twt_enable_complete_event_param {
|
||||
uint32_t status;
|
||||
};
|
||||
|
||||
/** struct wmi_twt_disable_param:
|
||||
/**
|
||||
*struct wmi_twt_disable_param:
|
||||
* @pdev_id: pdev_id for identifying the MAC.
|
||||
* @ext_conf_present: If requestor/responder extend config is present.
|
||||
* @twt_role: values from enum WMI_TWT_ROLE.
|
||||
* @twt_oper: values from enum WMI_TWT_OPERATION.
|
||||
*/
|
||||
struct wmi_twt_disable_param {
|
||||
uint32_t pdev_id;
|
||||
bool ext_conf_present;
|
||||
enum WMI_TWT_ROLE twt_role;
|
||||
enum WMI_TWT_OPERATION twt_oper;
|
||||
};
|
||||
|
||||
/** struct wmi_twt_disable_complete_event:
|
||||
|
@@ -15255,7 +15255,12 @@ static void populate_tlv_service(uint32_t *wmi_service)
|
||||
WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL;
|
||||
wmi_service[wmi_service_csa_beacon_template] =
|
||||
WMI_SERVICE_CSA_BEACON_TEMPLATE;
|
||||
|
||||
#ifdef WLAN_SUPPORT_TWT
|
||||
wmi_service[wmi_service_twt_bcast_req_support] =
|
||||
WMI_SERVICE_BROADCAST_TWT_REQUESTER;
|
||||
wmi_service[wmi_service_twt_bcast_resp_support] =
|
||||
WMI_SERVICE_BROADCAST_TWT_RESPONDER;
|
||||
#endif
|
||||
wmi_populate_service_get_sta_in_ll_stats_req(wmi_service);
|
||||
}
|
||||
|
||||
|
@@ -68,6 +68,11 @@ static QDF_STATUS send_twt_enable_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
params->b_twt_legacy_mbss_enable);
|
||||
TWT_EN_DIS_FLAGS_SET_AX_MBSSID(cmd->flags,
|
||||
params->b_twt_ax_mbss_enable);
|
||||
if (params->ext_conf_present) {
|
||||
TWT_EN_DIS_FLAGS_SET_SPLIT_CONFIG(cmd->flags, 1);
|
||||
TWT_EN_DIS_FLAGS_SET_REQ_RESP(cmd->flags, params->twt_role);
|
||||
TWT_EN_DIS_FLAGS_SET_I_B_TWT(cmd->flags, params->twt_oper);
|
||||
}
|
||||
|
||||
status = wmi_unified_cmd_send(wmi_handle, buf, sizeof(*cmd),
|
||||
WMI_TWT_ENABLE_CMDID);
|
||||
@@ -103,6 +108,11 @@ static QDF_STATUS send_twt_disable_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
wmi_handle->ops->convert_pdev_id_host_to_target(
|
||||
wmi_handle,
|
||||
params->pdev_id);
|
||||
if (params->ext_conf_present) {
|
||||
TWT_EN_DIS_FLAGS_SET_SPLIT_CONFIG(cmd->flags, 1);
|
||||
TWT_EN_DIS_FLAGS_SET_REQ_RESP(cmd->flags, params->twt_role);
|
||||
TWT_EN_DIS_FLAGS_SET_I_B_TWT(cmd->flags, params->twt_oper);
|
||||
}
|
||||
|
||||
status = wmi_unified_cmd_send(wmi_handle, buf, sizeof(*cmd),
|
||||
WMI_TWT_DISABLE_CMDID);
|
||||
|
Reference in New Issue
Block a user