qcacmn: Move CFR to common project

Move CFR to common project and rename the files as it will
be shared with other targets as well. Fix checkpatch errors
too.

Change-Id: I66481848036212aedab74c9c18848070ac1a3511
Este commit está contenido en:
Shwetha G K
2021-04-29 16:40:12 +05:30
cometido por Madan Koyyalamudi
padre 3c632fd1e3
commit 550f97cf8a
Se han modificado 4 ficheros con 87 adiciones y 87 borrados

Ver fichero

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2019-2021 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
@@ -16,8 +16,8 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _TARGET_IF_CFR_8072V2_H_
#define _TARGET_IF_CFR_8072V2_H_
#ifndef _TARGET_IF_CFR_DBR_H_
#define _TARGET_IF_CFR_DBR_H_
#define STREAMFS_MAX_SUBBUF_8S 8500
#define STREAMFS_NUM_SUBBUF_8S 255

Ver fichero

@@ -32,7 +32,7 @@
#include "target_if_cfr_adrastea.h"
#include "wlan_reg_services_api.h"
#else
#include <target_if_cfr_8074v2.h>
#include <target_if_cfr_dbr.h>
#endif
int target_if_cfr_stop_capture(struct wlan_objmgr_pdev *pdev,

Ver fichero

@@ -27,7 +27,7 @@
#include <wlan_mlme_dispatcher.h>
#include <init_deinit_lmac.h>
#include <wlan_cfr_utils_api.h>
#include <target_if_cfr_8074v2.h>
#include <target_if_cfr_dbr.h>
#ifdef DIRECT_BUF_RX_ENABLE
#include <target_if_direct_buf_rx_api.h>
#endif
@@ -40,6 +40,7 @@ int dump_lut(struct wlan_objmgr_pdev *pdev)
struct pdev_cfr *pdev_cfrobj;
struct look_up_table *lut = NULL;
int i = 0;
pdev_cfrobj = wlan_objmgr_pdev_get_comp_private_obj(pdev,
WLAN_UMAC_COMP_CFR);
if (!pdev_cfrobj) {
@@ -133,11 +134,12 @@ int correlate_and_relay(struct wlan_objmgr_pdev *pdev, uint32_t cookie,
struct look_up_table *lut, uint8_t module_id)
{
struct pdev_cfr *pdev_cfrobj;
int status = STATUS_ERROR;
if (module_id > 1) {
cfr_err("Received request with invalid mod id. Investigate!!");
QDF_ASSERT(0);
return STATUS_ERROR;
return status;
}
pdev_cfrobj = wlan_objmgr_pdev_get_comp_private_obj(pdev,
@@ -151,10 +153,10 @@ int correlate_and_relay(struct wlan_objmgr_pdev *pdev, uint32_t cookie,
lut->dbr_recv = true;
}
if ((lut->dbr_recv == true) && (lut->tx_recv == true)) {
if (lut->dbr_recv && lut->tx_recv) {
if (lut->dbr_ppdu_id == lut->tx_ppdu_id) {
pdev_cfrobj->release_cnt++;
return STATUS_STREAM_AND_RELEASE;
status = STATUS_STREAM_AND_RELEASE;
} else {
/*
* When there is a ppdu id mismatch, discard the other
@@ -167,7 +169,8 @@ int correlate_and_relay(struct wlan_objmgr_pdev *pdev, uint32_t cookie,
lut->data = NULL;
lut->data_len = 0;
lut->dbr_ppdu_id = 0;
qdf_mem_zero(&lut->dbr_address, sizeof(lut->dbr_address));
qdf_mem_zero(&lut->dbr_address,
sizeof(lut->dbr_address));
} else if (module_id == CORRELATE_DBR_MODULE_ID) {
cfr_debug("Received new dbr event for same cookie %u",
cookie);
@@ -192,18 +195,19 @@ int correlate_and_relay(struct wlan_objmgr_pdev *pdev, uint32_t cookie,
dump_lut(pdev);
dump_dma_hdr(&lut->dma_hdr, 1);
cfr_err("correlation_info1: 0x%08x correlation_info2 0x%08x",
lut->tx_address1, lut->tx_address2);
lut->tx_address1, lut->tx_address2);
}
return STATUS_HOLD;
status = STATUS_HOLD;
}
} else {
return STATUS_HOLD;
status = STATUS_HOLD;
}
return status;
}
bool cfr_dbr_event_handler(struct wlan_objmgr_pdev *pdev,
struct direct_buf_rx_data *payload)
struct direct_buf_rx_data *payload)
{
uint8_t *data = NULL;
uint32_t cookie = 0;
@@ -214,6 +218,7 @@ bool cfr_dbr_event_handler(struct wlan_objmgr_pdev *pdev,
struct look_up_table *lut = NULL;
struct csi_cfr_header *header = NULL;
struct wlan_lmac_if_rx_ops *rx_ops;
bool ret = true;
if ((!pdev) || (!payload)) {
cfr_err("pdev or payload is null");
@@ -272,21 +277,23 @@ bool cfr_dbr_event_handler(struct wlan_objmgr_pdev *pdev,
return true;
}
status = rx_ops->cfr_rx_ops.cfr_info_send(pdev, &lut->header,
sizeof(struct csi_cfr_header),
lut->data, lut->data_len, &end_magic, 4);
status = rx_ops->cfr_rx_ops.cfr_info_send
(pdev, &lut->header,
sizeof(struct csi_cfr_header),
lut->data, lut->data_len,
&end_magic, 4);
release_lut_entry(pdev, lut);
cfr_debug("Data sent to upper layers, released look up table");
return true;
ret = true;
} else if (status == STATUS_HOLD) {
cfr_debug("Tx event not received yet. Buffer is not released");
return false;
ret = false;
} else {
cfr_err("Correlation returned invalid status!!");
return true;
ret = true;
}
return true;
return ret;
}
void dump_cfr_peer_tx_event(wmi_cfr_peer_tx_event_param *event)
@@ -316,7 +323,7 @@ void dump_cfr_peer_tx_event(wmi_cfr_peer_tx_event_param *event)
cfr_debug("rtt_cfo_measurement: %d\n", event->cfo_measurement);
cfr_debug("rx_start_ts: %u \n", event->rx_start_ts);
cfr_debug("rx_start_ts: %u\n", event->rx_start_ts);
cfr_debug("agc_gain0: %u agc_gain1: %u agc_gain2: %u agc_gain3: %u\n"
"agc_gain4: %u agc_gain5: %u agc_gain6: %u agc_gain7: %u\n",
@@ -327,14 +334,13 @@ void dump_cfr_peer_tx_event(wmi_cfr_peer_tx_event_param *event)
}
void prepare_cfr_header_txstatus(wmi_cfr_peer_tx_event_param *tx_evt_param,
struct csi_cfr_header *header)
struct csi_cfr_header *header)
{
target_if_cfr_fill_header(header, false, target_type, false);
header->u.meta_v4.status = 0; /* failure */
header->u.meta_v4.length = 0;
qdf_mem_copy(&header->u.meta_v4.peer_addr[0],
&tx_evt_param->peer_mac_addr.bytes[0], QDF_MAC_ADDR_SIZE);
}
static int
@@ -382,7 +388,6 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
return -EINVAL;
}
retval = wmi_extract_cfr_peer_tx_event_param(wmi_handle, data,
&tx_evt_param);
@@ -411,7 +416,7 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
}
retval = wlan_objmgr_pdev_try_get_ref(pdev, WLAN_CFR_ID);
if (retval != QDF_STATUS_SUCCESS){
if (retval != QDF_STATUS_SUCCESS) {
cfr_err("failed to get pdev reference");
wlan_objmgr_psoc_release_ref(psoc, WLAN_CFR_ID);
wlan_objmgr_vdev_release_ref(vdev, WLAN_CFR_ID);
@@ -451,7 +456,8 @@ target_if_peer_capture_event(ol_scn_t sc, uint8_t *data, uint32_t datalen)
}
buf_addr_temp = (tx_evt_param.correlation_info_2 & 0x0f);
buf_addr = (tx_evt_param.correlation_info_1 |((uint64_t)buf_addr_temp << 32));
buf_addr = (tx_evt_param.correlation_info_1 |
((uint64_t)buf_addr_temp << 32));
if (target_if_dbr_cookie_lookup(pdev, DBR_MODULE_CFR, buf_addr,
&cookie, 0)) {
@@ -538,7 +544,6 @@ done:
wlan_objmgr_vdev_release_ref(vdev, WLAN_CFR_ID);
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
return status;
}
#else
static int
@@ -661,7 +666,7 @@ target_if_dbr_get_ring_params(struct wlan_objmgr_pdev *pdev)
dbr_tx_ops = &tx_ops->dbr_tx_ops;
if(dbr_tx_ops->direct_buf_rx_get_ring_params)
if (dbr_tx_ops->direct_buf_rx_get_ring_params)
dbr_tx_ops->direct_buf_rx_get_ring_params(pdev, param,
DBR_MODULE_CFR, 0);
return param;
@@ -687,7 +692,7 @@ target_if_dbr_get_ring_params(struct wlan_objmgr_pdev *pdev)
#endif
QDF_STATUS cfr_8074v2_init_pdev(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_pdev *pdev)
struct wlan_objmgr_pdev *pdev)
{
QDF_STATUS status;
struct pdev_cfr *pdev_cfrobj;
@@ -719,14 +724,13 @@ QDF_STATUS cfr_8074v2_init_pdev(struct wlan_objmgr_psoc *psoc,
}
QDF_STATUS cfr_8074v2_deinit_pdev(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_pdev *pdev)
struct wlan_objmgr_pdev *pdev)
{
QDF_STATUS status;
status = target_if_unregister_to_dbr(pdev);
if (QDF_STATUS_SUCCESS != status) {
if (QDF_STATUS_SUCCESS != status)
cfr_err("Failed to register with dbr");
}
status = target_if_unregister_tx_completion_event_handler(psoc);
return status;

Ver fichero

@@ -44,7 +44,6 @@
#define NUM_SUBBUF_4S 1100
#define MAX_CFR_CLIENTS_LEGACY 10
static u_int8_t *
target_if_mac_addr_deswizzle(u_int8_t *tgt_mac_addr, u_int8_t *buffer)
{
@@ -75,7 +74,8 @@ target_if_mac_addr_deswizzle(u_int8_t *tgt_mac_addr, u_int8_t *buffer)
}
QDF_STATUS ol_txrx_htt_cfr_rx_ind_handler(void *pdev_ptr,
uint32_t *msg_word, size_t msg_len)
uint32_t *msg_word,
size_t msg_len)
{
struct wlan_objmgr_pdev *pdev;
struct wlan_objmgr_psoc *psoc;
@@ -87,7 +87,6 @@ QDF_STATUS ol_txrx_htt_cfr_rx_ind_handler(void *pdev_ptr,
u_int32_t cfr_dump_len, cfr_dump_index;
uint32_t status, target_type;
void *prindex = NULL;
struct csi_cfr_header cfr_header = {0};
u_int32_t end_magic = 0xBEAFDEAD;
@@ -107,7 +106,7 @@ QDF_STATUS ol_txrx_htt_cfr_rx_ind_handler(void *pdev_ptr,
}
pa = wlan_objmgr_pdev_get_comp_private_obj(pdev, WLAN_UMAC_COMP_CFR);
if (pa == NULL) {
if (!pa) {
cfr_err("pdev_cfr is NULL\n");
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
return QDF_STATUS_E_FAILURE;
@@ -133,56 +132,55 @@ QDF_STATUS ol_txrx_htt_cfr_rx_ind_handler(void *pdev_ptr,
target_if_cfr_fill_header(&cfr_header, true, target_type, false);
switch (cfr_msg_type) {
u_int8_t *peeraddr;
u_int8_t *peeraddr;
case HTT_PEER_CFR_CAPTURE_MSG_TYPE_1:
cfr_header.u.meta_v1.status =
cfr_header.u.meta_v1.status =
HTT_T2H_CFR_DUMP_TYPE1_STATUS_GET(*(msg_word + 2));
cfr_cap_status = cfr_header.u.meta_v1.status;
cfr_header.u.meta_v1.capture_bw =
cfr_cap_status = cfr_header.u.meta_v1.status;
cfr_header.u.meta_v1.capture_bw =
HTT_T2H_CFR_DUMP_TYPE1_CAP_BW_GET(*(msg_word + 2));
cfr_header.u.meta_v1.capture_mode =
cfr_header.u.meta_v1.capture_mode =
HTT_T2H_CFR_DUMP_TYPE1_MODE_GET(*(msg_word + 2));
cfr_header.u.meta_v1.sts_count =
cfr_header.u.meta_v1.sts_count =
HTT_T2H_CFR_DUMP_TYPE1_STS_GET(*(msg_word + 2));
cfr_header.u.meta_v1.channel_bw =
cfr_header.u.meta_v1.channel_bw =
HTT_T2H_CFR_DUMP_TYPE1_CHAN_BW_GET(*(msg_word + 2));
cfr_header.u.meta_v1.capture_type =
cfr_header.u.meta_v1.capture_type =
HTT_T2H_CFR_DUMP_TYPE1_CAP_TYPE_GET(*(msg_word + 2));
cfr_vdev_id = HTT_T2H_CFR_DUMP_TYPE1_VDEV_ID_GET(*(msg_word + 2));
cfr_vdev_id = HTT_T2H_CFR_DUMP_TYPE1_VDEV_ID_GET
(*(msg_word + 2));
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, cfr_vdev_id,
WLAN_CFR_ID);
if (vdev == NULL)
cfr_header.u.meta_v1.num_rx_chain = 0;
else {
cfr_header.u.meta_v1.num_rx_chain =
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, cfr_vdev_id,
WLAN_CFR_ID);
if (!vdev) {
cfr_header.u.meta_v1.num_rx_chain = 0;
} else {
cfr_header.u.meta_v1.num_rx_chain =
wlan_vdev_mlme_get_rxchainmask(vdev);
wlan_objmgr_vdev_release_ref(vdev, WLAN_CFR_ID);
}
wlan_objmgr_vdev_release_ref(vdev, WLAN_CFR_ID);
}
peeraddr = target_if_mac_addr_deswizzle((u_int8_t *) (msg_word+3),
cfr_header.u.meta_v1.peer_addr);
peeraddr = target_if_mac_addr_deswizzle
((u_int8_t *)(msg_word + 3),
cfr_header.u.meta_v1.peer_addr);
memcpy(cfr_header.u.meta_v1.peer_addr, peeraddr, 6);
memcpy(cfr_header.u.meta_v1.peer_addr, peeraddr, 6);
cfr_dump_index = *(msg_word + 5);
cfr_header.u.meta_v1.length = *(msg_word + 6);
cfr_dump_len = cfr_header.u.meta_v1.length;
cfr_header.u.meta_v1.timestamp = *(msg_word + 7);
cfr_header.u.meta_v1.prim20_chan = *(msg_word + 9);
cfr_header.u.meta_v1.center_freq1 = *(msg_word + 10);
cfr_header.u.meta_v1.center_freq2 = *(msg_word + 11);
cfr_header.u.meta_v1.phy_mode = *(msg_word + 12);
break;
cfr_dump_index = *(msg_word + 5);
cfr_header.u.meta_v1.length = *(msg_word + 6);
cfr_dump_len = cfr_header.u.meta_v1.length;
cfr_header.u.meta_v1.timestamp = *(msg_word + 7);
cfr_header.u.meta_v1.prim20_chan = *(msg_word + 9);
cfr_header.u.meta_v1.center_freq1 = *(msg_word + 10);
cfr_header.u.meta_v1.center_freq2 = *(msg_word + 11);
cfr_header.u.meta_v1.phy_mode = *(msg_word + 12);
break;
default:
cfr_err("Unsupported CFR capture type:%d\n", cfr_msg_type);
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
return QDF_STATUS_E_NOSUPPORT;
cfr_err("Unsupported CFR capture type:%d\n", cfr_msg_type);
wlan_objmgr_pdev_release_ref(pdev, WLAN_CFR_ID);
return QDF_STATUS_E_NOSUPPORT;
}
vaddr = pa->cfr_mem_chunk.vaddr;
@@ -191,15 +189,15 @@ QDF_STATUS ol_txrx_htt_cfr_rx_ind_handler(void *pdev_ptr,
prindex = (void *)((u_int8_t *)vaddr + cfr_dump_index);
target_if_cfr_info_send(pdev, &cfr_header,
sizeof(struct csi_cfr_header),
prindex, cfr_dump_len, &end_magic, 4);
sizeof(struct csi_cfr_header),
prindex, cfr_dump_len, &end_magic, 4);
*vaddr = cfr_dump_index + cfr_dump_len;
} else if (cfr_cap_status == 0) {
target_if_cfr_info_send(pdev, &cfr_header,
sizeof(struct csi_cfr_header),
prindex, cfr_dump_len, &end_magic, 4);
sizeof(struct csi_cfr_header),
prindex, cfr_dump_len, &end_magic, 4);
}
cfr_debug("CFR: status=%d rindex=0x%pK dump_len=%d\n",
@@ -209,6 +207,7 @@ QDF_STATUS ol_txrx_htt_cfr_rx_ind_handler(void *pdev_ptr,
return QDF_STATUS_SUCCESS;
}
qdf_export_symbol(ol_txrx_htt_cfr_rx_ind_handler);
QDF_STATUS
@@ -224,24 +223,21 @@ cfr_wifi2_0_init_pdev(struct wlan_objmgr_psoc *psoc,
pa = wlan_objmgr_pdev_get_comp_private_obj(pdev, WLAN_UMAC_COMP_CFR);
if (pa == NULL)
if (!pa)
return QDF_STATUS_E_FAILURE;
target_type = target_if_cfr_get_target_type(psoc);
tgt_hdl = wlan_psoc_get_tgt_if_handle(psoc);
if (tgt_hdl)
info = (&(tgt_hdl->info));
info = (&tgt_hdl->info);
else
return QDF_STATUS_E_FAILURE;
if (pa->is_cfr_capable) {
for (idx = 0; idx < info->num_mem_chunks; ++idx) {
if (info->mem_chunks[idx].req_id ==
CFR_CAPTURE_HOST_MEM_REQ_ID) {
pa->cfr_mem_chunk.req_id =
info->mem_chunks[idx].req_id;
pa->cfr_mem_chunk.paddr =
@@ -254,8 +250,8 @@ cfr_wifi2_0_init_pdev(struct wlan_objmgr_psoc *psoc,
(*read_offset) =
CFR_CAPTURE_HOST_MEM_DEFAULT_READ_OFFSET;
cfr_debug("CFR: reqid=%d len=%d\n",
pa->cfr_mem_chunk.req_id,
pa->cfr_mem_chunk.len);
pa->cfr_mem_chunk.req_id,
pa->cfr_mem_chunk.len);
}
if (idx >= info->num_mem_chunks) {
@@ -263,7 +259,6 @@ cfr_wifi2_0_init_pdev(struct wlan_objmgr_psoc *psoc,
cfr_err("CFR Shared memory not allocated\n");
return QDF_STATUS_E_NOMEM;
}
}
/* TODO: These values need to be fine-tuned for better optimisation,
@@ -279,11 +274,13 @@ cfr_wifi2_0_init_pdev(struct wlan_objmgr_psoc *psoc,
pa->cfr_max_sta_count = MAX_CFR_CLIENTS_LEGACY;
pa->subbuf_size = MAX_SUBBUF_4S;
pa->num_subbufs = NUM_SUBBUF_4S;
} else
} else {
return QDF_STATUS_E_NOSUPPORT;
}
} else
} else {
return QDF_STATUS_E_NOSUPPORT;
}
return QDF_STATUS_SUCCESS;
}
@@ -292,7 +289,6 @@ QDF_STATUS
cfr_wifi2_0_deinit_pdev(struct wlan_objmgr_psoc *psoc,
struct wlan_objmgr_pdev *pdev)
{
/* TODO:No cleanup action need for now */
return QDF_STATUS_SUCCESS;
}