qcacmn: Converge on wmi service/ext service is enable
Converge on wmi service/ext service is enable Change-Id: Ib246befa72cce927bee157394cd22c7d1562d341 CRs-Fixed: 2152751
This commit is contained in:

committed by
snandini

parent
409c4cf989
commit
06490bebac
@@ -49,9 +49,6 @@
|
||||
#define TARGET_IF_ENTER() target_if_logfl(QDF_TRACE_LEVEL_INFO, "enter")
|
||||
#define TARGET_IF_EXIT() target_if_logfl(QDF_TRACE_LEVEL_INFO, "exit")
|
||||
|
||||
#define GET_WMI_HDL_FROM_PSOC(psoc) \
|
||||
(((struct target_psoc_info *)(psoc->tgt_if_handle))->wmi_handle)
|
||||
|
||||
#ifdef CONFIG_MCL
|
||||
#define GET_WMI_HDL_FROM_PDEV(pdev) \
|
||||
(((struct target_psoc_info *)(pdev->tgt_if_handle))->wmi_handle)
|
||||
@@ -174,6 +171,23 @@ QDF_STATUS target_if_register_legacy_service_ready_cb(
|
||||
|
||||
void *target_if_get_wmi_handle(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
static inline void *GET_WMI_HDL_FROM_PSOC(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
void *tgt_if_handle;
|
||||
|
||||
if (psoc) {
|
||||
tgt_if_handle = psoc->tgt_if_handle;
|
||||
|
||||
if (tgt_if_handle)
|
||||
return ((struct target_psoc_info *)
|
||||
tgt_if_handle)->wmi_handle;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* target_is_tgt_type_ar900b() - Check if the target type is AR900B
|
||||
* @target_type: target type to be checked.
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
@@ -30,29 +30,11 @@
|
||||
#include <target_if_reg.h>
|
||||
#include <wmi_unified_reg_api.h>
|
||||
|
||||
#ifdef CONFIG_MCL
|
||||
static bool tgt_if_regulatory_is_11d_offloaded(struct wlan_objmgr_psoc
|
||||
*psoc)
|
||||
static inline uint32_t get_chan_list_cc_event_id(void)
|
||||
{
|
||||
return WMI_SERVICE_IS_ENABLED(psoc->service_param.service_bitmap,
|
||||
WMI_SERVICE_11D_OFFLOAD);
|
||||
return wmi_reg_chan_list_cc_event_id;
|
||||
}
|
||||
|
||||
static bool tgt_if_regulatory_is_regdb_offloaded(struct wlan_objmgr_psoc
|
||||
*psoc)
|
||||
{
|
||||
return WMI_SERVICE_IS_ENABLED(psoc->service_param.service_bitmap,
|
||||
WMI_SERVICE_REGULATORY_DB);
|
||||
}
|
||||
|
||||
static bool tgt_if_regulatory_is_there_serv_ready_extn(struct wlan_objmgr_psoc
|
||||
*psoc)
|
||||
{
|
||||
return WMI_SERVICE_IS_ENABLED(psoc->service_param.service_bitmap,
|
||||
WMI_SERVICE_EXT_MSG);
|
||||
}
|
||||
|
||||
#else
|
||||
static bool tgt_if_regulatory_is_11d_offloaded(struct wlan_objmgr_psoc
|
||||
*psoc)
|
||||
{
|
||||
@@ -80,8 +62,6 @@ static bool tgt_if_regulatory_is_there_serv_ready_extn(struct wlan_objmgr_psoc
|
||||
wmi_service_ext_msg);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static inline struct wlan_lmac_if_reg_rx_ops *
|
||||
target_if_regulatory_get_rx_ops(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2018 The Linux Foundation. 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
|
||||
@@ -122,11 +122,12 @@ target_if_tdls_set_uapsd(struct wlan_objmgr_psoc *psoc,
|
||||
struct sta_uapsd_trig_params *params)
|
||||
{
|
||||
QDF_STATUS ret;
|
||||
wmi_unified_t wmi_handle = GET_WMI_HDL_FROM_PSOC(psoc);
|
||||
|
||||
if (!WMI_SERVICE_IS_ENABLED(psoc->service_param.service_bitmap,
|
||||
WMI_STA_UAPSD_BASIC_AUTO_TRIG) ||
|
||||
!WMI_SERVICE_IS_ENABLED(psoc->service_param.service_bitmap,
|
||||
WMI_STA_UAPSD_VAR_AUTO_TRIG)) {
|
||||
if (!wmi_service_enabled(wmi_handle,
|
||||
wmi_sta_uapsd_basic_auto_trig) ||
|
||||
!wmi_service_enabled(wmi_handle,
|
||||
wmi_sta_uapsd_var_auto_trig)) {
|
||||
target_if_debug("Trigger uapsd is not supported vdev id %d",
|
||||
params->vdevid);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
@@ -857,13 +857,10 @@ struct policy_mgr_dp_cbacks {
|
||||
* from policy manager
|
||||
* @wma_get_connection_info: Get the connection related info
|
||||
* from wma table
|
||||
* @wma_is_service_enabled: check if certain service is enabled
|
||||
* by FW
|
||||
*/
|
||||
struct policy_mgr_wma_cbacks {
|
||||
QDF_STATUS (*wma_get_connection_info)(uint8_t vdev_id,
|
||||
struct policy_mgr_vdev_entry_info *conn_table_entry);
|
||||
bool (*wma_is_service_enabled)(WMI_SERVICE service_type);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -33,7 +33,7 @@
|
||||
*/
|
||||
|
||||
/* Include files */
|
||||
|
||||
#include "target_if.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
#include "wlan_policy_mgr_i.h"
|
||||
#include "qdf_types.h"
|
||||
@@ -524,8 +524,10 @@ bool policy_mgr_is_hw_dbs_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
uint32_t param, i, found = 0;
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
void *wmi_handle;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
|
||||
if (!pm_ctx) {
|
||||
policy_mgr_err("Invalid Context");
|
||||
return false;
|
||||
@@ -535,19 +537,23 @@ bool policy_mgr_is_hw_dbs_capable(struct wlan_objmgr_psoc *psoc)
|
||||
policy_mgr_debug("DBS is disabled");
|
||||
return false;
|
||||
}
|
||||
if (pm_ctx->wma_cbacks.wma_is_service_enabled) {
|
||||
|
||||
wmi_handle = GET_WMI_HDL_FROM_PSOC(psoc);
|
||||
if (!wmi_handle) {
|
||||
policy_mgr_debug("Invalid WMA context");
|
||||
return false;
|
||||
}
|
||||
|
||||
policy_mgr_debug("DBS service bit map: %d",
|
||||
pm_ctx->wma_cbacks.wma_is_service_enabled(
|
||||
WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT));
|
||||
wmi_service_enabled(wmi_handle,
|
||||
wmi_service_dual_band_simultaneous_support));
|
||||
|
||||
/* The agreement with FW is that: To know if the target is DBS
|
||||
* capable, DBS needs to be supported both in the HW mode list
|
||||
* and in the service ready event
|
||||
*/
|
||||
if (!(pm_ctx->wma_cbacks.wma_is_service_enabled(
|
||||
WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT)))
|
||||
return false;
|
||||
} else
|
||||
if (!(wmi_service_enabled(wmi_handle,
|
||||
wmi_service_dual_band_simultaneous_support)))
|
||||
return false;
|
||||
|
||||
for (i = 0; i < pm_ctx->num_dbs_hw_modes; i++) {
|
||||
@@ -570,25 +576,26 @@ bool policy_mgr_is_hw_sbs_capable(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
uint32_t param, i, found = 0;
|
||||
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
||||
void *wmi_handle;
|
||||
|
||||
pm_ctx = policy_mgr_get_context(psoc);
|
||||
if (!pm_ctx) {
|
||||
policy_mgr_err("Invalid Context");
|
||||
return false;
|
||||
}
|
||||
if (pm_ctx->wma_cbacks.wma_is_service_enabled) {
|
||||
|
||||
wmi_handle = GET_WMI_HDL_FROM_PSOC(psoc);
|
||||
|
||||
policy_mgr_debug("DBS service bit map: %d",
|
||||
pm_ctx->wma_cbacks.wma_is_service_enabled(
|
||||
WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT));
|
||||
wmi_service_enabled(wmi_handle,
|
||||
wmi_service_dual_band_simultaneous_support));
|
||||
|
||||
/* The agreement with FW is that: To know if the target is SBS
|
||||
* capable, SBS needs to be supported both in the HW mode list
|
||||
* and DBS needs to be supported in the service ready event
|
||||
*/
|
||||
if (!(pm_ctx->wma_cbacks.wma_is_service_enabled(
|
||||
WMI_SERVICE_DUAL_BAND_SIMULTANEOUS_SUPPORT)))
|
||||
return false;
|
||||
} else
|
||||
if (!(wmi_service_enabled(wmi_handle,
|
||||
wmi_service_dual_band_simultaneous_support)))
|
||||
return false;
|
||||
|
||||
for (i = 0; i < pm_ctx->num_dbs_hw_modes; i++) {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
@@ -610,8 +610,6 @@ QDF_STATUS policy_mgr_register_wma_cb(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
pm_ctx->wma_cbacks.wma_get_connection_info =
|
||||
wma_cbacks->wma_get_connection_info;
|
||||
pm_ctx->wma_cbacks.wma_is_service_enabled =
|
||||
wma_cbacks->wma_is_service_enabled;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -6108,6 +6108,10 @@ typedef enum {
|
||||
wmi_service_bcn_offload_start_stop_support,
|
||||
wmi_service_offchan_data_tid_support,
|
||||
wmi_service_support_dma,
|
||||
wmi_service_8ss_tx_bfee,
|
||||
wmi_service_fils_support,
|
||||
wmi_service_mawc_support,
|
||||
wmi_service_wow_wakeup_by_timer_pattern,
|
||||
|
||||
wmi_services_max,
|
||||
} wmi_conv_service_ids;
|
||||
|
@@ -1595,8 +1595,8 @@ struct wmi_unified {
|
||||
#ifndef CONFIG_MCL
|
||||
uint32_t *pdev_param;
|
||||
uint32_t *vdev_param;
|
||||
uint32_t *services;
|
||||
#endif
|
||||
uint32_t *services;
|
||||
struct wmi_soc *soc;
|
||||
};
|
||||
|
||||
@@ -1623,8 +1623,9 @@ struct wmi_soc {
|
||||
#ifndef CONFIG_MCL
|
||||
uint32_t pdev_param[wmi_pdev_param_max];
|
||||
uint32_t vdev_param[wmi_vdev_param_max];
|
||||
uint32_t services[wmi_services_max];
|
||||
#endif
|
||||
uint32_t services[wmi_services_max];
|
||||
|
||||
};
|
||||
|
||||
#ifdef WMI_NON_TLV_SUPPORT
|
||||
|
@@ -2034,7 +2034,6 @@ static inline void wmi_target_params_init(struct wmi_soc *soc,
|
||||
{
|
||||
wmi_handle->pdev_param = soc->pdev_param;
|
||||
wmi_handle->vdev_param = soc->vdev_param;
|
||||
wmi_handle->services = soc->services;
|
||||
}
|
||||
#else
|
||||
static inline void wmi_target_params_init(struct wmi_soc *soc,
|
||||
@@ -2148,6 +2147,7 @@ void *wmi_unified_attach(void *scn_handle,
|
||||
wmi_handle->ctx = soc->ctx;
|
||||
wmi_handle->wmi_events = soc->wmi_events;
|
||||
wmi_target_params_init(soc, wmi_handle);
|
||||
wmi_handle->services = soc->services;
|
||||
wmi_handle->scn_handle = scn_handle;
|
||||
soc->scn_handle = scn_handle;
|
||||
qdf_atomic_init(&wmi_handle->pending_cmds);
|
||||
|
@@ -4649,7 +4649,6 @@ QDF_STATUS wmi_check_and_update_fw_version(void *wmi_hdl, void *evt_buf)
|
||||
*
|
||||
* Return: 1 enabled, 0 disabled
|
||||
*/
|
||||
#ifndef CONFIG_MCL
|
||||
bool wmi_service_enabled(void *wmi_hdl, uint32_t service_id)
|
||||
{
|
||||
wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
|
||||
@@ -4663,9 +4662,9 @@ bool wmi_service_enabled(void *wmi_hdl, uint32_t service_id)
|
||||
} else {
|
||||
qdf_print("Support not added yet for Service %d\n", service_id);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wmi_get_target_cap_from_service_ready() - extract service ready event
|
||||
|
@@ -17598,7 +17598,6 @@ QDF_STATUS save_ext_service_bitmap_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
||||
*
|
||||
* Return: 1 enabled, 0 disabled
|
||||
*/
|
||||
#ifndef CONFIG_MCL
|
||||
static bool is_service_enabled_tlv(wmi_unified_t wmi_handle,
|
||||
uint32_t service_id)
|
||||
{
|
||||
@@ -17609,8 +17608,8 @@ static bool is_service_enabled_tlv(wmi_unified_t wmi_handle,
|
||||
return false;
|
||||
}
|
||||
|
||||
/* if WMI_EXTENDED_SERVICE_AVAILABLE was received with extended bitmap,
|
||||
* use WMI_SERVICE_EXT_ENABLE to check the services.
|
||||
/* if wmi_service_enabled was received with extended bitmap,
|
||||
* use WMI_SERVICE_EXT_IS_ENABLED to check the services.
|
||||
*/
|
||||
if (soc->wmi_ext_service_bitmap)
|
||||
return WMI_SERVICE_EXT_IS_ENABLED(soc->wmi_service_bitmap,
|
||||
@@ -17620,13 +17619,6 @@ static bool is_service_enabled_tlv(wmi_unified_t wmi_handle,
|
||||
return WMI_SERVICE_IS_ENABLED(soc->wmi_service_bitmap,
|
||||
service_id);
|
||||
}
|
||||
#else
|
||||
static bool is_service_enabled_tlv(wmi_unified_t wmi_handle,
|
||||
uint32_t service_id)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void copy_ht_cap_info(uint32_t ev_target_cap,
|
||||
struct wlan_psoc_target_capability_info *cap)
|
||||
@@ -22050,7 +22042,6 @@ static void populate_tlv_events_id(uint32_t *event_ids)
|
||||
event_ids[wmi_sar_get_limits_event_id] = WMI_SAR_GET_LIMITS_EVENTID;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_MCL
|
||||
/**
|
||||
* populate_tlv_service() - populates wmi services
|
||||
*
|
||||
@@ -22248,8 +22239,14 @@ static void populate_tlv_service(uint32_t *wmi_service)
|
||||
WMI_SERVICE_OFFCHAN_DATA_TID_SUPPORT;
|
||||
wmi_service[wmi_service_support_dma] =
|
||||
WMI_SERVICE_SUPPORT_DIRECT_DMA;
|
||||
wmi_service[wmi_service_8ss_tx_bfee] = WMI_SERVICE_8SS_TX_BFEE;
|
||||
wmi_service[wmi_service_fils_support] = WMI_SERVICE_FILS_SUPPORT;
|
||||
wmi_service[wmi_service_mawc_support] = WMI_SERVICE_MAWC_SUPPORT;
|
||||
|
||||
}
|
||||
|
||||
#ifndef CONFIG_MCL
|
||||
|
||||
/**
|
||||
* populate_pdev_param_tlv() - populates pdev params
|
||||
*
|
||||
@@ -22664,7 +22661,6 @@ static void populate_vdev_param_tlv(uint32_t *vdev_param)
|
||||
#ifndef CONFIG_MCL
|
||||
static void populate_target_defines_tlv(struct wmi_unified *wmi_handle)
|
||||
{
|
||||
populate_tlv_service(wmi_handle->services);
|
||||
populate_pdev_param_tlv(wmi_handle->pdev_param);
|
||||
populate_vdev_param_tlv(wmi_handle->vdev_param);
|
||||
}
|
||||
@@ -22748,5 +22744,6 @@ void wmi_tlv_attach(wmi_unified_t wmi_handle)
|
||||
wmi_handle->log_info.buf_offset_event = 4;
|
||||
#endif
|
||||
populate_tlv_events_id(wmi_handle->wmi_events);
|
||||
populate_tlv_service(wmi_handle->services);
|
||||
populate_target_defines_tlv(wmi_handle);
|
||||
}
|
||||
|
Reference in New Issue
Block a user