diff --git a/drivers/staging/qca-wifi-host-cmn/os_if/linux/qca_vendor.h b/drivers/staging/qca-wifi-host-cmn/os_if/linux/qca_vendor.h index 4ae5a99fb940..d8dabea395a2 100644 --- a/drivers/staging/qca-wifi-host-cmn/os_if/linux/qca_vendor.h +++ b/drivers/staging/qca-wifi-host-cmn/os_if/linux/qca_vendor.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -4826,6 +4826,17 @@ enum qca_wlan_vendor_attr_config { * this attribute are 1-Enable and 0-Disable. */ QCA_WLAN_VENDOR_ATTR_CONFIG_FT_OVER_DS = 80, + + /* 8-bit unsigned value, whenever wifi calling (wfc) begin or end, + * Userspace sends this information to driver/firmware to configure + * wfc state. Driver/Firmware uses this information to + * optimize power savings, rate adaption, roaming, etc. + * + * 1 - wfc is on. + * 0 - wfc is off. + */ + QCA_WLAN_VENDOR_ATTR_CONFIG_WFC_STATE = 86, + /* keep last */ QCA_WLAN_VENDOR_ATTR_CONFIG_AFTER_LAST, QCA_WLAN_VENDOR_ATTR_CONFIG_MAX = diff --git a/drivers/staging/qca-wifi-host-cmn/target_if/init_deinit/src/init_event_handler.c b/drivers/staging/qca-wifi-host-cmn/target_if/init_deinit/src/init_event_handler.c index 3b18e3d71bee..237d052d70d5 100644 --- a/drivers/staging/qca-wifi-host-cmn/target_if/init_deinit/src/init_event_handler.c +++ b/drivers/staging/qca-wifi-host-cmn/target_if/init_deinit/src/init_event_handler.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -43,6 +43,24 @@ static void init_deinit_set_send_init_cmd(struct wlan_objmgr_psoc *psoc, init_deinit_prepare_send_init_cmd(psoc, tgt_hdl); } +#ifdef WLAN_FEATURE_P2P_P2P_STA +static void +init_deinit_update_p2p_p2p_conc_support(struct wmi_unified *wmi_handle, + struct wlan_objmgr_psoc *psoc) +{ + if (wmi_service_enabled(wmi_handle, wmi_service_p2p_p2p_cc_support)) + wlan_psoc_nif_fw_ext_cap_set(psoc, + WLAN_SOC_EXT_P2P_P2P_CONC_SUPPORT); + else + target_if_debug("P2P + P2P conc disabled"); +} +#else +static inline void +init_deinit_update_p2p_p2p_conc_support(struct wmi_unified *wmi_handle, + struct wlan_objmgr_psoc *psoc) +{} +#endif + static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle, uint8_t *event, uint32_t data_len) @@ -211,6 +229,7 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle, WLAN_SOC_CEXT_WMI_MGMT_REF); target_if_debug("WMI mgmt service disabled"); } + init_deinit_update_p2p_p2p_conc_support(wmi_handle, psoc); err_code = init_deinit_handle_host_mem_req(psoc, tgt_hdl, event); if (err_code != QDF_STATUS_SUCCESS) diff --git a/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/inc/target_if_reg_11d.h b/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/inc/target_if_reg_11d.h index c69962ffcd2e..ca7fc41af146 100644 --- a/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/inc/target_if_reg_11d.h +++ b/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/inc/target_if_reg_11d.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2017-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * * Permission to use, copy, modify, and/or distribute this software for @@ -32,7 +33,7 @@ #include "wmi_unified_api.h" #include "wmi_unified_reg_api.h" -#ifdef HOST_11D_SCAN +#ifdef TARGET_11D_SCAN /** * tgt_if_regulatory_is_11d_offloaded() - Check if reg 11d is offloaded. * @psoc: psoc pointer diff --git a/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/src/target_if_reg_11d.c b/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/src/target_if_reg_11d.c index 3d7c3d886baf..63e0a4985518 100644 --- a/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/src/target_if_reg_11d.c +++ b/drivers/staging/qca-wifi-host-cmn/target_if/regulatory/src/target_if_reg_11d.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * * Permission to use, copy, modify, and/or distribute this software for @@ -24,7 +25,7 @@ #include "target_if_reg_11d.h" -#ifdef HOST_11D_SCAN +#ifdef TARGET_11D_SCAN bool tgt_if_regulatory_is_11d_offloaded(struct wlan_objmgr_psoc *psoc) { wmi_unified_t wmi_handle = get_wmi_unified_hdl_from_psoc(psoc); diff --git a/drivers/staging/qca-wifi-host-cmn/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h b/drivers/staging/qca-wifi-host-cmn/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h index b9354044764a..cc7fe4cec93b 100644 --- a/drivers/staging/qca-wifi-host-cmn/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h +++ b/drivers/staging/qca-wifi-host-cmn/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -152,6 +152,8 @@ /* check 31st bit for per channel pno scan config flags support */ #define WLAN_SOC_PNO_SCAN_CONFIG_PER_CHANNEL 0x40000000 + /* check 29th bit for p2p + p2p conc support by fw */ +#define WLAN_SOC_EXT_P2P_P2P_CONC_SUPPORT 0x20000000 /* feature_flags */ /* CONF: ATH FF enabled */ diff --git a/drivers/staging/qca-wifi-host-cmn/wmi/inc/wmi_unified_param.h b/drivers/staging/qca-wifi-host-cmn/wmi/inc/wmi_unified_param.h index fef218d11b82..d5a8eeaae12b 100644 --- a/drivers/staging/qca-wifi-host-cmn/wmi/inc/wmi_unified_param.h +++ b/drivers/staging/qca-wifi-host-cmn/wmi/inc/wmi_unified_param.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved. - * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -5276,6 +5276,9 @@ typedef enum { wmi_service_thermal_stats_temp_range_supported, #endif wmi_service_pno_scan_conf_per_ch_support, +#ifdef WLAN_FEATURE_P2P_P2P_STA + wmi_service_p2p_p2p_cc_support, +#endif wmi_services_max, } wmi_conv_service_ids; #define WMI_SERVICE_UNAVAILABLE 0xFFFF diff --git a/drivers/staging/qca-wifi-host-cmn/wmi/src/wmi_unified_tlv.c b/drivers/staging/qca-wifi-host-cmn/wmi/src/wmi_unified_tlv.c index 87970b76af27..3819c3ba6454 100644 --- a/drivers/staging/qca-wifi-host-cmn/wmi/src/wmi_unified_tlv.c +++ b/drivers/staging/qca-wifi-host-cmn/wmi/src/wmi_unified_tlv.c @@ -15963,6 +15963,10 @@ static void populate_tlv_service(uint32_t *wmi_service) #endif wmi_service[wmi_service_pno_scan_conf_per_ch_support] = WMI_SERVICE_PNO_SCAN_CONFIG_PER_CHANNEL; +#ifdef WLAN_FEATURE_P2P_P2P_STA + wmi_service[wmi_service_p2p_p2p_cc_support] = + WMI_SERVICE_P2P_P2P_CONCURRENCY_SUPPORT; +#endif } /**