From 0b37b4ca1d7743cdf1459438dffd515a40f71d53 Mon Sep 17 00:00:00 2001 From: Liangwei Dong Date: Tue, 2 Jul 2019 16:19:43 +0800 Subject: [PATCH] qcacmn: Change beacon tx WMI API under feature flag Remove CONFIG_MCL for Beacon buf send WMI command APIs. And move them under WLAN_WMI_BCN. Change-Id: Ie5053334bd7498cb9dd84dbc515ffd3414a4ad32 CRs-Fixed: 2483567 --- wmi/inc/wmi_unified_priv.h | 10 ++++- wmi/src/wmi_unified_bcn_tlv.c | 71 +++++++++++++++++++++++++++++++++++ wmi/src/wmi_unified_tlv.c | 47 +---------------------- 3 files changed, 81 insertions(+), 47 deletions(-) create mode 100644 wmi/src/wmi_unified_bcn_tlv.c diff --git a/wmi/inc/wmi_unified_priv.h b/wmi/inc/wmi_unified_priv.h index 947b72cee817..38d018947831 100644 --- a/wmi/inc/wmi_unified_priv.h +++ b/wmi/inc/wmi_unified_priv.h @@ -783,7 +783,7 @@ QDF_STATUS (*send_config_packet_filter_cmd)(wmi_unified_t wmi_handle, uint8_t filter_id, bool enable); #endif #endif /* end of WLAN_POWER_MANAGEMENT_OFFLOAD */ -#ifdef CONFIG_MCL +#ifdef WLAN_WMI_BCN QDF_STATUS (*send_bcn_buf_ll_cmd)(wmi_unified_t wmi_handle, wmi_bcn_send_from_host_cmd_fixed_param * param); #endif @@ -2372,6 +2372,14 @@ static inline void wmi_sta_attach_tlv(struct wmi_unified *wmi_handle) } #endif +#ifdef WLAN_WMI_BCN +void wmi_bcn_attach_tlv(wmi_unified_t wmi_handle); +#else +static inline void wmi_bcn_attach_tlv(wmi_unified_t wmi_handle) +{ +} +#endif + /** * wmi_align() - provides word aligned parameter * @param: parameter to be aligned diff --git a/wmi/src/wmi_unified_bcn_tlv.c b/wmi/src/wmi_unified_bcn_tlv.c new file mode 100644 index 000000000000..714c9d236f41 --- /dev/null +++ b/wmi/src/wmi_unified_bcn_tlv.c @@ -0,0 +1,71 @@ + +/* + * Copyright (c) 2016-2019 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 + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ +#include +#include +#include +#include "wmi_unified_bcn_api.h" + +/** + * send_bcn_buf_ll_cmd_tlv() - prepare and send beacon buffer to fw for LL + * @wmi_handle: wmi handle + * @param: bcn ll cmd parameter + * + * Return: QDF_STATUS_SUCCESS for success otherwise failure + */ +static QDF_STATUS send_bcn_buf_ll_cmd_tlv( + wmi_unified_t wmi_handle, + wmi_bcn_send_from_host_cmd_fixed_param *param) +{ + wmi_bcn_send_from_host_cmd_fixed_param *cmd; + wmi_buf_t wmi_buf; + QDF_STATUS ret; + + wmi_buf = wmi_buf_alloc(wmi_handle, sizeof(*cmd)); + if (!wmi_buf) + return QDF_STATUS_E_FAILURE; + + cmd = (wmi_bcn_send_from_host_cmd_fixed_param *)wmi_buf_data(wmi_buf); + WMITLV_SET_HDR(&cmd->tlv_header, + WMITLV_TAG_STRUC_wmi_bcn_send_from_host_cmd_fixed_param, + WMITLV_GET_STRUCT_TLVLEN + (wmi_bcn_send_from_host_cmd_fixed_param)); + cmd->vdev_id = param->vdev_id; + cmd->data_len = param->data_len; + cmd->frame_ctrl = param->frame_ctrl; + cmd->frag_ptr = param->frag_ptr; + cmd->dtim_flag = param->dtim_flag; + + wmi_mtrace(WMI_PDEV_SEND_BCN_CMDID, cmd->vdev_id, 0); + ret = wmi_unified_cmd_send(wmi_handle, wmi_buf, sizeof(*cmd), + WMI_PDEV_SEND_BCN_CMDID); + + if (QDF_IS_STATUS_ERROR(ret)) { + WMI_LOGE("Failed to send WMI_PDEV_SEND_BCN_CMDID command"); + wmi_buf_free(wmi_buf); + } + + return ret; +} + +void wmi_bcn_attach_tlv(wmi_unified_t wmi_handle) +{ + struct wmi_ops *ops = wmi_handle->ops; + + ops->send_bcn_buf_ll_cmd = send_bcn_buf_ll_cmd_tlv; +} diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index dc5bfb9d71ec..f2bd4a690962 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -3942,49 +3942,6 @@ static QDF_STATUS send_peer_rate_report_cmd_tlv(wmi_unified_t wmi_handle, return status; } -#ifdef CONFIG_MCL -/** - * send_bcn_buf_ll_cmd_tlv() - prepare and send beacon buffer to fw for LL - * @wmi_handle: wmi handle - * @param: bcn ll cmd parameter - * - * Return: QDF_STATUS_SUCCESS for success otherwise failure - */ -static QDF_STATUS send_bcn_buf_ll_cmd_tlv(wmi_unified_t wmi_handle, - wmi_bcn_send_from_host_cmd_fixed_param *param) -{ - wmi_bcn_send_from_host_cmd_fixed_param *cmd; - wmi_buf_t wmi_buf; - QDF_STATUS ret; - - wmi_buf = wmi_buf_alloc(wmi_handle, sizeof(*cmd)); - if (!wmi_buf) - return QDF_STATUS_E_FAILURE; - - cmd = (wmi_bcn_send_from_host_cmd_fixed_param *) wmi_buf_data(wmi_buf); - WMITLV_SET_HDR(&cmd->tlv_header, - WMITLV_TAG_STRUC_wmi_bcn_send_from_host_cmd_fixed_param, - WMITLV_GET_STRUCT_TLVLEN - (wmi_bcn_send_from_host_cmd_fixed_param)); - cmd->vdev_id = param->vdev_id; - cmd->data_len = param->data_len; - cmd->frame_ctrl = param->frame_ctrl; - cmd->frag_ptr = param->frag_ptr; - cmd->dtim_flag = param->dtim_flag; - - wmi_mtrace(WMI_PDEV_SEND_BCN_CMDID, cmd->vdev_id, 0); - ret = wmi_unified_cmd_send(wmi_handle, wmi_buf, sizeof(*cmd), - WMI_PDEV_SEND_BCN_CMDID); - - if (QDF_IS_STATUS_ERROR(ret)) { - WMI_LOGE("Failed to send WMI_PDEV_SEND_BCN_CMDID command"); - wmi_buf_free(wmi_buf); - } - - return ret; -} -#endif /* CONFIG_MCL */ - /** * send_process_update_edca_param_cmd_tlv() - update EDCA params * @wmi_handle: wmi handle @@ -11808,9 +11765,6 @@ struct wmi_ops tlv_ops = { .send_snr_request_cmd = send_snr_request_cmd_tlv, .send_snr_cmd = send_snr_cmd_tlv, .send_link_status_req_cmd = send_link_status_req_cmd_tlv, -#ifdef CONFIG_MCL - .send_bcn_buf_ll_cmd = send_bcn_buf_ll_cmd_tlv, -#endif #if !defined(REMOVE_PKT_LOG) && defined(FEATURE_PKTLOG) .send_pktlog_wmi_send_cmd = send_pktlog_wmi_send_cmd_tlv, #endif @@ -12647,6 +12601,7 @@ void wmi_tlv_attach(wmi_unified_t wmi_handle) wmi_dbr_attach_tlv(wmi_handle); wmi_atf_attach_tlv(wmi_handle); wmi_ap_attach_tlv(wmi_handle); + wmi_bcn_attach_tlv(wmi_handle); wmi_ocb_attach_tlv(wmi_handle); wmi_nan_attach_tlv(wmi_handle); wmi_p2p_attach_tlv(wmi_handle);