qcacmn: Add changes for coexistence of WIN/ MCL TLV implementation

Add changes to allow coexistence of WIN/ MCL TLV implementation
through use of CONFIG_MCL flag and change of MACRO names.

Change-Id: I6868c288a43fd3afb19c84b8a9d4ef0dfbee5c94
Acked-by: prgandhi@qti.qualcomm.com
CRs-Fixed: 1008872
This commit is contained in:
Himanshu Agarwal
2016-07-19 15:41:51 +05:30
committed by qcabuildsw
parent 8754248ea3
commit 7c83dcdc38
4 changed files with 74 additions and 21 deletions

View File

@@ -37,12 +37,62 @@
#include "htc_api.h" #include "htc_api.h"
#include "htc_api.h" #include "htc_api.h"
#include "dbglog_host.h" #include "dbglog_host.h"
#include "wmi.h"
#include "wmi_unified_priv.h" #include "wmi_unified_priv.h"
#include "wmi_unified_param.h" #include "wmi_unified_param.h"
#include <linux/debugfs.h> #include <linux/debugfs.h>
/* This check for CONFIG_WIN temporary added due to redeclaration compilation
error in MCL. Error is caused due to inclusion of wmi.h in wmi_unified_api.h
which gets included here through ol_if_athvar.h. Eventually it is expected that
wmi.h will be removed from wmi_unified_api.h after cleanup, which will need
WMI_CMD_HDR to be defined here. */
#ifdef CONFIG_WIN
/* Copied from wmi.h */
#undef MS
#define MS(_v, _f) (((_v) & _f##_MASK) >> _f##_LSB)
#undef SM
#define SM(_v, _f) (((_v) << _f##_LSB) & _f##_MASK)
#undef WO
#define WO(_f) ((_f##_OFFSET) >> 2)
#undef GET_FIELD
#define GET_FIELD(_addr, _f) MS(*((A_UINT32 *)(_addr) + WO(_f)), _f)
#undef SET_FIELD
#define SET_FIELD(_addr, _f, _val) \
(*((A_UINT32 *)(_addr) + WO(_f)) = \
(*((A_UINT32 *)(_addr) + WO(_f)) & ~_f##_MASK) | SM(_val, _f))
#define WMI_GET_FIELD(_msg_buf, _msg_type, _f) \
GET_FIELD(_msg_buf, _msg_type ## _ ## _f)
#define WMI_SET_FIELD(_msg_buf, _msg_type, _f, _val) \
SET_FIELD(_msg_buf, _msg_type ## _ ## _f, _val)
#define WMI_EP_APASS 0x0
#define WMI_EP_LPASS 0x1
#define WMI_EP_SENSOR 0x2
/*
* * Control Path
* */
typedef PREPACK struct {
A_UINT32 commandId:24,
reserved:2, /* used for WMI endpoint ID */
plt_priv:6; /* platform private */
} POSTPACK WMI_CMD_HDR; /* used for commands and events */
#define WMI_CMD_HDR_COMMANDID_LSB 0
#define WMI_CMD_HDR_COMMANDID_MASK 0x00ffffff
#define WMI_CMD_HDR_COMMANDID_OFFSET 0x00000000
#define WMI_CMD_HDR_WMI_ENDPOINTID_MASK 0x03000000
#define WMI_CMD_HDR_WMI_ENDPOINTID_OFFSET 24
#define WMI_CMD_HDR_PLT_PRIV_LSB 24
#define WMI_CMD_HDR_PLT_PRIV_MASK 0xff000000
#define WMI_CMD_HDR_PLT_PRIV_OFFSET 0x00000000
/* end of copy wmi.h */
#endif /* CONFIG_WIN */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0))
/* TODO Cleanup this backported function */ /* TODO Cleanup this backported function */
int qcacld_bp_seq_printf(struct seq_file *m, const char *f, ...) int qcacld_bp_seq_printf(struct seq_file *m, const char *f, ...)
@@ -241,7 +291,7 @@ uint32_t wmi_mgmt_log_max_entry = WMI_MGMT_EVENT_DEBUG_MAX_ENTRY;
uint32_t wmi_record_max_length = WMI_EVENT_DEBUG_ENTRY_MAX_LENGTH; uint32_t wmi_record_max_length = WMI_EVENT_DEBUG_ENTRY_MAX_LENGTH;
uint32_t wmi_display_size = 100; uint32_t wmi_display_size = 100;
static uint8_t *wmi_id_to_name(WMI_CMD_ID wmi_command); static uint8_t *wmi_id_to_name(uint32_t wmi_command);
/** /**
* wmi_log_init() - Initialize WMI event logging * wmi_log_init() - Initialize WMI event logging
@@ -898,7 +948,7 @@ static QDF_STATUS wmi_debugfs_init(wmi_unified_t wmi_handle)
* *
* Return: none * Return: none
*/ */
void wmi_mgmt_cmd_record(wmi_unified_t wmi_handle, WMI_CMD_ID cmd, void wmi_mgmt_cmd_record(wmi_unified_t wmi_handle, uint32_t cmd,
void *header, uint32_t vdev_id, uint32_t chanfreq) void *header, uint32_t vdev_id, uint32_t chanfreq)
{ {
qdf_spin_lock_bh(&wmi_handle->log_info.wmi_record_lock); qdf_spin_lock_bh(&wmi_handle->log_info.wmi_record_lock);
@@ -920,7 +970,7 @@ void wmi_mgmt_cmd_record(wmi_unified_t wmi_handle, WMI_CMD_ID cmd,
* Return: none * Return: none
*/ */
static void wmi_debugfs_remove(wmi_unified_t wmi_handle) { } static void wmi_debugfs_remove(wmi_unified_t wmi_handle) { }
void wmi_mgmt_cmd_record(wmi_unified_t wmi_handle, WMI_CMD_ID cmd, void wmi_mgmt_cmd_record(wmi_unified_t wmi_handle, uint32_t cmd,
void *header, uint32_t vdev_id, uint32_t chanfreq) { } void *header, uint32_t vdev_id, uint32_t chanfreq) { }
#endif /*WMI_INTERFACE_EVENT_LOGGING */ #endif /*WMI_INTERFACE_EVENT_LOGGING */
@@ -1007,7 +1057,7 @@ uint16_t wmi_get_max_msg_len(wmi_unified_t wmi_handle)
} }
#ifndef WMI_NON_TLV_SUPPORT #ifndef WMI_NON_TLV_SUPPORT
static uint8_t *wmi_id_to_name(WMI_CMD_ID wmi_command) static uint8_t *wmi_id_to_name(uint32_t wmi_command)
{ {
switch (wmi_command) { switch (wmi_command) {
/* initialize the wlan sub system */ /* initialize the wlan sub system */
@@ -1590,13 +1640,13 @@ static uint8_t *wmi_id_to_name(WMI_CMD_ID wmi_command)
return "Invalid WMI cmd"; return "Invalid WMI cmd";
} }
static inline void wma_log_cmd_id(WMI_CMD_ID cmd_id) static inline void wma_log_cmd_id(uint32_t cmd_id)
{ {
WMI_LOGD("Send WMI command:%s command_id:%d", WMI_LOGD("Send WMI command:%s command_id:%d",
wmi_id_to_name(cmd_id), cmd_id); wmi_id_to_name(cmd_id), cmd_id);
} }
#else #else
static uint8_t *wmi_id_to_name(WMI_CMD_ID wmi_command) static uint8_t *wmi_id_to_name(uint32_t wmi_command)
{ {
return "Invalid WMI cmd"; return "Invalid WMI cmd";
} }
@@ -1610,7 +1660,7 @@ static uint8_t *wmi_id_to_name(WMI_CMD_ID wmi_command)
* Return: true if the command is part of the suspend resume sequence. * Return: true if the command is part of the suspend resume sequence.
*/ */
#ifndef WMI_NON_TLV_SUPPORT #ifndef WMI_NON_TLV_SUPPORT
static bool wmi_is_runtime_pm_cmd(WMI_CMD_ID cmd_id) static bool wmi_is_runtime_pm_cmd(uint32_t cmd_id)
{ {
switch (cmd_id) { switch (cmd_id) {
case WMI_WOW_ENABLE_CMDID: case WMI_WOW_ENABLE_CMDID:
@@ -1634,7 +1684,7 @@ static bool wmi_is_runtime_pm_cmd(WMI_CMD_ID cmd_id)
* *
* Return: true if the command is part of the resume sequence. * Return: true if the command is part of the resume sequence.
*/ */
static bool wmi_is_pm_resume_cmd(WMI_CMD_ID cmd_id) static bool wmi_is_pm_resume_cmd(uint32_t cmd_id)
{ {
switch (cmd_id) { switch (cmd_id) {
case WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID: case WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID:
@@ -1646,11 +1696,11 @@ static bool wmi_is_pm_resume_cmd(WMI_CMD_ID cmd_id)
} }
} }
#else #else
static bool wmi_is_runtime_pm_cmd(WMI_CMD_ID cmd_id) static bool wmi_is_runtime_pm_cmd(uint32_t cmd_id)
{ {
return false; return false;
} }
static bool wmi_is_pm_resume_cmd(WMI_CMD_ID cmd_id) static bool wmi_is_pm_resume_cmd(uint32_t cmd_id)
{ {
return false; return false;
} }
@@ -1666,7 +1716,7 @@ static bool wmi_is_pm_resume_cmd(WMI_CMD_ID cmd_id)
* Return: 0 on success * Return: 0 on success
*/ */
int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, uint32_t len, int wmi_unified_cmd_send(wmi_unified_t wmi_handle, wmi_buf_t buf, uint32_t len,
WMI_CMD_ID cmd_id) uint32_t cmd_id)
{ {
HTC_PACKET *pkt; HTC_PACKET *pkt;
A_STATUS status; A_STATUS status;

View File

@@ -30,7 +30,6 @@
#include "a_debug.h" #include "a_debug.h"
#include "ol_if_athvar.h" #include "ol_if_athvar.h"
#include "ol_defines.h" #include "ol_defines.h"
#include "wmi.h"
#include "wmi_unified_priv.h" #include "wmi_unified_priv.h"
#include "wmi_unified_param.h" #include "wmi_unified_param.h"
@@ -2313,7 +2312,7 @@ wmi_unified_dfs_phyerr_filter_offload_en_cmd(void *wmi_hdl,
#ifndef WMI_NON_TLV_SUPPORT #ifndef WMI_NON_TLV_SUPPORT
QDF_STATUS wmi_unified_pktlog_wmi_send_cmd(void *wmi_hdl, QDF_STATUS wmi_unified_pktlog_wmi_send_cmd(void *wmi_hdl,
WMI_PKTLOG_EVENT pktlog_event, WMI_PKTLOG_EVENT pktlog_event,
WMI_CMD_ID cmd_id) uint32_t cmd_id)
{ {
wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl; wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
@@ -2902,7 +2901,7 @@ QDF_STATUS wmi_unified_process_set_ie_info_cmd(void *wmi_hdl,
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
#ifdef CONFIG_MCL
/** /**
* wmi_unified_send_init_cmd() - wmi init command * wmi_unified_send_init_cmd() - wmi init command
* @wmi_handle: pointer to wmi handle * @wmi_handle: pointer to wmi handle
@@ -2928,7 +2927,7 @@ QDF_STATUS wmi_unified_send_init_cmd(void *wmi_hdl,
return QDF_STATUS_E_FAILURE; return QDF_STATUS_E_FAILURE;
} }
#endif
/** /**
* wmi_unified_send_saved_init_cmd() - wmi init command * wmi_unified_send_saved_init_cmd() - wmi init command
* @wmi_handle: pointer to wmi handle * @wmi_handle: pointer to wmi handle

View File

@@ -31,11 +31,12 @@
#include "a_debug.h" #include "a_debug.h"
#include "ol_if_athvar.h" #include "ol_if_athvar.h"
#include "ol_defines.h" #include "ol_defines.h"
#include "wmi.h"
#include "wmi_unified_api.h" #include "wmi_unified_api.h"
#include "wmi_unified_priv.h" #include "wmi_unified_priv.h"
#ifdef WMI_NON_TLV_SUPPORT #ifdef WMI_NON_TLV_SUPPORT
#include "legacy/wmi.h"
#include "legacy/wmi_unified.h"
/** /**
* send_vdev_create_cmd_non_tlv() - send VDEV create command to fw * send_vdev_create_cmd_non_tlv() - send VDEV create command to fw
* @wmi_handle: wmi handle * @wmi_handle: wmi handle

View File

@@ -1608,7 +1608,7 @@ QDF_STATUS send_scan_chan_list_cmd_tlv(wmi_unified_t wmi_handle,
wmi_scan_chan_list_cmd_fixed_param *cmd; wmi_scan_chan_list_cmd_fixed_param *cmd;
int i; int i;
uint8_t *buf_ptr; uint8_t *buf_ptr;
wmi_channel *chan_info, *tchan_info; wmi_channel_param *chan_info, *tchan_info;
uint16_t len = sizeof(*cmd) + WMI_TLV_HDR_SIZE; uint16_t len = sizeof(*cmd) + WMI_TLV_HDR_SIZE;
len += sizeof(wmi_channel) * chan_list->num_scan_chans; len += sizeof(wmi_channel) * chan_list->num_scan_chans;
@@ -1632,7 +1632,8 @@ QDF_STATUS send_scan_chan_list_cmd_tlv(wmi_unified_t wmi_handle,
WMITLV_SET_HDR((buf_ptr + sizeof(wmi_scan_chan_list_cmd_fixed_param)), WMITLV_SET_HDR((buf_ptr + sizeof(wmi_scan_chan_list_cmd_fixed_param)),
WMITLV_TAG_ARRAY_STRUC, WMITLV_TAG_ARRAY_STRUC,
sizeof(wmi_channel) * chan_list->num_scan_chans); sizeof(wmi_channel) * chan_list->num_scan_chans);
chan_info = (wmi_channel *) (buf_ptr + sizeof(*cmd) + WMI_TLV_HDR_SIZE); chan_info = (wmi_channel_param *)
(buf_ptr + sizeof(*cmd) + WMI_TLV_HDR_SIZE);
tchan_info = chan_list->chan_info; tchan_info = chan_list->chan_info;
for (i = 0; i < chan_list->num_scan_chans; ++i) { for (i = 0; i < chan_list->num_scan_chans; ++i) {
@@ -9024,7 +9025,7 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
tgt_res_cfg->num_ocb_schedules; tgt_res_cfg->num_ocb_schedules;
} }
#ifdef CONFIG_MCL
/** /**
* send_init_cmd_tlv() - wmi init command * send_init_cmd_tlv() - wmi init command
* @wmi_handle: pointer to wmi handle * @wmi_handle: pointer to wmi handle
@@ -9144,7 +9145,7 @@ QDF_STATUS send_init_cmd_tlv(wmi_unified_t wmi_handle,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
#endif
/** /**
* send_saved_init_cmd_tlv() - wmi init command * send_saved_init_cmd_tlv() - wmi init command
* @wmi_handle: pointer to wmi handle * @wmi_handle: pointer to wmi handle
@@ -11970,7 +11971,9 @@ struct wmi_ops tlv_ops = {
.send_update_tdls_peer_state_cmd = send_update_tdls_peer_state_cmd_tlv, .send_update_tdls_peer_state_cmd = send_update_tdls_peer_state_cmd_tlv,
.send_process_fw_mem_dump_cmd = send_process_fw_mem_dump_cmd_tlv, .send_process_fw_mem_dump_cmd = send_process_fw_mem_dump_cmd_tlv,
.send_process_set_ie_info_cmd = send_process_set_ie_info_cmd_tlv, .send_process_set_ie_info_cmd = send_process_set_ie_info_cmd_tlv,
#ifdef CONFIG_MCL
.send_init_cmd = send_init_cmd_tlv, .send_init_cmd = send_init_cmd_tlv,
#endif
.save_fw_version_cmd = save_fw_version_cmd_tlv, .save_fw_version_cmd = save_fw_version_cmd_tlv,
.check_and_update_fw_version = .check_and_update_fw_version =
check_and_update_fw_version_cmd_tlv, check_and_update_fw_version_cmd_tlv,