qcacmn: Add support for chan_nf noise floor
Add function for extract_nfcal_power_ev_param and
register wmi_pdev_nfcal_power_all_channels_event_id event
to support noise floor in HK.
Change-Id: I6eef823b507be94c65df026664244eec7fc07e24
CRs-Fixed: 2157972
This commit is contained in:

committed by
Nitesh Shrivastav

parent
1848acda2b
commit
92d5175130
@@ -1424,7 +1424,8 @@ uint8_t *wmi_extract_dbglog_data_len(void *wmi_hdl,
|
|||||||
QDF_STATUS wmi_send_ext_resource_config(void *wmi_hdl,
|
QDF_STATUS wmi_send_ext_resource_config(void *wmi_hdl,
|
||||||
wmi_host_ext_resource_config *ext_cfg);
|
wmi_host_ext_resource_config *ext_cfg);
|
||||||
|
|
||||||
QDF_STATUS wmi_unified_nf_dbr_dbm_info_get_cmd_send(void *wmi_hdl);
|
QDF_STATUS wmi_unified_nf_dbr_dbm_info_get_cmd_send(void *wmi_hdl,
|
||||||
|
uint8_t mac_id);
|
||||||
|
|
||||||
QDF_STATUS wmi_unified_packet_power_info_get_cmd_send(void *wmi_hdl,
|
QDF_STATUS wmi_unified_packet_power_info_get_cmd_send(void *wmi_hdl,
|
||||||
struct packet_power_info_params *param);
|
struct packet_power_info_params *param);
|
||||||
|
@@ -287,8 +287,8 @@
|
|||||||
|
|
||||||
#define WMI_HOST_TPC_RATE_MAX 160
|
#define WMI_HOST_TPC_RATE_MAX 160
|
||||||
#define WMI_HOST_TPC_TX_NUM_CHAIN 4
|
#define WMI_HOST_TPC_TX_NUM_CHAIN 4
|
||||||
#define WMI_HOST_RXG_CAL_CHAN_MAX 4
|
#define WMI_HOST_RXG_CAL_CHAN_MAX 8
|
||||||
#define WMI_HOST_MAX_NUM_CHAINS 4
|
#define WMI_HOST_MAX_NUM_CHAINS 8
|
||||||
#define WMI_MAX_NUM_OF_RATE_THRESH 4
|
#define WMI_MAX_NUM_OF_RATE_THRESH 4
|
||||||
|
|
||||||
#define WMI_HOST_PDEV_MAX_VDEVS 17
|
#define WMI_HOST_PDEV_MAX_VDEVS 17
|
||||||
@@ -6317,31 +6317,24 @@ typedef struct {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wmi_host_pdev_nfcal_power_all_channels_event - NF cal event data
|
* struct wmi_host_pdev_nfcal_power_all_channels_event - NF cal event data
|
||||||
* @nfdBr:
|
* @nfdbr:
|
||||||
* chan0: {NFCalPower_chain0, NFCalPower_chain1,
|
* chan[0 ~ 7]: {NFCalPower_chain0, NFCalPower_chain1,
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
* NFCalPower_chain2, NFCalPower_chain3,
|
||||||
* chan1: {NFCalPower_chain0, NFCalPower_chain1,
|
* NFCalPower_chain4, NFCalPower_chain5,
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
* NFCalPower_chain6, NFCalPower_chain7},
|
||||||
* chan2: {NFCalPower_chain0, NFCalPower_chain1,
|
* @nfdbm:
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
* chan[0 ~ 7]: {NFCalPower_chain0, NFCalPower_chain1,
|
||||||
* chan3: {NFCalPower_chain0, NFCalPower_chain1,
|
* NFCalPower_chain2, NFCalPower_chain3,
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
* NFCalPower_chain4, NFCalPower_chain5,
|
||||||
* @nfdBr:
|
* NFCalPower_chain6, NFCalPower_chain7},
|
||||||
* chan0: {NFCalPower_chain0, NFCalPower_chain1,
|
* @freqnum:
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
* chan[0 ~ 7]: frequency number
|
||||||
* chan1: {NFCalPower_chain0, NFCalPower_chain1,
|
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
|
||||||
* chan2: {NFCalPower_chain0, NFCalPower_chain1,
|
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
|
||||||
* chan3: {NFCalPower_chain0, NFCalPower_chain1,
|
|
||||||
* NFCalPower_chain2, NFCalPower_chain3},
|
|
||||||
* @freqNum: frequency number
|
|
||||||
* @pdev_id: pdev_id
|
* @pdev_id: pdev_id
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int8_t nfdBr[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS];
|
int8_t nfdbr[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS];
|
||||||
int8_t nfdBm[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS];
|
int8_t nfdbm[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS];
|
||||||
uint32_t freqNum[WMI_HOST_RXG_CAL_CHAN_MAX];
|
uint32_t freqnum[WMI_HOST_RXG_CAL_CHAN_MAX];
|
||||||
uint32_t pdev_id;
|
uint32_t pdev_id;
|
||||||
} wmi_host_pdev_nfcal_power_all_channels_event;
|
} wmi_host_pdev_nfcal_power_all_channels_event;
|
||||||
|
|
||||||
|
@@ -1053,7 +1053,8 @@ uint8_t* (*extract_dbglog_data_len)(wmi_unified_t wmi_handle, void *evt_buf,
|
|||||||
QDF_STATUS (*send_ext_resource_config)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*send_ext_resource_config)(wmi_unified_t wmi_handle,
|
||||||
wmi_host_ext_resource_config *ext_cfg);
|
wmi_host_ext_resource_config *ext_cfg);
|
||||||
|
|
||||||
QDF_STATUS (*send_nf_dbr_dbm_info_get_cmd)(wmi_unified_t wmi_handle);
|
QDF_STATUS (*send_nf_dbr_dbm_info_get_cmd)(wmi_unified_t wmi_handle,
|
||||||
|
uint8_t mac_id);
|
||||||
|
|
||||||
QDF_STATUS (*send_packet_power_info_get_cmd)(wmi_unified_t wmi_handle,
|
QDF_STATUS (*send_packet_power_info_get_cmd)(wmi_unified_t wmi_handle,
|
||||||
struct packet_power_info_params *param);
|
struct packet_power_info_params *param);
|
||||||
|
@@ -4881,15 +4881,17 @@ QDF_STATUS wmi_send_ext_resource_config(void *wmi_hdl,
|
|||||||
/**
|
/**
|
||||||
* wmi_unified_nf_dbr_dbm_info_get_cmd_send() - WMI request nf info function
|
* wmi_unified_nf_dbr_dbm_info_get_cmd_send() - WMI request nf info function
|
||||||
* @param wmi_handle : handle to WMI.
|
* @param wmi_handle : handle to WMI.
|
||||||
|
* @mac_id: mac_id
|
||||||
*
|
*
|
||||||
* @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
* @return QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||||
*/
|
*/
|
||||||
QDF_STATUS wmi_unified_nf_dbr_dbm_info_get_cmd_send(void *wmi_hdl)
|
QDF_STATUS wmi_unified_nf_dbr_dbm_info_get_cmd_send(void *wmi_hdl,
|
||||||
|
uint8_t mac_id)
|
||||||
{
|
{
|
||||||
wmi_unified_t wmi = (wmi_unified_t) wmi_hdl;
|
wmi_unified_t wmi = (wmi_unified_t) wmi_hdl;
|
||||||
|
|
||||||
if (wmi->ops->send_nf_dbr_dbm_info_get_cmd)
|
if (wmi->ops->send_nf_dbr_dbm_info_get_cmd)
|
||||||
return wmi->ops->send_nf_dbr_dbm_info_get_cmd(wmi);
|
return wmi->ops->send_nf_dbr_dbm_info_get_cmd(wmi, mac_id);
|
||||||
|
|
||||||
return QDF_STATUS_E_FAILURE;
|
return QDF_STATUS_E_FAILURE;
|
||||||
}
|
}
|
||||||
|
@@ -4592,11 +4592,12 @@ send_periodic_chan_stats_config_cmd_non_tlv(wmi_unified_t wmi_handle,
|
|||||||
/**
|
/**
|
||||||
* send_nf_dbr_dbm_info_get_cmd_non_tlv() - send request to get nf to fw
|
* send_nf_dbr_dbm_info_get_cmd_non_tlv() - send request to get nf to fw
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
|
* @mac_id: radio context
|
||||||
*
|
*
|
||||||
* Return: 0 for success or error code
|
* Return: 0 for success or error code
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
send_nf_dbr_dbm_info_get_cmd_non_tlv(wmi_unified_t wmi_handle)
|
send_nf_dbr_dbm_info_get_cmd_non_tlv(wmi_unified_t wmi_handle, uint8_t mac_id)
|
||||||
{
|
{
|
||||||
wmi_buf_t wmibuf;
|
wmi_buf_t wmibuf;
|
||||||
|
|
||||||
@@ -6597,9 +6598,17 @@ static QDF_STATUS extract_nfcal_power_ev_param_non_tlv(wmi_unified_t wmi_handle,
|
|||||||
wmi_pdev_nfcal_power_all_channels_event *event =
|
wmi_pdev_nfcal_power_all_channels_event *event =
|
||||||
(wmi_pdev_nfcal_power_all_channels_event *)evt_buf;
|
(wmi_pdev_nfcal_power_all_channels_event *)evt_buf;
|
||||||
|
|
||||||
qdf_mem_copy(param->nfdBr, event->nfdBr, sizeof(param->nfdBr));
|
if ((sizeof(event->nfdBr) == sizeof(param->nfdbr)) &&
|
||||||
qdf_mem_copy(param->nfdBm, event->nfdBm, sizeof(param->nfdBm));
|
(sizeof(event->nfdBm) == sizeof(param->nfdbm)) &&
|
||||||
qdf_mem_copy(param->freqNum, event->freqNum, sizeof(param->freqNum));
|
(sizeof(event->freqNum) == sizeof(param->freqnum))) {
|
||||||
|
qdf_mem_copy(param->nfdbr, event->nfdBr, sizeof(param->nfdbr));
|
||||||
|
qdf_mem_copy(param->nfdbm, event->nfdBm, sizeof(param->nfdbm));
|
||||||
|
qdf_mem_copy(param->freqnum, event->freqNum,
|
||||||
|
sizeof(param->freqnum));
|
||||||
|
} else {
|
||||||
|
WMI_LOGE("%s: %d Failed copy out of bound memory!\n", __func__, __LINE__);
|
||||||
|
return QDF_STATUS_E_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID;
|
param->pdev_id = WMI_NON_TLV_DEFAULT_PDEV_ID;
|
||||||
|
|
||||||
|
@@ -12477,20 +12477,30 @@ send_periodic_chan_stats_config_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
/**
|
/**
|
||||||
* send_nf_dbr_dbm_info_get_cmd_tlv() - send request to get nf to fw
|
* send_nf_dbr_dbm_info_get_cmd_tlv() - send request to get nf to fw
|
||||||
* @wmi_handle: wmi handle
|
* @wmi_handle: wmi handle
|
||||||
|
* @mac_id: radio context
|
||||||
*
|
*
|
||||||
* Return: 0 for success or error code
|
* Return: 0 for success or error code
|
||||||
*/
|
*/
|
||||||
static QDF_STATUS
|
static QDF_STATUS
|
||||||
send_nf_dbr_dbm_info_get_cmd_tlv(wmi_unified_t wmi_handle)
|
send_nf_dbr_dbm_info_get_cmd_tlv(wmi_unified_t wmi_handle, uint8_t mac_id)
|
||||||
{
|
{
|
||||||
wmi_buf_t buf;
|
wmi_buf_t buf;
|
||||||
QDF_STATUS ret;
|
QDF_STATUS ret;
|
||||||
|
wmi_pdev_get_nfcal_power_fixed_param *cmd;
|
||||||
|
int32_t len = sizeof(*cmd);
|
||||||
|
|
||||||
buf = wmi_buf_alloc(wmi_handle, 0);
|
buf = wmi_buf_alloc(wmi_handle, len);
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
return QDF_STATUS_E_NOMEM;
|
return QDF_STATUS_E_NOMEM;
|
||||||
|
|
||||||
ret = wmi_unified_cmd_send(wmi_handle, buf, 0,
|
cmd = (wmi_pdev_get_nfcal_power_fixed_param *)wmi_buf_data(buf);
|
||||||
|
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||||
|
WMITLV_TAG_STRUC_wmi_pdev_get_nfcal_power_fixed_param,
|
||||||
|
WMITLV_GET_STRUCT_TLVLEN
|
||||||
|
(wmi_pdev_get_nfcal_power_fixed_param));
|
||||||
|
cmd->pdev_id = wmi_handle->ops->convert_pdev_id_host_to_target(mac_id);
|
||||||
|
|
||||||
|
ret = wmi_unified_cmd_send(wmi_handle, buf, len,
|
||||||
WMI_PDEV_GET_NFCAL_POWER_CMDID);
|
WMI_PDEV_GET_NFCAL_POWER_CMDID);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
WMI_LOGE("Sending get nfcal power cmd failed\n");
|
WMI_LOGE("Sending get nfcal power cmd failed\n");
|
||||||
@@ -20572,6 +20582,72 @@ static QDF_STATUS extract_pdev_tpc_ev_param_tlv(wmi_unified_t wmi_handle,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* extract_nfcal_power_ev_param_tlv() - extract noise floor calibration
|
||||||
|
* power param from event
|
||||||
|
* @wmi_handle: wmi handle
|
||||||
|
* @param evt_buf: pointer to event buffer
|
||||||
|
* @param param: Pointer to hold nf cal power param
|
||||||
|
*
|
||||||
|
* Return: 0 for success or error code
|
||||||
|
*/
|
||||||
|
static QDF_STATUS
|
||||||
|
extract_nfcal_power_ev_param_tlv(wmi_unified_t wmi_handle,
|
||||||
|
void *evt_buf,
|
||||||
|
wmi_host_pdev_nfcal_power_all_channels_event *param)
|
||||||
|
{
|
||||||
|
WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID_param_tlvs *param_buf;
|
||||||
|
wmi_pdev_nfcal_power_all_channels_event_fixed_param *event;
|
||||||
|
wmi_pdev_nfcal_power_all_channels_nfdBr *ch_nfdbr;
|
||||||
|
wmi_pdev_nfcal_power_all_channels_nfdBm *ch_nfdbm;
|
||||||
|
wmi_pdev_nfcal_power_all_channels_freqNum *ch_freqnum;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
param_buf =
|
||||||
|
(WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID_param_tlvs *)evt_buf;
|
||||||
|
event = param_buf->fixed_param;
|
||||||
|
ch_nfdbr = param_buf->nfdbr;
|
||||||
|
ch_nfdbm = param_buf->nfdbm;
|
||||||
|
ch_freqnum = param_buf->freqnum;
|
||||||
|
|
||||||
|
WMI_LOGD("pdev_id[%x], num_nfdbr[%d], num_nfdbm[%d] num_freqnum[%d]\n",
|
||||||
|
event->pdev_id, param_buf->num_nfdbr,
|
||||||
|
param_buf->num_nfdbm, param_buf->num_freqnum);
|
||||||
|
|
||||||
|
if (param_buf->num_nfdbr >
|
||||||
|
WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS) {
|
||||||
|
WMI_LOGE("invalid number of nfdBr");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param_buf->num_nfdbm >
|
||||||
|
WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS) {
|
||||||
|
WMI_LOGE("invalid number of nfdBm");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param_buf->num_freqnum > WMI_HOST_RXG_CAL_CHAN_MAX) {
|
||||||
|
WMI_LOGE("invalid number of freqNum");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < param_buf->num_nfdbr; i++) {
|
||||||
|
param->nfdbr[i] = (int8_t)ch_nfdbr->nfdBr;
|
||||||
|
param->nfdbm[i] = (int8_t)ch_nfdbm->nfdBm;
|
||||||
|
ch_nfdbr++;
|
||||||
|
ch_nfdbm++;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < param_buf->num_freqnum; i++) {
|
||||||
|
param->freqnum[i] = ch_freqnum->freqNum;
|
||||||
|
ch_freqnum++;
|
||||||
|
}
|
||||||
|
|
||||||
|
param->pdev_id = event->pdev_id;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef BIG_ENDIAN_HOST
|
#ifdef BIG_ENDIAN_HOST
|
||||||
/**
|
/**
|
||||||
@@ -22502,6 +22578,7 @@ struct wmi_ops tlv_ops = {
|
|||||||
.extract_pdev_tpc_ev_param = extract_pdev_tpc_ev_param_tlv,
|
.extract_pdev_tpc_ev_param = extract_pdev_tpc_ev_param_tlv,
|
||||||
.extract_pdev_tpc_config_ev_param =
|
.extract_pdev_tpc_config_ev_param =
|
||||||
extract_pdev_tpc_config_ev_param_tlv,
|
extract_pdev_tpc_config_ev_param_tlv,
|
||||||
|
.extract_nfcal_power_ev_param = extract_nfcal_power_ev_param_tlv,
|
||||||
.extract_wds_addr_event = extract_wds_addr_event_tlv,
|
.extract_wds_addr_event = extract_wds_addr_event_tlv,
|
||||||
.extract_peer_sta_ps_statechange_ev =
|
.extract_peer_sta_ps_statechange_ev =
|
||||||
extract_peer_sta_ps_statechange_ev_tlv,
|
extract_peer_sta_ps_statechange_ev_tlv,
|
||||||
@@ -22631,7 +22708,8 @@ static void populate_tlv_events_id(uint32_t *event_ids)
|
|||||||
WMI_OFFLOAD_PROB_RESP_TX_STATUS_EVENTID;
|
WMI_OFFLOAD_PROB_RESP_TX_STATUS_EVENTID;
|
||||||
event_ids[wmi_mgmt_tx_completion_event_id] =
|
event_ids[wmi_mgmt_tx_completion_event_id] =
|
||||||
WMI_MGMT_TX_COMPLETION_EVENTID;
|
WMI_MGMT_TX_COMPLETION_EVENTID;
|
||||||
|
event_ids[wmi_pdev_nfcal_power_all_channels_event_id] =
|
||||||
|
WMI_PDEV_NFCAL_POWER_ALL_CHANNELS_EVENTID;
|
||||||
event_ids[wmi_tx_delba_complete_event_id] =
|
event_ids[wmi_tx_delba_complete_event_id] =
|
||||||
WMI_TX_DELBA_COMPLETE_EVENTID;
|
WMI_TX_DELBA_COMPLETE_EVENTID;
|
||||||
event_ids[wmi_tx_addba_complete_event_id] =
|
event_ids[wmi_tx_addba_complete_event_id] =
|
||||||
|
Reference in New Issue
Block a user