qcacmn: FW-Host Handshake for REG_CHAN_LIST_CC_EVENT

In order to support different power levels of 6G AP and client,
the channel list event from FW namely "REG_CHAN_LIST_CC_EVENTID"
is modified to add few parameters specific to 6GHZ devices.
Hence the existing event is replaced by REG_CHAN_LIST_CC_EVENT_EXT for
all 2G/5G/6G pdevs in FW. Therefore, after the service ready event, FW
sends the channel list for the configured country/regdomain via
REG_CHAN_LIST_CC_EVENT_EXT. This mandates that all host software need
to have the processing capability of REG_CHAN_LIST_CC_EVENT_EXT to bring
up the AP.

As there can be host software which has not yet implemented the
version of "REG_CHAN_LIST_CC_EVENT_EXT", backward compatibility is lost
if "ONLY REG_CHAN_LIST_CC_EVENT_EXT" is sent by FW.
Hence a 3 way handshake between host and FW is established.

1. FW advertises its capability of processing REG_CHAN_LIST_CC_EVENT_EXT
id via wmi service bit 'wmi_service_reg_cc_ext_event_support'.
2. If the host is capable of processing the "REG_CHAN_LIST_CC_EVENT_EXT"
event id (which is done based on registration of this event), host
sends the capability in WMI_INIT_CMDID setting a bit in host_service_flags.
3. Based on host capability advertised in WMI_INIT_CMDID, FW decides to
send the old event ("REG_CHAN_LIST_CC_EVENTID") or the new event
("REG_CHAN_LIST_CC_EVENT_EXT").
4. If there is no flag indicated by host to FW in WMI_INIT_CMDID, FW
by default sends the old event ("REG_CHAN_LIST_CC_EVENTID").

CRs-Fixed: 2876360
Change-Id: Ibe95f414ad9fff0e5641bcc6e60450ef9afe245b
This commit is contained in:
Priyadarshnee Srinivasan
2021-02-16 18:02:50 +05:30
committed by AnjaneeDevi Kapparapu
parent 7fe3773331
commit d617a3a77f
8 changed files with 89 additions and 2 deletions

View File

@@ -7339,6 +7339,10 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
if (tgt_res_cfg->is_go_connected_d3wow_enabled)
WMI_RSRC_CFG_FLAGS2_IS_GO_CONNECTED_D3WOW_ENABLED_SET(
resource_cfg->flags2, 1);
WMI_RSRC_CFG_HOST_SERVICE_FLAG_REG_CC_EXT_SUPPORT_SET(
resource_cfg->host_service_flags,
tgt_res_cfg->is_reg_cc_ext_event_supported);
}
/* copy_hw_mode_id_in_init_cmd() - Helper routine to copy hw_mode in init cmd
@@ -15762,6 +15766,8 @@ static void populate_tlv_service(uint32_t *wmi_service)
WMI_SERVICE_EXT_TPC_REG_SUPPORT;
wmi_service[wmi_service_ndi_txbf_support] =
WMI_SERVICE_NDI_TXBF_SUPPORT;
wmi_service[wmi_service_reg_cc_ext_event_support] =
WMI_SERVICE_REG_CC_EXT_EVENT_SUPPORT;
}
/**