summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKumar Anand <kanand@qca.qualcomm.com>2014-07-30 15:54:18 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-08-13 11:31:03 -0700
commit7a4d3f822ba3ed0046c838c2bfeff2e11b349eb1 (patch)
tree0e0f1983582e81cfe219a6d0fd97f67a45c867f7
parent2287e30f9029f6adba1639124ef428e5d99ddb80 (diff)
wlan: remove obsolete Pronto NV & PTT code
Rome CLD driver doesn't use the NV.bin or PTT code from Prima/Pronto (ISOC). Removing all the obsolete NV & PTT code from CLD driver. CRs-Fixed: 702118 Change-Id: I105529c4b025c92d1931b533975f2ab48a24070e
-rw-r--r--Android.mk12
-rw-r--r--CORE/HDD/src/wlan_hdd_ftm.c1
-rwxr-xr-xCORE/HDD/src/wlan_hdd_main.c189
-rw-r--r--CORE/SERVICES/COMMON/wma_api.h4
-rw-r--r--CORE/SERVICES/WMA/wlan_nv.c3
-rw-r--r--CORE/SERVICES/WMA/wma.h2
-rw-r--r--CORE/SERVICES/WMA/wma_isoc.c221
-rw-r--r--CORE/VOSS/inc/vos_nvitem.h472
-rw-r--r--CORE/VOSS/inc/wlan_hdd_misc.h34
-rw-r--r--CORE/VOSS/inc/wlan_nv_parser.h35
-rw-r--r--CORE/VOSS/inc/wlan_nv_parser_internal.h91
-rw-r--r--CORE/VOSS/inc/wlan_nv_stream.h56
-rw-r--r--CORE/VOSS/inc/wlan_nv_template_api.h48
-rw-r--r--CORE/VOSS/inc/wlan_nv_template_builtin.h176
-rw-r--r--CORE/VOSS/inc/wlan_nv_template_internal.h331
-rw-r--r--CORE/VOSS/inc/wlan_nv_types.h48
-rw-r--r--CORE/VOSS/src/vos_getBin.c9
-rw-r--r--CORE/VOSS/src/vos_nvitem.c1221
-rw-r--r--CORE/VOSS/src/wlan_nv_parser.c2145
-rw-r--r--CORE/VOSS/src/wlan_nv_stream_read.c118
-rw-r--r--CORE/VOSS/src/wlan_nv_template_builtin.c831
-rw-r--r--CORE/WDA/src/wlan_nv.c5376
-rw-r--r--Kbuild12
-rw-r--r--firmware_bin/WCNSS_qcom_wlan_nv.binbin29776 -> 0 bytes
-rw-r--r--wcnss/inc/pttFrameGen.h93
-rw-r--r--wcnss/inc/pttModule.h180
-rw-r--r--wcnss/inc/pttMsgApi.h962
27 files changed, 30 insertions, 12640 deletions
diff --git a/Android.mk b/Android.mk
index 784b4fcf9d61..263a952664d1 100644
--- a/Android.mk
+++ b/Android.mk
@@ -94,6 +94,18 @@ $(shell ln -sf /firmware/image/utf30.bin $(TARGET_OUT_ETC)/firmware/utf30.bin)
$(shell ln -sf /firmware/image/qwlan30.bin $(TARGET_OUT_ETC)/firmware/qwlan30.bin)
endif
+# Copy config ini files to target
+ifeq ($(call is-board-platform-in-list, msm8994),false)
+ifeq ($(WLAN_PROPRIETARY),1)
+$(shell mkdir -p $(TARGET_OUT)/etc/firmware/wlan/$(WLAN_CHIPSET))
+$(shell mkdir -p $(TARGET_OUT)/etc/wifi)
+$(shell rm -f $(TARGET_OUT)/etc/wifi/WCNSS_qcom_cfg.ini)
+$(shell rm -f $(TARGET_OUT)/etc/firmware/wlan/$(WLAN_SHIPSET)/WCNSS_cfg.dat)
+$(shell cp $(LOCAL_PATH)/firmware_bin/WCNSS_qcom_cfg.ini $(TARGET_OUT)/etc/wifi)
+$(shell cp $(LOCAL_PATH)/firmware_bin/WCNSS_cfg.dat $(TARGET_OUT)/etc/firmware/wlan/$(WLAN_CHIPSET))
+endif
+endif
+
endif # DLKM check
endif # supported target check
diff --git a/CORE/HDD/src/wlan_hdd_ftm.c b/CORE/HDD/src/wlan_hdd_ftm.c
index 068b1198589b..45654de3cfee 100644
--- a/CORE/HDD/src/wlan_hdd_ftm.c
+++ b/CORE/HDD/src/wlan_hdd_ftm.c
@@ -71,7 +71,6 @@
#include "wlan_nv.h"
#include "wlan_qct_wda.h"
#include "cfgApi.h"
-#include "pttMsgApi.h"
#include "wlan_qct_pal_device.h"
#if defined(QCA_WIFI_FTM)
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index ec16099fd152..003b75e7040b 100755
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -7486,114 +7486,6 @@ static void hdd_uninit (struct net_device *dev)
}
/**---------------------------------------------------------------------------
-
- \brief hdd_release_firmware() -
-
- This function calls the release firmware API to free the firmware buffer.
-
- \param - pFileName Pointer to the File Name.
- pCtx - Pointer to the adapter .
-
-
- \return - 0 for success, non zero for failure
-
- --------------------------------------------------------------------------*/
-
-VOS_STATUS hdd_release_firmware(char *pFileName,v_VOID_t *pCtx)
-{
- VOS_STATUS status = VOS_STATUS_SUCCESS;
- hdd_context_t *pHddCtx = (hdd_context_t*)pCtx;
- ENTER();
-
-
- if (!strcmp(WLAN_FW_FILE, pFileName)) {
-
- hddLog(VOS_TRACE_LEVEL_INFO_HIGH,"%s: Loaded firmware file is %s",__func__,pFileName);
-
- if(pHddCtx->fw) {
- release_firmware(pHddCtx->fw);
- pHddCtx->fw = NULL;
- }
- else
- status = VOS_STATUS_E_FAILURE;
- }
- else if (!strcmp(WLAN_NV_FILE,pFileName)) {
- if(pHddCtx->nv) {
- release_firmware(pHddCtx->nv);
- pHddCtx->nv = NULL;
- }
- else
- status = VOS_STATUS_E_FAILURE;
-
- }
-
- EXIT();
- return status;
-}
-
-/**---------------------------------------------------------------------------
-
- \brief hdd_request_firmware() -
-
- This function reads the firmware file using the request firmware
- API and returns the the firmware data and the firmware file size.
-
- \param - pfileName - Pointer to the file name.
- - pCtx - Pointer to the adapter .
- - ppfw_data - Pointer to the pointer of the firmware data.
- - pSize - Pointer to the file size.
-
- \return - VOS_STATUS_SUCCESS for success, VOS_STATUS_E_FAILURE for failure
-
- --------------------------------------------------------------------------*/
-
-
-VOS_STATUS hdd_request_firmware(char *pfileName,v_VOID_t *pCtx,v_VOID_t **ppfw_data, v_SIZE_t *pSize)
-{
- int status;
- VOS_STATUS retval = VOS_STATUS_SUCCESS;
- hdd_context_t *pHddCtx = (hdd_context_t*)pCtx;
- ENTER();
-
- if( (!strcmp(WLAN_FW_FILE, pfileName)) ) {
-
- status = request_firmware(&pHddCtx->fw, pfileName, pHddCtx->parent_dev);
-
- if(status || !pHddCtx->fw || !pHddCtx->fw->data) {
- hddLog(VOS_TRACE_LEVEL_FATAL, "%s: Firmware %s download failed",
- __func__, pfileName);
- retval = VOS_STATUS_E_FAILURE;
- }
-
- else {
- *ppfw_data = (v_VOID_t *)pHddCtx->fw->data;
- *pSize = pHddCtx->fw->size;
- hddLog(VOS_TRACE_LEVEL_INFO, "%s: Firmware size = %d",
- __func__, *pSize);
- }
- }
- else if(!strcmp(WLAN_NV_FILE, pfileName)) {
-
- status = request_firmware(&pHddCtx->nv, pfileName, pHddCtx->parent_dev);
-
- if(status || !pHddCtx->nv || !pHddCtx->nv->data) {
- hddLog(VOS_TRACE_LEVEL_FATAL, "%s: nv %s download failed",
- __func__, pfileName);
- retval = VOS_STATUS_E_FAILURE;
- }
-
- else {
- *ppfw_data = (v_VOID_t *)pHddCtx->nv->data;
- *pSize = pHddCtx->nv->size;
- hddLog(VOS_TRACE_LEVEL_INFO, "%s: nv file size = %d",
- __func__, *pSize);
- }
- }
-
- EXIT();
- return retval;
-}
-/**---------------------------------------------------------------------------
\brief hdd_full_pwr_cbk() - HDD full power callbackfunction
This is the function invoked by SME to inform the result of a full power
@@ -10775,80 +10667,6 @@ int hdd_wlan_notify_modem_power_state(int state)
/**---------------------------------------------------------------------------
- \brief hdd_update_config_from_nv() - Function to update the contents of
- the running configuration with parameters taken from NV storage
-
- \param - pHddCtx - Pointer to the HDD global context
-
- \return - VOS_STATUS_SUCCESS if successful
-
- --------------------------------------------------------------------------*/
-static VOS_STATUS hdd_update_config_from_nv(hdd_context_t* pHddCtx)
-{
- v_BOOL_t itemIsValid = VOS_FALSE;
- VOS_STATUS status;
- v_MACADDR_t macFromNV[VOS_MAX_CONCURRENCY_PERSONA];
- v_U8_t macLoop;
-
- /*If the NV is valid then get the macaddress from nv else get it from qcom_cfg.ini*/
- status = vos_nv_getValidity(VNV_FIELD_IMAGE, &itemIsValid);
- if(status != VOS_STATUS_SUCCESS)
- {
- hddLog(VOS_TRACE_LEVEL_ERROR," vos_nv_getValidity() failed");
- return VOS_STATUS_E_FAILURE;
- }
-
- if (itemIsValid == VOS_TRUE)
- {
- hddLog(VOS_TRACE_LEVEL_INFO_HIGH," Reading the Macaddress from NV");
- status = vos_nv_readMultiMacAddress((v_U8_t *)&macFromNV[0].bytes[0],
- VOS_MAX_CONCURRENCY_PERSONA);
- if(status != VOS_STATUS_SUCCESS)
- {
- /* Get MAC from NV fail, not update CFG info
- * INI MAC value will be used for MAC setting */
- hddLog(VOS_TRACE_LEVEL_ERROR," vos_nv_readMacAddress() failed");
- return VOS_STATUS_E_FAILURE;
- }
-
- /* If first MAC is not valid, treat all others are not valid
- * Then all MACs will be got from ini file */
- if(vos_is_macaddr_zero(&macFromNV[0]))
- {
- /* MAC address in NV file is not configured yet */
- hddLog(VOS_TRACE_LEVEL_WARN, "Invalid MAC in NV file");
- return VOS_STATUS_E_INVAL;
- }
-
- /* Get MAC address from NV, update CFG info */
- for(macLoop = 0; macLoop < VOS_MAX_CONCURRENCY_PERSONA; macLoop++)
- {
- if(vos_is_macaddr_zero(&macFromNV[macLoop]))
- {
- hddLog(VOS_TRACE_LEVEL_ERROR,
- "not valid MAC from NV for %d", macLoop);
- /* This MAC is not valid, skip it
- * This MAC will be got from ini file */
- }
- else
- {
- vos_mem_copy((v_U8_t *)&pHddCtx->cfg_ini->intfMacAddr[macLoop].bytes[0],
- (v_U8_t *)&macFromNV[macLoop].bytes[0],
- VOS_MAC_ADDR_SIZE);
- }
- }
- }
- else
- {
- hddLog(VOS_TRACE_LEVEL_ERROR, "NV ITEM, MAC Not valid");
- return VOS_STATUS_E_FAILURE;
- }
-
- return VOS_STATUS_SUCCESS;
-}
-
-/**---------------------------------------------------------------------------
-
\brief hdd_post_voss_start_config() - HDD post voss start config helper
\param - pAdapter - Pointer to the HDD
@@ -11594,13 +11412,6 @@ int hdd_wlan_startup(struct device *dev, v_VOID_t *hif_sc)
goto err_wiphy_unregister;
}
- // Get mac addr from platform driver
- if (VOS_STATUS_SUCCESS != hdd_update_config_from_nv(pHddCtx))
- {
- // Apply the NV to cfg.dat
- /* Prima Update MAC address only at here */
- }
-
if ( VOS_STATUS_SUCCESS != hdd_update_mac_config( pHddCtx ) )
{
hddLog(VOS_TRACE_LEVEL_WARN,
diff --git a/CORE/SERVICES/COMMON/wma_api.h b/CORE/SERVICES/COMMON/wma_api.h
index 78a886461053..a01f7184138a 100644
--- a/CORE/SERVICES/COMMON/wma_api.h
+++ b/CORE/SERVICES/COMMON/wma_api.h
@@ -88,10 +88,6 @@ typedef enum {
#define QPOWER_CMD 6
#define GTX_CMD 7
-#ifdef QCA_WIFI_ISOC
-VOS_STATUS wma_nv_download_start(v_VOID_t *vos_context);
-#endif
-
VOS_STATUS wma_pre_start(v_VOID_t *vos_context);
VOS_STATUS wma_mc_process_msg( v_VOID_t *vos_context, vos_msg_t *msg );
diff --git a/CORE/SERVICES/WMA/wlan_nv.c b/CORE/SERVICES/WMA/wlan_nv.c
index b7ee5b99f8fe..d273e218ef69 100644
--- a/CORE/SERVICES/WMA/wlan_nv.c
+++ b/CORE/SERVICES/WMA/wlan_nv.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012 The Linux Foundation. All rights reserved.
+ * Copyright (c) "2012,2014" The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -41,6 +41,7 @@
#ifndef WLAN_NV_C
#define WLAN_NV_C
+#include "palTypes.h"
#include "wlan_nv.h"
const sHalNv nvDefaults =
diff --git a/CORE/SERVICES/WMA/wma.h b/CORE/SERVICES/WMA/wma.h
index 9b82dc6d21c5..9e6212d1c463 100644
--- a/CORE/SERVICES/WMA/wma.h
+++ b/CORE/SERVICES/WMA/wma.h
@@ -1218,8 +1218,6 @@ void wma_get_modeselect(tp_wma_handle wma, u_int32_t *modeSelect);
VOS_STATUS wma_cfg_download_isoc(v_VOID_t *vos_context,
tp_wma_handle wma_handle);
-VOS_STATUS wma_nv_download_start(v_VOID_t *handle);
-
VOS_STATUS wma_cfg_nv_get_hal_message_buffer(tp_wma_handle wma_handle,
u_int16_t uReqType, u_int16_t usBufferLen,
u_int8_t **pMsgBuffer, u_int16_t *pusDataOffset,
diff --git a/CORE/SERVICES/WMA/wma_isoc.c b/CORE/SERVICES/WMA/wma_isoc.c
index 4e828f79eb5c..9f0113aed64e 100644
--- a/CORE/SERVICES/WMA/wma_isoc.c
+++ b/CORE/SERVICES/WMA/wma_isoc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -1048,225 +1048,6 @@ handle_failure:
return VOS_STATUS_E_FAILURE;
}
-/* function:
- * Descriptin:
- * Args:
- * Retruns:
- */
-VOS_STATUS wma_nv_download_start(void *vos_context)
-{
- A_STATUS status = A_OK;
- VOS_STATUS vos_status = VOS_STATUS_SUCCESS;
- pVosContextType pVosContext = (pVosContextType)vos_context;
- tp_wma_handle wma_handle =
- (tp_wma_handle)vos_get_context(VOS_MODULE_ID_WDA, vos_context);
- tHalNvImgDownloadReqMsg halNvImgDownloadParam;
- v_U8_t *send_buf = NULL;
- v_U8_t *src_buf = NULL;
- v_U16_t data_offset = 0;
- v_U16_t send_size = 0;
- v_U16_t last_frag_len = 0;
- v_SINT_t length = 0;
- v_U16_t no_pkts = 0;
- v_U16_t frag_num = 0;
-
- WMA_LOGD("Enter");
- /* Fill hal msg*/
- /* halMsgHeader+driverType+configbuffer*/
- /*-----------------------------------------------------------------------
- Get message buffer
- -----------------------------------------------------------------------*/
- vos_mem_zero(&halNvImgDownloadParam, sizeof (halNvImgDownloadParam));
- vos_nv_getNVBuffer((void**)&src_buf, &length);
-
- no_pkts = TOTALFRAGMENTS(length);
- last_frag_len = length % FRAGMENT_SIZE;
-
- WMA_LOGD("no_pkts = %hu, last_frag_len = %hu",
- no_pkts, last_frag_len);
- // Download FRAGMENT_SIZE packets
- if (no_pkts > 1) {
- if (( VOS_STATUS_SUCCESS != wma_cfg_nv_get_hal_message_buffer( wma_handle, FW_NV_DOWNLOAD_REQ,
- sizeof(halNvImgDownloadParam.nvImageReqParams) + FRAGMENT_SIZE,
- &send_buf, &data_offset, &send_size))||
- ( send_size < (data_offset + sizeof(halNvImgDownloadParam.nvImageReqParams) + FRAGMENT_SIZE ))
- ) {
- WMA_LOGE("Unable to get send buffer in start req");
- vos_status = VOS_STATUS_E_FAILURE;
- VOS_ASSERT(0);
- goto end;
- }
-
- /*HAL maintaining the fragment count as 0,1,2...n*/
- while (frag_num < no_pkts - 1) {
- adf_nbuf_t msg = NULL;
- v_U32_t *msg_word = NULL;
- HTC_PACKET htc_packet;
-
- halNvImgDownloadParam.nvImageReqParams.isLastFragment = 0;
- halNvImgDownloadParam.nvImageReqParams.fragNumber = frag_num;
- halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = FRAGMENT_SIZE;
-
- vos_mem_copy(send_buf + data_offset,
- &halNvImgDownloadParam.nvImageReqParams, sizeof(tHalNvImgDownloadReqParams));
-
- /* Appending the NV image fragment */
- vos_mem_copy(send_buf + data_offset + sizeof(tHalNvImgDownloadReqParams),
- (void *)(src_buf + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
- FRAGMENT_SIZE);
-
- frag_num++;
-
- /* Fill HTC packet */
- msg = adf_nbuf_alloc(
- wma_handle->adf_dev,
- send_size,
- /* reserve room for HTC header */
- HTC_HEADER_LEN + HTC_HDR_ALIGNMENT_PADDING, 4, FALSE);
-
- if (!msg) {
- vos_status = VOS_STATUS_E_NOMEM;
- goto end;
- }
- /* set the length of the message */
- adf_nbuf_put_tail(msg, send_size);
- /* fill in the message contents */
- msg_word = (v_U32_t *) adf_nbuf_data(msg);
- vos_mem_copy(msg_word, send_buf, send_size);
- /* rewind beyond alignment pad to get to the HTC header reserved area */
- adf_nbuf_push_head(msg, HTC_HDR_ALIGNMENT_PADDING);
-
- SET_HTC_PACKET_INFO_TX(
- &htc_packet,
- wma_handle,
- adf_nbuf_data(msg),
- adf_nbuf_len(msg),
- wma_handle->cfg_nv.endpoint_id,
- 0);
-
- SET_HTC_PACKET_NET_BUF_CONTEXT(&htc_packet, msg);
-
- vos_event_reset(&wma_handle->cfg_nv_rx_complete);
-
- status = HTCSendPkt(wma_handle->htc_handle, &htc_packet);
- if (status != A_OK)
- {
- WMA_LOGE(" failed to send all nv fragments\n");
- break;
- }
-
- // waiting for next send
- vos_status =
- vos_wait_single_event(&(wma_handle->cfg_nv_rx_complete),
- WMA_CFG_NV_DNLD_TIMEOUT);
- if (VOS_STATUS_SUCCESS != vos_status) {
- WMA_LOGP("failed to download the cfg");
- goto end;
- }
- }
-
- if (send_buf) {
- vos_mem_free(send_buf);
- send_buf = NULL;
- }
- }
-
- VOS_ASSERT( frag_num == no_pkts - 1);
- if (last_frag_len) {
- adf_nbuf_t msg = NULL;
- v_U32_t *msg_word = NULL;
- HTC_PACKET htc_packet;
-
- if (( VOS_STATUS_SUCCESS != wma_cfg_nv_get_hal_message_buffer( wma_handle, FW_NV_DOWNLOAD_REQ,
- sizeof(halNvImgDownloadParam.nvImageReqParams) + last_frag_len,
- &send_buf, &data_offset, &send_size))||
- ( send_size < (data_offset + sizeof(halNvImgDownloadParam.nvImageReqParams) + last_frag_len ))
- ) {
- WMA_LOGP("Unable to get send buffer in start req");
- vos_status = VOS_STATUS_E_FAILURE;
- VOS_ASSERT(0);
- goto end;
- }
-
- /*HAL maintaining the fragment count as 0,1,2...n*/
-
- halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
- halNvImgDownloadParam.nvImageReqParams.fragNumber = frag_num;
- halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = last_frag_len;
-
- vos_mem_copy( send_buf + data_offset,
- &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
-
- /* Appending the NV image fragment */
- vos_mem_copy( send_buf + data_offset + sizeof(tHalNvImgDownloadReqParams),
- (void *)(src_buf + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
- last_frag_len);
-
- frag_num++;
-
- /* Fill HTC packet */
- msg = adf_nbuf_alloc(
- wma_handle->adf_dev,
- send_size,
- /* reserve room for HTC header */
- HTC_HEADER_LEN + HTC_HDR_ALIGNMENT_PADDING, 4, FALSE);
-
- if (!msg) {
- status = A_NO_MEMORY;
- goto end;
- }
- /* set the length of the message */
- adf_nbuf_put_tail(msg, send_size);
- /* fill in the message contents */
- msg_word = (v_U32_t *) adf_nbuf_data(msg);
- vos_mem_copy(msg_word, send_buf, send_size);
- /* rewind beyond alignment pad to get to the HTC header reserved area */
- adf_nbuf_push_head(msg, HTC_HDR_ALIGNMENT_PADDING);
-
- SET_HTC_PACKET_INFO_TX(
- &htc_packet,
- wma_handle,
- adf_nbuf_data(msg),
- adf_nbuf_len(msg),
- wma_handle->cfg_nv.endpoint_id,
- 0)
-
- SET_HTC_PACKET_NET_BUF_CONTEXT(&htc_packet, msg);
-
- vos_event_reset(&wma_handle->cfg_nv_rx_complete);
- status = HTCSendPkt(wma_handle->htc_handle, &htc_packet);
- if (status != A_OK) {
- WMA_LOGP("failed to download the nv\n");
- }
-
- /* to guarantee htc_packet is available in TX complete */
- vos_status =
- vos_wait_single_event(&(wma_handle->cfg_nv_rx_complete),
- WMA_CFG_NV_DNLD_TIMEOUT);
- if (VOS_STATUS_SUCCESS != vos_status) {
- WMA_LOGP("failed to download the cfg");
- goto end;
- }
-
- vos_status = vos_event_set(&pVosContext->wdaCompleteEvent);
- if (vos_status) {
- WMA_LOGE("Failed to set the event");
- }
-
- if (send_buf) {
- vos_mem_free(send_buf);
- send_buf = NULL;
- }
- }
-end:
- if(send_buf) {
- vos_mem_free(send_buf);
- send_buf = NULL;
- }
-
- WMA_LOGD("Exit");
- return vos_status;
-}
/* function : wma_get_hal_drv_type
* Descriptin :
* Args :
diff --git a/CORE/VOSS/inc/vos_nvitem.h b/CORE/VOSS/inc/vos_nvitem.h
index f8bef51677f9..9270fcf08e09 100644
--- a/CORE/VOSS/inc/vos_nvitem.h
+++ b/CORE/VOSS/inc/vos_nvitem.h
@@ -48,107 +48,12 @@
/*--------------------------------------------------------------------------
Preprocessor definitions and constants
------------------------------------------------------------------------*/
-// NV Items with their parameters are specified below
-// Parameters include: enum label in VNV_TYPE (_name),
-// element count (_cnt), element size (_size),
-// enum of first element in NV module (_label)
-
-/*
- * The VOS NV Item Table is compliant to AMSS NV service files of:
- * //source/qcom/qct/wconnect/wlan/private/csw/nv/ @ CL 431102
- *
- * VNV_REGULATORY_DOMAIN_TABLE - contains regulatory domain information;
- * the table is stored as $(REGDOMAIN_COUNT) NV items where each NV item
- * contains information for one domain; see definition of v_REGDOMAIN_t
- * for the regulatory domains
- *
- * VNV_FIELD_IMAGE - contains various elements such as MAC addresses
- *
- * VNV_RATE_TO_POWER_TABLE - table of power for each of 25 PHY rates
- *
- * VNV_DEFAULT_LOCATION - default country code and regulatory domain
- *
- * VNV_MAXIMUM_TX_POWER
- *
- * VNV_RX_SENSITIVITY - table of sensitivity for each of %(MAC_RATE_COUNT) MAC
- * rates; see definition of v_MAC_RATE_t for the MAC rates
- *
- * VNV_NETWORK_TYPE - either A, B or G type
- *
- * VOV_QFUSE - 16 byte QFUSE data
- */
-#define VNV_ITEM_TABLE \
-ADD_VNV_ITEM( VNV_REGULARTORY_DOMAIN_TABLE, REGDOMAIN_COUNT, 144, \
- NV_WLAN_REGULATORY_DOMAIN_FCC_I ) \
-ADD_VNV_ITEM( VNV_FIELD_IMAGE, 1, 52, NV_WLAN_FIELD_IMAGE_I ) \
-ADD_VNV_ITEM( VNV_RATE_TO_POWER_TABLE, 2, 66, NV_WLAN_RATE_TO_POWER_LIST_I )\
-ADD_VNV_ITEM( VNV_DEFAULT_LOCATION, 1, 4, NV_WLAN_DEFAULT_LOCATION_INFO_I ) \
-ADD_VNV_ITEM( VNV_TPC_POWER_TABLE, 14, 128, NV_WLAN_TPC_POWER_TABLE_I ) \
-ADD_VNV_ITEM( VNV_TPC_PDADC_OFFSETS, 14, 2, NV_WLAN_TPC_PDADC_OFFSETS_I ) \
-ADD_VNV_ITEM( VNV_MAXIMUM_TX_POWER, 1, 1, NV_WLAN_MAX_TX_POWER_I ) \
-ADD_VNV_ITEM( VNV_RX_SENSITIVITY, 1, MAC_RATE_COUNT, NV_WLAN_RX_SENSITIVITY_I)\
-ADD_VNV_ITEM( VNV_NETWORK_TYPE, 1, 1, NV_WLAN_NETWORK_TYPE_I ) \
-ADD_VNV_ITEM( VNV_CAL_MEMORY, 1, 3460, NV_WLAN_CAL_MEMORY_I ) \
-ADD_VNV_ITEM( VNV_FW_CONFIG, 1, 32, NV_WLAN_FW_CONFIG_I ) \
-ADD_VNV_ITEM( VNV_RSSI_CHANNEL_OFFSETS, 2, 56, NV_WLAN_RSSI_CHANNEL_OFFSETS_I ) \
-ADD_VNV_ITEM( VNV_HW_CAL_VALUES, 1, 48, NV_WLAN_HW_CAL_VALUES_I ) \
-ADD_VNV_ITEM( VNV_ANTENNA_PATH_LOSS, 14, 2, NV_WLAN_ANTENNA_PATH_LOSS_I ) \
-ADD_VNV_ITEM( VNV_PACKET_TYPE_POWER_LIMITS, 42, 2, NV_WLAN_PACKET_TYPE_POWER_LIMITS_I ) \
-ADD_VNV_ITEM( VNV_OFDM_CMD_PWR_OFFSET, 1, 2, NV_WLAN_OFDM_CMD_PWR_OFFSET_I ) \
-ADD_VNV_ITEM( VNV_TX_BB_FILTER_MODE, 1, 4, NV_TX_BB_FILTER_MODE_I ) \
-ADD_VNV_ITEM( VNV_FREQUENCY_FOR_1_3V_SUPPLY, 1, 4, NV_FREQUENCY_FOR_1_3V_SUPPLY_I ) \
-ADD_VNV_ITEM( VNV_TABLE_VIRTUAL_RATE, 1, 4, VNV_TABLE_VIRTUAL_RATE_I ) \
-
-
#define VOS_COUNTRY_CODE_LEN 2
#define VOS_MAC_ADDRESS_LEN 6
-#define VOS_NV_FREQUENCY_FOR_1_3V_SUPPLY_3P2MH 0 //3.2 Mhz
-#define VOS_NV_FREQUENCY_FOR_1_3V_SUPPLY_1P6MH 1 //1.6 Mhz
-
-
-/*!
- * The path (from the root of the DPP_FOLDER_PATH\QCOM) to the file containing
- * the CLPC provisioning data. This is being temporarily put here. This should go
- * to esp_dpp.h where the WLAN_PROVISION_DATA is present.
- */
-#define CLPC_PROVISION_DATA L"WLAN_CLPC.PROVISION"
/*--------------------------------------------------------------------------
Type declarations
------------------------------------------------------------------------*/
-// enum of RX sensitivity table index
-typedef enum
-{
- // 11b
- MAC_RATE_11B_1_MBPS,
- MAC_RATE_11B_2_MBPS,
- MAC_RATE_11B_5_5_MBPS,
- MAC_RATE_11B_11_MBPS,
-
- // 11g
- MAC_RATE_11G_6_MBPS,
- MAC_RATE_11G_9_MBPS,
- MAC_RATE_11G_12_MBPS,
- MAC_RATE_11G_18_MBPS,
- MAC_RATE_11G_24_MBPS,
- MAC_RATE_11G_36_MBPS,
- MAC_RATE_11G_48_MBPS,
- MAC_RATE_11G_54_MBPS,
-
- // 11n
- MAC_RATE_11N_MCS_0,
- MAC_RATE_11N_MCS_1,
- MAC_RATE_11N_MCS_2,
- MAC_RATE_11N_MCS_3,
- MAC_RATE_11N_MCS_4,
- MAC_RATE_11N_MCS_5,
- MAC_RATE_11N_MCS_6,
- MAC_RATE_11N_MCS_7,
-
- MAC_RATE_COUNT
-
-} v_MAC_RATE_t;
-
// enum of regulatory doamains in WLAN
typedef enum
{
@@ -178,19 +83,9 @@ typedef enum
}
v_CountryInfoSource_t;
-// enum of supported NV items in VOSS
typedef enum
{
-#define ADD_VNV_ITEM(_name, _cnt, _size, _label) _name,
- VNV_ITEM_TABLE
-#undef ADD_VNV_ITEM
- VNV_TYPE_COUNT
-}
-VNV_TYPE;
-
-typedef enum
-{
-/* DFS Session refers to successful SAP session operating in DFS channel */
+ /* DFS Session refers to successful SAP session operating in DFS channel */
DFS_CAC_NEVER_DONE, /* CAC was never done for this current ap / ap-ap */
DFS_CAC_IN_PROGRESS, /* CAC is in progress for this DFS session */
DFS_CAC_ALREADY_DONE, /* CAC already for SAP starting this DFS session */
@@ -200,26 +95,6 @@ eDFS_CAC_STATUS;
// country code type
typedef v_U8_t v_COUNTRYCODE_t[VOS_COUNTRY_CODE_LEN];
-// MAC address type
-typedef v_U8_t v_MAC_ADDRESS_t[VOS_MAC_ADDRESS_LEN];
-
-/*-------------------------------------------------------------------------
- Function declarations and documenation
- ------------------------------------------------------------------------*/
-/**------------------------------------------------------------------------
-
- \brief vos_nv_init() - initialize the NV module
-
- The \a vos_nv_init() initializes the NV module. This read the binary
- file for country code and regulatory domain information.
-
- \return VOS_STATUS_SUCCESS - module is initialized successfully
- otherwise - module is not initialized
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_init(void);
-
/**------------------------------------------------------------------------
\brief vos_nv_getRegDomainFromCountryCode() - get the regulatory domain of
@@ -273,291 +148,6 @@ VOS_STATUS vos_nv_getSupportedCountryCode( v_BYTE_t *pBuffer, v_SIZE_t *pBufferS
v_SIZE_t paddingSize );
/**------------------------------------------------------------------------
-
- \brief vos_nv_setValidity() - set the validity of an NV item.
-
- The \a vos_nv_setValidity() validates and invalidates an NV item. The
- validity information is stored in NV memory.
- One would get the VOS_STATUS_E_EXISTS error when reading an invalid item.
- An item becomes valid when one has written to it successfully.
-
- \param type - NV item type
-
- \param itemIsValid - boolean value indicating the item's validity
-
- \return VOS_STATUS_SUCCESS - validity is set successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAILURE - unknown error
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_setValidity( VNV_TYPE type, v_BOOL_t itemIsValid );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_getValidity() - get the validity of an NV item.
-
- The \a vos_nv_getValidity() indicates if an NV item is valid. The
- validity information is stored in NV memory.
- One would get the VOS_STATUS_E_EXISTS error when reading an invalid item.
- An item becomes valid when one has written to it successfully.
-
- \param type - NV item type
-
- \param pItemIsValid- pointer to the boolean value indicating the item's
- validity
-
- \return VOS_STATUS_SUCCESS - validity is determined successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAILURE - unknown error
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_getValidity( VNV_TYPE type, v_BOOL_t *pItemIsValid );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_read() - read a NV item to an output buffer
-
- The \a vos_nv_read() reads a NV item to an output buffer. If the item is
- an array, this function would read the entire array. One would get a
- VOS_STATUS_E_EXISTS error when reading an invalid item.
-
- For error conditions of VOS_STATUS_E_EXISTS and VOS_STATUS_E_FAILURE,
- if a default buffer is provided (with a non-NULL value),
- the default buffer content is copied to the output buffer.
-
- \param type - NV item type
-
- \param outputBuffer - output buffer
-
- \param defaultBuffer - default buffer
-
- \param bufferSize - output buffer size
-
- \return VOS_STATUS_SUCCESS - NV item is read successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAULT - defaultBuffer point is NULL
- VOS_STATUS_E_EXISTS - NV type is unsupported
- VOS_STATUS_E_FAILURE - unknown error
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_read( VNV_TYPE type, v_VOID_t *outputBuffer,
- v_VOID_t *defaultBuffer, v_SIZE_t bufferSize );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_readAtIndex() - read an element of a NV array to an output
- buffer
-
- The \a vos_nv_readAtIndex() reads an element of a NV item to an output
- buffer. If the item is not array, this function only works for index of 0.
- One would get a VOS_STATUS_E_EXISTS error when reading an invalid item.
-
- For error conditions of VOS_STATUS_E_EXISTS and VOS_STATUS_E_FAILURE,
- if a default buffer is provided (with a non-NULl value),
- the default buffer content is copied to the output buffer.
-
- \param type - NV item type
-
- \param index - NV array index
-
- \param outputBuffer - output buffer
-
- \param defaultBuffer - default buffer
-
- \param bufferSize - output buffer size
-
- \return VOS_STATUS_SUCCESS - NV item is read successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAULT - defaultBuffer point is NULL
- VOS_STATUS_E_EXISTS - NV type is unsupported
- VOS_STATUS_E_FAILURE - unknown error
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readAtIndex( VNV_TYPE type, v_UINT_t index,
- v_VOID_t *outputBuffer, v_VOID_t *defaultBuffer, v_SIZE_t bufferSize );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_write() - write to a NV item from an input buffer
-
- The \a vos_nv_write() writes to a NV item from an input buffer. This would
- validate the NV item if the write operation is successful.
-
- \param type - NV item type
-
- \param inputBuffer - input buffer
-
- \param inputBufferSize - input buffer size
-
- \return VOS_STATUS_SUCCESS - NV item is read successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAULT - outputBuffer pointer is NULL
- VOS_STATUS_E_EXISTS - NV type is unsupported
- VOS_STATUS_E_FAILURE - unknown error
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_write( VNV_TYPE type, v_VOID_t *inputBuffer,
- v_SIZE_t inputBufferSize );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_writeAtIndex() - write to an element of a NV array from an
- input buffer
-
- The \a vos_nv_writeAtIndex() writes to an element of a NV array from an
- input buffer. If the item is not an array, this function only works for
- an array index of 0. This would automatically validate the NV item if the
- write operation is successful.
-
- \param type - NV item type
-
- \param index - NV array index
-
- \param inputBuffer - input buffer
-
- \param inputBufferSize - input buffer size
-
- \return VOS_STATUS_SUCCESS - NV item is read successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAULT - outputBuffer pointer is NULL
- VOS_STATUS_E_EXISTS - NV type is unsupported
- VOS_STATUS_E_FAILURE - unknown error
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_writeAtIndex( VNV_TYPE type, v_UINT_t index,
- v_VOID_t *inputBuffer, v_SIZE_t inputBufferSize );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_getElementCount() - return element count of a NV array
-
- The \a vos_nv_getElementCount() returns element count of a NV array
-
- \param type - NV item type
-
- \return count if type is valid; 0 otherwise
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_INLINE_FN v_SIZE_t vos_nv_getElementCount( VNV_TYPE type )
-{
- switch (type)
- {
-#define ADD_VNV_ITEM(_name, _cnt, _size, _label) case (_name): return (_cnt);
- VNV_ITEM_TABLE
-#undef ADD_VNV_ITEM
- default:
- return 0;
- }
-}
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_getElementSize() - return size of a NV element
-
- The \a vos_nv_getElementSize() returns size of a NV element.
-
- \param type - NV item type
-
- \return size if type is valid; 0 otherwise
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_INLINE_FN v_SIZE_t vos_nv_getElementSize( VNV_TYPE type )
-{
- switch (type)
- {
-#define ADD_VNV_ITEM(_name, _cnt, _size, _label) case (_name): return (_size);
- VNV_ITEM_TABLE
-#undef ADD_VNV_ITEM
- default:
- return 0;
- }
-}
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_getItemSize() - return size of a NV item
-
- The \a vos_nv_getItemSize() returns size of a NV item.
-
- \param type - NV item type
-
- \return size of a NV item array if type is valid; 0 otherwise
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_INLINE_FN v_SIZE_t vos_nv_getItemSize( VNV_TYPE type )
-{
- return vos_nv_getElementCount(type) * vos_nv_getElementSize(type);
-}
-
-// TODO: HAL NV interface should be used to access individual NV items
-// instead of below functions once that is ready
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_readTxAntennaCount() - return number of TX antenna
-
- \param pTxAntennaCount - antenna count
-
- \return status of the NV read operation
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readTxAntennaCount( v_U8_t *pTxAntennaCount );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_readRxAntennaCount() - return number of RX antenna
-
- \param pRxAntennaCount - antenna count
-
- \return status of the NV read operation
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readRxAntennaCount( v_U8_t *pRxAntennaCount );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_readMacAddress() - return the MAC address
-
- \param pMacAddress - MAC address
-
- \return status of the NV read operation
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readMacAddress( v_MAC_ADDRESS_t pMacAddress );
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_readMultiMacAddress() - return the Multiple MAC addresses
-
- \param pMacAddress - MAC address
- \param macCount - Count of valid MAC addresses to get from NV field
-
- \return status of the NV read operation
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readMultiMacAddress( v_U8_t* pMacAddr, v_U8_t macCount);
-
-/**------------------------------------------------------------------------
\brief vos_nv_getDefaultRegDomain() - return the default regulatory domain
\return default regulatory domain
\sa
@@ -633,61 +223,6 @@ VOS_STATUS vos_nv_open(void);
VOS_STATUS vos_nv_close(void);
/**------------------------------------------------------------------------
- \brief vos_nv_getNVBuffer -
- \param pBuffer - to return the buffer address
- pSize - buffer size.
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_getNVBuffer(v_VOID_t **pNvBuffer, v_SIZE_t *pSize);
-
-/**------------------------------------------------------------------------
- \brief vos_nv_getNVEncodedBuffer -
- \param pBuffer - to return the buffer address
- pSize - buffer size.
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_getNVEncodedBuffer(v_VOID_t **pNvBuffer, v_SIZE_t *pSize);
-
-
-/**------------------------------------------------------------------------
- \brief vos_nv_getNVDictionary -
- \param pBuffer - to return the buffer address
- pSize - buffer size.
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_getNVDictionary(v_VOID_t **pNvBuffer, v_SIZE_t *pSize);
-
-/**------------------------------------------------------------------------
- \brief vos_nv_isEmbeddedNV() - NV.bin is embedded or not
-
- \return VOS_STATUS_SUCCESS - if NV is embedded
- otherwise - NOT embedded
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_isEmbeddedNV(void);
-
-/**------------------------------------------------------------------------
- \brief vos_nv_setNVEncodedBuffer() - set Encode Buffer
-
- \return VOS_STATUS_SUCCESS - if able to set encoded buffer successfully
- otherwise - NOT able to set encoded data
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_setNVEncodedBuffer(v_U8_t *pNvBuffer, v_SIZE_t size);
-
-/**------------------------------------------------------------------------
- \brief vos_nv_get_dictionary_data() - read dictionary data
-
- \return VOS_STATUS_SUCCESS - if dictionary data is read successfully
- otherwise - NOT able to read dictionary data
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_get_dictionary_data(void);
-
-/**------------------------------------------------------------------------
\brief vos_nv_setRegDomain -
\param clientCtxt - Client Context, Not used for PRIMA
regId - Regulatory Domain ID
@@ -707,11 +242,8 @@ VOS_STATUS vos_nv_setRegDomain(void * clientCtxt, v_REGDOMAIN_t regId,
* DFS
\sa
-------------------------------------------------------------------------*/
+eNVChannelEnabledType vos_nv_getChannelEnabledState(v_U32_t rfChannel);
-eNVChannelEnabledType vos_nv_getChannelEnabledState
-(
- v_U32_t rfChannel
-);
#define VOS_IS_DFS_CH(channel) (vos_nv_getChannelEnabledState((channel)) == \
NV_CHANNEL_DFS)
diff --git a/CORE/VOSS/inc/wlan_hdd_misc.h b/CORE/VOSS/inc/wlan_hdd_misc.h
index fd31342453a4..8b94ccfadb82 100644
--- a/CORE/VOSS/inc/wlan_hdd_misc.h
+++ b/CORE/VOSS/inc/wlan_hdd_misc.h
@@ -29,53 +29,19 @@
#define WLAN_HDD_MISC_H
#ifdef MSM_PLATFORM
-#ifdef QC_WLAN_CHIPSET_QCA_CLD
#define WLAN_INI_FILE "wlan/qca_cld/WCNSS_qcom_cfg.ini"
#define WLAN_CFG_FILE "wlan/qca_cld/WCNSS_cfg.dat"
-#define WLAN_FW_FILE ""
-#define WLAN_NV_FILE "wlan/qca_cld/WCNSS_qcom_wlan_nv.bin"
-#define WLAN_DICT_FILE "wlan/qca_cld/WCNSS_qcom_wlan_dictionary.dat"
-#define WLAN_COUNTRY_INFO_FILE "wlan/qca_cld/WCNSS_wlan_country_info.dat"
-#define WLAN_HO_CFG_FILE "wlan/qca_cld/WCNSS_wlan_ho_config"
#define WLAN_MAC_FILE "wlan/qca_cld/wlan_mac.bin"
#else
-#define WLAN_INI_FILE "wlan/volans/WCN1314_qcom_cfg.ini"
-#define WLAN_CFG_FILE "wlan/volans/WCN1314_cfg.dat"
-#define WLAN_FW_FILE "wlan/volans/WCN1314_qcom_fw.bin"
-#define WLAN_NV_FILE "wlan/volans/WCN1314_qcom_wlan_nv.bin"
-#define WLAN_DICT_FILE ""
-#define WLAN_COUNTRY_INFO_FILE "wlan/volans/WCN1314_wlan_country_info.dat"
-#define WLAN_HO_CFG_FILE "wlan/volans/WCN1314_wlan_ho_config"
-#endif // ANI_CHIPSET
-#else
#define WLAN_INI_FILE "wlan/qcom_cfg.ini"
#define WLAN_CFG_FILE "wlan/cfg.dat"
-#define WLAN_FW_FILE "wlan/qcom_fw.bin"
-#define WLAN_NV_FILE "wlan/qcom_wlan_nv.bin"
-#define WLAN_DICT_FILE ""
-#define WLAN_COUNTRY_INFO_FILE "wlan/wlan_country_info.dat"
-#define WLAN_HO_CFG_FILE "wlan/wlan_ho_config"
#define WLAN_MAC_FILE "wlan/wlan_mac.bin"
#endif // MSM_PLATFORM
-
-VOS_STATUS hdd_request_firmware(char *pfileName,v_VOID_t *pCtx,v_VOID_t **ppfw_data, v_SIZE_t *pSize);
-
-VOS_STATUS hdd_release_firmware(char *pFileName,v_VOID_t *pCtx);
-
-VOS_STATUS hdd_get_cfg_file_size(v_VOID_t *pCtx, char *pFileName, v_SIZE_t *pBufSize);
-
-VOS_STATUS hdd_read_cfg_file(v_VOID_t *pCtx, char *pFileName, v_VOID_t *pBuffer, v_SIZE_t *pBufSize);
-#if 0
-
-VOS_STATUS hdd_release_firmware(char *pFileName,v_VOID_t *pCtx);
-
VOS_STATUS hdd_get_cfg_file_size(v_VOID_t *pCtx, char *pFileName, v_SIZE_t *pBufSize);
VOS_STATUS hdd_read_cfg_file(v_VOID_t *pCtx, char *pFileName, v_VOID_t *pBuffer, v_SIZE_t *pBufSize);
-#endif
-
tVOS_CONCURRENCY_MODE hdd_get_concurrency_mode ( void );
#endif /* WLAN_HDD_MISC_H */
diff --git a/CORE/VOSS/inc/wlan_nv_parser.h b/CORE/VOSS/inc/wlan_nv_parser.h
deleted file mode 100644
index af4790a7acbc..000000000000
--- a/CORE/VOSS/inc/wlan_nv_parser.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-#if !defined __WLAN_NV_PARSER_H
-#define __WLAN_NV_PARSER_H
-
-#include <vos_status.h>
-
-VOS_STATUS nvParser(tANI_U8 *pnvEncodedBuf, tANI_U32 nvReadBufSize, sHalNv *);
-
-#endif
diff --git a/CORE/VOSS/inc/wlan_nv_parser_internal.h b/CORE/VOSS/inc/wlan_nv_parser_internal.h
deleted file mode 100644
index 00cdf73a6a1c..000000000000
--- a/CORE/VOSS/inc/wlan_nv_parser_internal.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-#if !defined _WLAN_NV_PARSER_INTERNAL_H
-#define _WLAN_NV_PARSER_INTERNAL_H
-
-#include "wlan_nv_types.h"
-
-/*
- * local prototypes
- */
-static _NV_TEMPLATE_PROCESS_RC processNvTemplate(_NV_STREAM_BUF *pStream,
- int len);
-static _NV_TEMPLATE_PROCESS_RC processNvTemplateTable(_NV_STREAM_BUF *pStream,
- int len);
-static int constructATemplateTable(_NV_STREAM_BUF *pStream, int len,
- char *tableStrName);
-static _NV_TEMPLATE_PROCESS_RC compareWithBuiltinTable(int idxFromBin,
- char *tableNameFromBin);
-static _NV_TEMPLATE_PROCESS_RC compare2Tables(int idxFromBin, int idxBuiltin);
-static _NV_TEMPLATE_PROCESS_RC compare2FieldsAndCopyFromBin(
- _NV_TEMPLATE_TABLE *pTableBuiltin, _NV_TEMPLATE_TABLE *pTableFromBin,
- int idxBuiltin, int idxFromBin);
-static _NV_TEMPLATE_PROCESS_RC compare2FieldIDType(
- _NV_TEMPLATE_TABLE *pTableBuiltIn, _NV_TEMPLATE_TABLE *pTableFromBin,
- int idxBuiltin, int idxFromBin);
-static _NV_TEMPLATE_PROCESS_RC compare2FieldStorageTypeAndSizes(
- _NV_TEMPLATE_TABLE *pTableBuiltIn, _NV_TEMPLATE_TABLE *pTableFromBin,
- int idxBuiltin, int idxFromBin);
-static _NV_TEMPLATE_PROCESS_RC compare2StorageSize(int idxBuiltIn,
- int idxFromBin, int sizeBuiltIn, int sizeFromBin,
- tANI_U8 sizeBuiltInLowByte, tANI_U8 sizeFromBinLowByte);
-static _NV_TEMPLATE_PROCESS_RC processNvTemplateEnum(_NV_STREAM_BUF *pStream,
- int len);
-static void compareEnumWithBuiltin(char *enumStr, int enumIdxFromBin);
-static _NV_TEMPLATE_PROCESS_RC compare2EnumEntriesAndCopy(int idxFromBin,
- int idxBuiltin);
-static int constructATemplateEnum(_NV_STREAM_BUF *pStream, int len,
- char *enumStr);
-static void processNvData(_NV_STREAM_BUF *pStream, int len);
-static int numElemSingular(_NV_TEMPLATE_TABLE *pTableEntry,int);
-static int numElemArray1(_NV_TEMPLATE_TABLE *pTableEntry,int);
-static int numElemArray2(_NV_TEMPLATE_TABLE *pTableEntry,int);
-static int numElemArray3(_NV_TEMPLATE_TABLE *pTableEntry,int);
-static void parseSubDataTable4Size(int tableIdx, int numElem);
-static void getBasicDataSize(_NV_TEMPLATE_TABLE *pTableEntry);
-static int getNumElemOutOfStorageSize(int fieldStorageSize,
- tANI_U8 fieldStorageSizeLowByte,int);
-
-static int getFieldCount(int tableIdx, int fieldIdi, int numElem,
- int nvBin);
-static void parseDataTable_new(_NV_STREAM_BUF *pStream, int* pos,
- int tableIdx, int addOffset, int tableBaseOffset);
-static int getBuiltInFieldCount (int tblIdBin, char *tableNameFromBin,
- int *tblIdBuiltIn, int *fieldIdBuitIn, int *numElem);
-static void parseSubDataTableAndCopy(int tableIdx, int numElem, int numElem2,
- int numElem3, int fieldId, _NV_STREAM_BUF *pStream, int* pos,
- int addOffset, int tableBaseOffset, int localAddOffset);
-
-/*
- * typedef's
- */
-
-typedef int (*pF_NumElemBasedOnStorageType)(_NV_TEMPLATE_TABLE *pTableEntry,
- int nvBin);
-
-#endif
diff --git a/CORE/VOSS/inc/wlan_nv_stream.h b/CORE/VOSS/inc/wlan_nv_stream.h
deleted file mode 100644
index 72947e656d43..000000000000
--- a/CORE/VOSS/inc/wlan_nv_stream.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-#if !defined _WLAN_NV_STREAM_H
-#define _WLAN_NV_STREAM_H
-
-#include "wlan_nv_types.h"
-
-typedef tANI_U8 _NV_STREAM_BUF;
-
-typedef struct {
- _NV_STREAM_BUF *dataBuf;
- tANI_U32 currentIndex;
- tANI_U32 totalLength;
-}_STREAM_BUF;
-
-extern _STREAM_BUF streamBuf;
-
-typedef enum {
- RC_FAIL,
- RC_SUCCESS,
-} _STREAM_RC;
-
-typedef enum {
- STREAM_READ,
- STREAM_WRITE,
-} _STREAM_OPERATION;
-
-_STREAM_RC nextStream (tANI_U32 *length, tANI_U8 *dataBuf);
-_STREAM_RC initReadStream ( tANI_U8 *readBuf, tANI_U32 length);
-
-#endif
diff --git a/CORE/VOSS/inc/wlan_nv_template_api.h b/CORE/VOSS/inc/wlan_nv_template_api.h
deleted file mode 100644
index 7cb465f73a67..000000000000
--- a/CORE/VOSS/inc/wlan_nv_template_api.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-#if !defined _WLAN_NV_TEMPLATE_API_H
-#define _WLAN_NV_TEMPLATE_API_H
-
-#include "wlan_nv_types.h"
-
-/*
-* API Prototypes
-* These are meant to be exposed to outside applications
-*/
-//extern void writeNvData(void);
-//extern VOS_STATUS nvParser(tANI_U8 *pnvEncodedBuf, tANI_U32 nvReadBufSize, sHalNv *);
-
-/*
-* Parsing control bitmap
-*/
-#define _ABORT_WHEN_MISMATCH_MASK 0x00000001 /*set: abort when mismatch, clear: continue taking matched entries*/
-#define _IGNORE_THE_APPENDED_MASK 0x00000002 /*set: ignore, clear: take*/
-
-#define _FLAG_AND_ABORT(b) (((b) & _ABORT_WHEN_MISMATCH_MASK) ? 1 : 0)
-
-#endif /*#if !defined(_WLAN_NV_TEMPLATE_API_H) */
diff --git a/CORE/VOSS/inc/wlan_nv_template_builtin.h b/CORE/VOSS/inc/wlan_nv_template_builtin.h
deleted file mode 100644
index b265cffc8ec8..000000000000
--- a/CORE/VOSS/inc/wlan_nv_template_builtin.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-
-#if !defined _WLAN_NV_TEMPLATE_BUILTIN_H
-#define _WLAN_NV_TEMPLATE_BUILTIN_H
-
-
-/*===========================================================================
- EDIT HISTORY FOR FILE
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
- $Header:$ $DateTime: $ $Author: $
-
- when who what, where, why
- -------- --- -----------------------------------------------
- 04/10/13 kumarpra nv built in creation
-===========================================================================*/
-
-
-/*
- -----------------------------------------
- This file is generated by nvTmplRun Parser
- -----------------------------------------
- To be auto-generated, or
- This is the source file and the header file can be generated from this
- template file.
-
- Template constructs
- 1. TABLE_: struct
- 2. INDEX_ENUM: enums, e.g. {RATE_OFDM_6M,RATE_OFDM_54M}
- 3. INDEX_INT: int, e.g.{min, max, increment}
- 3. Basic data types: tANI_U8, tANI_S8, tANI_U32, tANI_S32
- 4. Storage types:
- 4.1 SINGULAR: one element of basic data type
- 4.2 ARRAY_1: one dimensional array, x-axis
- 4.3 ARRAY_2: two dimensional array, (x, y)
- 4.4 ARRAY_3: three dimensional array, (x, y, z)
- 4.5 ARRAY_4: four dimensional array, (x, y, z, t)
-
- Implementation notes
- 1. Flow of changing NV data format: (TBD) Either change the template and
- generate the header file, or modify header file and auto-generate
- the template.
- 2. Flow of writing NV data: encode the template in the data stream, so the
- NV data is "self-sufficient". No separate template, no compability
- issue, no need of version control.
- 3. Flow of reading NV data: parse the binary NV data stream based on the
- template info in the data stream.
- 4. The above NV logic is decoupled from the actual data content, a generic,
- content ergonostic parser (reading) and encoder (writing).
- The NV logic is common code shared by tools, s/w
- (both host and firmware), and off-line utilities.
- 5. NV data parsing and "acceptanace" into an s/w moduel data structure can
- be "configured" in several ways:
- 5.1 only total matching of all fields, otherwise, reject the whole data
- stream (a table).
- 5.2 partial matching of fields allowed and the rest fields assume
- reasonal default values,
- The choice can be determined later, but the capability is provided.
- 6. We could also design in this selection on an individua table base.
- To design such capability, reserve some header bits in the data stream.
- 7. The NV data streams can be modified, replaced, or intact with a new data
- stream of the same table ID added to NV data.
- The choice can be determined later, but the NV scheme provides such
- capability.
- 8. The template construct definitions can be common to all tables
- (tbd: in a common section) or table specific, or updated in a
- subsequent format section.
- The use cases are:
- - An index enum (e.g. RF channels) is common to all tables when the NV
- data is created. Later new enums are added (e.g.
- additional channels), one can choose to add the new index enum for new
- tables appended to the NV data, or replace the
- old table with new template info and data.
- The template precedence is table specific then common, and later
- "common" overwrites "earlier" commmon.
- - A new field is added to the table, the user decides to replace the
- old table data, he can simply encode the template info in the
- data stream.
- - In the same scenario (a new field is added), the user decides to
- append a new table, he can encode the template
- in the new data table and append it to NV data, or write a new common
- template section and append the data.
-
- Key "ingredients", (re-iterate the most important features and capabilities)
- 1. How to parse the data is embedded in the NV data itself. It removes the
- dependency on header file matching,
- version checking, compatibility among tools, host and firmware.
- 2. Table field ID enables "partial" data acceptance in an s/w module data
- structure. Whether full matching or reject the whole table, or "partial"
- acceptance, the capabiilty is in place and further ensures the robust
- NV data extensibility and compatibility.
- 3. The table granularity, data stream based NV data has variable length
- and flexibility of modifying an existing table data, replacing the
- whole data, or leaving the existing data table intact and appending
- a new table.
- Misc notes:
- 1. For endianness, support only 4 bytes integer or 4 1-byte
- 2. String identifier needs to be shortened to save storage
- 3. string_field_name, field type, field storage class, storage size
-*/
-
-
-#include "wlan_nv_types.h"
-
-typedef enum _nvFieldSizeEnums {
- INDEX_ENUM_ALL = 0,
- INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS,
- INDEX_ENUM_NUM_REG_DOMAINS,
- INDEX_ENUM_NUM_RF_SUBBANDS,
- INDEX_ENUM_NUM_RF_CHANNELS,
- INDEX_ENUM_NUM_2_4GHZ_CHANNELS,
- INDEX_ENUM_NUM_802_11_MODES,
- INDEX_ENUM_NUM_HAL_PHY_RATES,
- INDEX_ENUM_BUILTIN_LAST,
- INDEX_ENUM_BUILTIN_MAX,
-} _NV_FIELD_SIZE_ENUMS;
-
-#define INDEX_ENUM_MAX MAX(INDEX_ENUM_PREDEFINED_MAX, INDEX_ENUM_BUILTIN_MAX)
-
-int getEnumNoOfFields(int enumIdx);
-extern _NV_TEMPLATE_ENUM NvEnumsBuiltIn[/*INDEX_ENUM_MAX*/][ENUM_ENTRIES_MAX];
-
-typedef enum _nvTableIDs {
- TABLE_sHalNv,
- TABLE_sNvFields,
- TABLE_sRegulatoryChannel,
- TABLE_sRssiChannelOffsets,
- TABLE_sCalData,
- TABLE_sTxBbFilterMode,
- TABLE_sOfdmCmdPwrOffset,
- TABLE_sDefaultCountry,
- TABLE_sFwConfig,
- TABLE_tTpcPowerTable,
- TABLE_tRateGroupPwr,
- TABLE_tRateGroupPwrVR,
- TABLE_sRegulatoryDomains,
- TABLE_sHwCalValues,
- TABLE_sNvTables,
- TABLE_BUILTIN_LAST,
- TABLE_BUILTIN_MAX,
-} _NV_TABLE_ID;
-
-#define TABLES_MAX MAX(TABLE_PREDEFINED_MAX, TABLE_BUILTIN_MAX)
-
-int getTableNoOfFields(int tblIdx);
-extern _NV_TEMPLATE_TABLE NvTablesBuiltIn[/*TABLES_MAX*/][TABLE_ENTRIES_MAX];
-
-#endif //#if !defined(_WLAN_NV_TEMPLATEBUILTIN_H)
diff --git a/CORE/VOSS/inc/wlan_nv_template_internal.h b/CORE/VOSS/inc/wlan_nv_template_internal.h
deleted file mode 100644
index 72fbdd38ced1..000000000000
--- a/CORE/VOSS/inc/wlan_nv_template_internal.h
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-#if !defined _WLAN_NV_TEMPLATE_INTERNAL_H
-#define _WLAN_NV_TEMPLATE_INTERNAL_H
-
-/*
- Template constructs
- 1. TABLE_: struct
- 2. INDEX_ENUM: enums, e.g. {RATE_OFDM_6M,RATE_OFDM_54M}
- 3. INDEX_INT: int, e.g.{min, max, increment}
- 3. Basic data types: tANI_U8, tANI_S8, tANI_U32, tANI_S32
- 4. Storage types:
- 4.1 SINGULAR: one element of basic data type
- 4.2 ARRAY_1: one dimensional array, x-axis
- 4.3 ARRAY_2: two dimensional array, (x, y)
- 4.4 ARRAY_3: three dimensional array, (x, y, z)
-
- Implementation notes
- 1. Flow of changing NV data format: (TBD) Either change the template and
- generate the header file, or
- modify header file and auto-generate the template.
- 2. Flow of writing NV data: encode the template in the data stream, so the
- NV data is "self-sufficient".
- No separate template, no compability issue, no need of version control.
- 3. Flow of reading NV data: parse the binary NV data stream based on the
- template info in the data stream.
- 4. The above NV logic is decoupled from the actual data content, a
- generic, content ergonostic parser (reading) and encoder (writing).
- The NV logic is common code shared by tools, s/w
- (both host and firmware), and off-line utilities.
- 5. NV data parsing and "acceptanace" into an s/w moduel data structure can
- be "configured" in several ways:
- 5.1 only total matching of all fields, otherwise, reject the whole data
- stream (a table).
- 5.2 partial matching of fields allowed and the rest fields assume
- reasonal default values,
- The choice can be determined later, but the capability is provided.
- 6. We could also design in this selection on an individua table base.
- To design such capability, reserve some header bits in the data stream.
- 7. The NV data streams can be modified, replaced, or intact with a new
- data stream of the same table ID added to NV data.
- The choice can be determined later, but the NV scheme provides such
- capability.
- 8. The template construct definitions can be common to all tables
- (tbd: in a common section) or table specific, or updated
- in a subsequent format section.
- The use cases are:
- - An index enum (e.g. RF channels) is common to all tables when the NV
- data is created. Later new enums are added (e.g.
- additional channels), one can choose to add the new index enum for new
- tables appended to the NV data, or replace the
- old table with new template info and data.
- The template precedence is table specific then common, and later
- "common" overwrites "earlier" commmon.
- - A new field is added to the table, the user decides to replace the old
- table data, he can simply encode the template
- info in the data stream.
- - In the same scenario (a new field is added), the user decides to
- append a new table, he can encode the template
- in the new data table and append it to NV data, or write a new common
- template section and append the data.
-
- Key "ingredients", (re-iterate the most important features and capabilities)
- 1. How to parse the data is embedded in the NV data itself. It removes the
- dependency on header file matching,
- version checking, compatibility among tools, host and firmware.
- 2. Table field ID enables "partial" data acceptance in an s/w module data
- structure. Whether full matching or reject the whole table, or "partial"
- acceptance, the capabiilty is in place and further ensures the robust
- NV data extensibility and compatibility.
- 3. The table granularity, data stream based NV data has variable length
- and flexibility of modifying an existing table data, replacing
- the whole data,or leaving the existing data table intact and
- appending a new table.
- Misc notes:
- 1. For endianness, support only 4 bytes integer or 4 1-byte
- 2. String identifier needs to be shortened to save storage
- 3. string_field_name, field type, field storage class, storage size
-*/
-
-#include "wlan_nv_types.h"
-
-/*
- * Stream header bitmap
- * streamType
- * bitmap[7]
- * / \
- * 1: template 0: data
- * bitmap[6]
- * / \
- * 0: enum 1: table
- *
- */
-/* Stream header type[7], 0: data, 1: template */
-#define STREAM_HEADER_TYPE_MASK 0x80
-#define STREAM_HEADER_TYPE_LSB 7
-#define IsStreamTemplate(b) (((b) & (STREAM_HEADER_TYPE_MASK)) ? 1 : 0)
-
-/* Stream header template type [6], 0: enum; 1: table */
-#define STREAM_HEADER_TEMPLATE_TYPE_MASK 0x40
-#define STREAM_HEADER_TEMPLATE_TYPE_LSB 6
-#define IsTemplateStreamTable(b) (((b) & (STREAM_HEADER_TEMPLATE_TYPE_MASK)) ? 1 : 0)
-
-/*
- * Field identifier bitmap
- *
- * field identifier
- * bitmap[7]
- * / \
- * 0: table/enum 1: basic data type
- * bitmap[6:0] bitmap[6:0]
- * | |
- * tableIdx/ data types (U8, U32, etc.)
- * enumIdx
- */
-/* Field Identifier type [7]
- * 0: table
- * 1: basic data types
- * Note that
- * - bit[7] table value=0 makes the table ID following data header stream or
- * template header stream identical to field ID
- * - tableIdx 0 is the "table of all tables", a.k.a. table content of all
- * table indexes
- * - enumIdx 0 is the "enum of all enums", a.k.a. table content of all enum
- * indexes
- */
-
-#define FIELD_ID_TYPE_MASK 0x80
-#define FIELD_ID_TYPE_LSB 7
-#define IsFieldTypeBasicData(b) (((b) & (FIELD_ID_TYPE_MASK)) ? 1 : 0)
-
-/* Field Identifier table index [6:0] */
-#define FIELD_ID_TABLE_OR_ENUM_IDX_MASK 0x7f
-#define FIELD_ID_TABLE_OR_ENUM_IDX_LSB 0
-#define _TABLE_IDX(b) (((b) & ~FIELD_ID_TYPE_MASK) | ((b) & FIELD_ID_TABLE_OR_ENUM_IDX_MASK))
-#define IsIdxTableOfAllTables(b) (((b) & FIELD_ID_TABLE_OR_ENUM_IDX_MASK) ? 0 : 1)
-#define IsIdxEnumOfAllEnums(b) (((b) & FIELD_ID_TABLE_OR_ENUM_IDX_MASK) ? 0 : 1)
-
-/* Field Identifier basic data types [6:0]
- * 0: U8
- * 1: U32
- * 2: S8
- * 3: S32
- * 4: U16
- * 5: S16
- */
-
-#define FIELD_ID_BASIC_DATA_TYPES_MASK 0x7F
-#define FIELD_ID_BASIC_DATA_TYPES_LSB 0
-
-typedef enum {
- _FIELD_ID_DATA_TYPE_U8 = 0,
- _FIELD_ID_DATA_TYPE_U32,
- _FIELD_ID_DATA_TYPE_S8,
- _FIELD_ID_DATA_TYPE_S32,
- _FIELD_ID_DATA_TYPE_U16,
- _FIELD_ID_DATA_TYPE_S16,
- _FIELD_ID_DATA_TYPE_LAST,
-} _FIELD_ID_BASIC_DATA_TYPE;
-
-#define TheBasicDataType(b) (((b) & (FIELD_ID_BASIC_DATA_TYPES_MASK)) >> FIELD_ID_BASIC_DATA_TYPES_LSB)
-#define _ID_U8 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_U8))
-#define _ID_U32 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_U32))
-#define _ID_S8 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_S8))
-#define _ID_S32 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_S32))
-#define _ID_U16 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_U16))
-#define _ID_S16 ((FIELD_ID_TYPE_MASK) | (_FIELD_ID_DATA_TYPE_S16))
-
-/*
- * field storage class
- */
-typedef enum {
- SINGULAR = 0,
- ARRAY_1,
- ARRAY_2,
- ARRAY_3,
- STORAGE_TYPE_LAST,
-} _FIELD_ID_STORAGE_TYPE;
-
-#define _STORAGE_TYPE(b) ((b) & 0x3)
-#define _STORAGE_SIZE1(byteLow, byteHigh) (((((byteHigh) >> 2) & 0x3) << 7) | (((byteLow) >> FIELD_SIZE_VALUE_LSB) & FIELD_SIZE_VALUE_MASK))
-#define _STORAGE_SIZE2(byteLow, byteHigh) (((((byteHigh) >> 4) & 0x3) << 7) | (((byteLow) >> FIELD_SIZE_VALUE_LSB) & FIELD_SIZE_VALUE_MASK))
-#define _STORAGE_SIZE3(byteLow, byteHigh) (((((byteHigh) >> 6) & 0x3) << 7) | (((byteLow) >> FIELD_SIZE_VALUE_LSB) & FIELD_SIZE_VALUE_MASK))
-
-#define _ADD_SIZE1(b) ((((b) >> 7) & 0x3) << 2)
-#define _ADD_SIZE2(b) ((((b) >> 7) & 0x3) << 4)
-#define _ADD_SIZE3(b) ((((b) >> 7) & 0x3) << 6)
-
-/*
- * Field storage size type [7]
- * / \
- * 1: int 0: enum
- * bitmap[6:0] bitmap[6:0]
- * | |
- * max int index enum index into enum tables
- *
- * Note that enum=0 makes the template enum ID following template stream byte
- * identical to enum field storage size type
- *
- * Field storage size value [6:0]
- */
-#define FIELD_SIZE_TYPE_MASK 0x80
-#define FIELD_SIZE_TYPE_LSB 7
-#define FIELD_SIZE_TYPE_BIT(t) (((t)<< (FIELD_SIZE_TYPE_LSB)) & (FIELD_SIZE_TYPE_MASK))
-#define IsFieldSizeInt(b) (((b) & (FIELD_SIZE_TYPE_MASK)) ? 1 : 0)
-
-typedef enum {
- FIELD_SIZE_IDX_ENUM = 0,
- FIELD_SIZE_IDX_INT = 1,
-} FIELD_SIZE_TYPE;
-
-#define FIELD_SIZE_VALUE_MASK 0x7f
-#define FIELD_SIZE_VALUE_LSB 0
-#define FIELD_SIZE_VALUE_BITS(val) (((val) << (FIELD_SIZE_VALUE_LSB)) & (FIELD_SIZE_VALUE_MASK))
-
-/*
- * NV table storage struct in an s/w module
- */
-#define _TABLE_NAME_LEN 2
-#define _TABLE_FIELD_FULL_NAME_LEN 47
-
-typedef struct _nvTemplateTableStructInternal {
- tANI_U8 fieldName[_TABLE_NAME_LEN + 1];
- tANI_U8 fieldId;
- tANI_U8 fieldStorageType;
- tANI_U8 fieldStorageSize1;
- tANI_U8 fieldStorageSize2;
- tANI_U8 fieldStorageSize3;
- tANI_U32 offset; //void *offset;
- tANI_U8 fieldFullName[_TABLE_FIELD_FULL_NAME_LEN +1];
-} _NV_TEMPLATE_TABLE;
-
-#define _OFFSET_NOT_SET 0xFFFFFFFF
-#define TABLE_PREDEFINED_MAX 50
-#define TABLE_ENTRIES_MAX 50
-#define _LIST_OF_TABLES_IDX 0
-#define _TABLE_FIELDS_POS 2
-#define _ENUM_START_POS 2
-#define _TABLE_FIELD_MIN_LEN 4
-#define _ENUM_MIN_LEN 3
-
-#define _ENUM_NAME_LEN _TABLE_NAME_LEN
-#define _ENUM_FULL_NAME_LEN 47
-typedef struct _nvTemplateEnumStruct {
- tANI_U8 enumName[3]; // 2 char string
- tANI_U8 enumValue;
- tANI_U8 enumValuePeer;
- tANI_U8 enumFullName[_ENUM_FULL_NAME_LEN +1];
-} _NV_TEMPLATE_ENUM;
-#define INDEX_ENUM_PREDEFINED_MAX 20
-#define ENUM_ENTRIES_MAX 200
-
-typedef enum {
- _MIS_MATCH = 0,
- _MATCH,
-} _NV_TEMPLATE_PROCESS_RC;
-
-#define _NV_BIN_STREAM_HEADER_BYTE 0
-#define _NV_BIN_STREAM_TABLE_ID_BYTE 1
-#define _NV_BIN_STREAM_ENUM_ID_BYTE 1
-#define _NV_BIN_DATA_STREAM_TABLEID_BYTE 1
-#define _NV_BIN_ENUM_TEMPLATE_ENTRY_SIZE 3
-#define _NV_LIST_OF_TABLE_ID 0
-
-/*
- * Stream write
- */
-#define _STREAM_HEADER_POS 0
-#define _ENUM_STREAM_HEADER_POS _STREAM_HEADER_POS
-#define _TABLE_STREAM_HEADER_POS _STREAM_HEADER_POS
-#define _TEMPLATE_INDEX_HEADER_POS 1
-#define _ENUM_INDEX_HEADER_POS _TEMPLATE_INDEX_HEADER_POS
-#define _TABLE_INDEX_HEADER_POS _TEMPLATE_INDEX_HEADER_POS
-
-/*
- * Additional typedef
- */
-typedef struct _enumMetaData {
- _NV_TEMPLATE_PROCESS_RC match;
-} _ENUM_META_DATA;
-
-#define MAX(a, b) (((a) > (b)) ? (a) : (b))
-#define _NV_STREAM_LEN_MAX 35000
-
-/*
- * Error code should be expanded, this is the beginning set
- */
-typedef enum {
- _OK = 0,
- _RESET_STREAM_FAILED,
- _WRITE_STREAM_FAILED,
- _STREAM_NOT_FIT_BUF,
- _SW_BIN_MISMATCH,
- _INSUFFICIENT_FOR_FIELD_PARSER_ERROR,
- _TABLE_NON_EXIST_IN_TABLE_OF_ALL_TABLES,
- _ENUM_NOT_FOUND_IN_BUILT_IN,
-} _ErrorCode;
-
-/*
- * Use the stream test stub
- */
-//#define _USE_STREAM_STUB
-#define RESET_STREAM(b) resetStream(b)
-#define NEXT_STREAM(b,c) nextStream(b,c)
-
-#endif /*#if !defined(_WLAN_NV_TEMPLATE_INTERNAL_H)*/
diff --git a/CORE/VOSS/inc/wlan_nv_types.h b/CORE/VOSS/inc/wlan_nv_types.h
deleted file mode 100644
index d648c60fa2cf..000000000000
--- a/CORE/VOSS/inc/wlan_nv_types.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-#if !defined __WLAN_NV_TYPES_H
-#define __WLAN_NV_TYPES_H
-
-#include "halLegacyPalTypes.h"
-#include "halCompiler.h"
-#include "vos_status.h"
-#include <linux/string.h>
-
-typedef char tANI_BOOL;
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-#define nul '\0'
-
-#endif
diff --git a/CORE/VOSS/src/vos_getBin.c b/CORE/VOSS/src/vos_getBin.c
index f9a21c09ef8e..3c90b19f020c 100644
--- a/CORE/VOSS/src/vos_getBin.c
+++ b/CORE/VOSS/src/vos_getBin.c
@@ -86,15 +86,6 @@ VOS_STATUS vos_get_binary_blob( VOS_BINARY_ID binaryId,
case VOS_BINARY_ID_CONFIG:
pFileName = WLAN_CFG_FILE;
break;
- case VOS_BINARY_ID_COUNTRY_INFO:
- pFileName = WLAN_COUNTRY_INFO_FILE;
- break;
- case VOS_BINARY_ID_HO_CONFIG:
- pFileName = WLAN_HO_CFG_FILE;
- break;
- case VOS_BINARY_ID_DICT_CONFIG:
- pFileName = WLAN_DICT_FILE;
- break;
default:
VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, "Invalid binaryID");
return VosSts;
diff --git a/CORE/VOSS/src/vos_nvitem.c b/CORE/VOSS/src/vos_nvitem.c
index 0575dcc64878..fac5f4a0993a 100644
--- a/CORE/VOSS/src/vos_nvitem.c
+++ b/CORE/VOSS/src/vos_nvitem.c
@@ -48,7 +48,6 @@
#include "wlan_hdd_misc.h"
#include "vos_sched.h"
#include "sme_Api.h"
-#include "wlan_nv_parser.h"
#include "wlan_hdd_main.h"
#include <net/cfg80211.h>
#include "regdomain.h"
@@ -86,14 +85,7 @@ static v_BOOL_t crda_regulatory_run_time_entry_valid = VOS_FALSE;
/*----------------------------------------------------------------------------
* Preprocessor Definitions and Constants
* -------------------------------------------------------------------------*/
-#define VALIDITY_BITMAP_NV_ID NV_WLAN_VALIDITY_BITMAP_I
-#define VALIDITY_BITMAP_SIZE 32
#define MAX_COUNTRY_COUNT 300
-//To be removed when NV support is fully functional
-#define VOS_HARD_CODED_MAC {0, 0x0a, 0xf5, 4, 5, 6}
-
-#define DEFAULT_NV_VALIDITY_BITMAP 0xFFFFFFFF
-#define MAGIC_NUMBER 0xCAFEBABE
/*
* This is a set of common rules used by our world regulatory domains.
@@ -633,18 +625,10 @@ static CountryInfoTable_t countryInfoTable =
typedef struct nvEFSTable_s
{
- v_U32_t nvValidityBitmap;
sHalNv halnv;
} nvEFSTable_t;
-nvEFSTable_t *gnvEFSTable;
-/* EFS Table to send the NV structure to HAL*/
+
static nvEFSTable_t *pnvEFSTable;
-static v_U8_t *pnvEncodedBuf;
-static v_U8_t *pDictFile;
-static v_U8_t *pEncodedBuf;
-static v_SIZE_t nvReadEncodeBufSize;
-static v_SIZE_t nDictionarySize;
-static v_U32_t magicNumber;
const tRfChannelProps rfChannels[NUM_RF_CHANNELS] =
{
@@ -736,84 +720,6 @@ extern const sHalNv nvDefaults;
const sRegulatoryChannel * regChannels = nvDefaults.tables.regDomains[0].channels;
-/*----------------------------------------------------------------------------
- Function Definitions and Documentation
- * -------------------------------------------------------------------------*/
-VOS_STATUS wlan_write_to_efs (v_U8_t *pData, v_U16_t data_len)
-{
- return VOS_STATUS_SUCCESS;
-}
-/**------------------------------------------------------------------------
- \brief vos_nv_init() - initialize the NV module
- The \a vos_nv_init() initializes the NV module. This read the binary
- file for country code and regulatory domain information.
- \return VOS_STATUS_SUCCESS - module is initialized successfully
- otherwise - module is not initialized
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_init(void)
-{
- return VOS_STATUS_SUCCESS;
-}
-
-/**------------------------------------------------------------------------
- \brief vos_nv_get_dictionary_data() - get the dictionary data required for
- \ tools
- \return VOS_STATUS_SUCCESS - dictionary data is read successfully
- otherwise - not successful
- \sa
--------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_get_dictionary_data(void)
-{
- VOS_STATUS vosStatus = VOS_STATUS_E_FAILURE;
-
- if (MAGIC_NUMBER != magicNumber)
- {
- return VOS_STATUS_SUCCESS;
- }
-
- nDictionarySize = 0;
-
- vosStatus = vos_get_binary_blob( VOS_BINARY_ID_DICT_CONFIG, NULL,
- &nDictionarySize );
- if (VOS_STATUS_E_NOMEM != vosStatus)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "Error obtaining binary size" );
-/// NOTE:
-/// We can still work without a dictionary file..
- return VOS_STATUS_SUCCESS;
- }
-
- // malloc a buffer to read in the Configuration binary file.
- pDictFile = vos_mem_malloc( nDictionarySize );
- if (NULL == pDictFile)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "Unable to allocate memory for the CFG binary [size= %d bytes]",
- nDictionarySize );
- vosStatus = VOS_STATUS_E_NOMEM;
- goto fail;
- }
-
- /* Get the entire CFG file image... */
- vosStatus = vos_get_binary_blob( VOS_BINARY_ID_DICT_CONFIG, pDictFile,
- &nDictionarySize );
- if (!VOS_IS_STATUS_SUCCESS( vosStatus ))
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "Error: Cannot retrieve CFG file image from vOSS. [size= %d bytes]",
- nDictionarySize );
- return VOS_STATUS_SUCCESS;
- }
-
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO_HIGH,
- "Dict file image from vOSS. [size= %d bytes]", nDictionarySize );
-
-fail:
- return vosStatus;
-}
-
static inline bool is_wwr_sku(u16 regd)
{
return ((regd & COUNTRY_ERD_FLAG) != COUNTRY_ERD_FLAG) &&
@@ -1118,395 +1024,25 @@ static void vos_update_reg_info(hdd_context_t *pHddCtx)
VOS_STATUS vos_nv_open(void)
{
- VOS_STATUS status = VOS_STATUS_SUCCESS;
- v_CONTEXT_t pVosContext= NULL;
- v_SIZE_t bufSize;
- v_SIZE_t nvReadBufSize;
- v_BOOL_t itemIsValid = VOS_FALSE;
- v_U32_t dataOffset;
- sHalNv *pnvData = NULL;
- hdd_context_t *pHddCtx = NULL;
-
- /*Get the global context */
- pVosContext = vos_get_global_context(VOS_MODULE_ID_SYS, NULL);
-
- if (NULL == pVosContext)
- {
- return (eHAL_STATUS_FAILURE);
- }
-
- bufSize = sizeof(nvEFSTable_t);
- status = hdd_request_firmware(WLAN_NV_FILE,
- ((VosContextType*)(pVosContext))->pHDDContext,
- (v_VOID_t**)&pnvEncodedBuf, &nvReadBufSize);
-
- if ((!VOS_IS_STATUS_SUCCESS( status )) || (!pnvEncodedBuf))
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
- "%s: unable to download NV file %s",
- __func__, WLAN_NV_FILE);
- return VOS_STATUS_E_RESOURCES;
- }
-
- memcpy(&magicNumber, &pnvEncodedBuf[sizeof(v_U32_t)], sizeof(v_U32_t));
-
- /// Allocate buffer with maximum length..
- pEncodedBuf = (v_U8_t *)vos_mem_malloc(nvReadBufSize);
-
- if (NULL == pEncodedBuf)
+ /* Allocate memory to global NV table */
+ pnvEFSTable = (nvEFSTable_t *)vos_mem_malloc(sizeof(nvEFSTable_t));
+ if ( NULL == pnvEFSTable )
{
VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s : failed to allocate memory for NV", __func__);
+ "%s : failed to allocate memory for NV", __func__);
return VOS_STATUS_E_NOMEM;
}
- gnvEFSTable = (nvEFSTable_t*)pnvEncodedBuf;
-
- if (MAGIC_NUMBER == magicNumber)
- {
- pnvData = (sHalNv *)vos_mem_malloc(sizeof(sHalNv));
-
- if (NULL == pnvData)
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s : failed to allocate memory for NV", __func__);
- return VOS_STATUS_E_NOMEM;
- }
-
- memset(pnvData, 0, sizeof(sHalNv));
-
- /// Data starts from offset of validity bit map + magic number..
- dataOffset = sizeof(v_U32_t) + sizeof(v_U32_t);
-
- status = nvParser(&pnvEncodedBuf[dataOffset],
- (nvReadBufSize-dataOffset), pnvData);
-
- ///ignore validity bit map
- nvReadEncodeBufSize = nvReadBufSize - sizeof(v_U32_t);
-
- vos_mem_copy(pEncodedBuf, &pnvEncodedBuf[sizeof(v_U32_t)],
- nvReadEncodeBufSize);
-
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "readEncodeBufSize %d",nvReadEncodeBufSize);
-
- if (VOS_STATUS_SUCCESS == status) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "Embedded NV parsed success !!productId %d couple Type %d wlan RevId %d",
- pnvData->fields.productId,
- pnvData->fields.couplerType,
- pnvData->fields.wlanNvRevId);
-
- vos_mem_copy(&gnvEFSTable->halnv, pnvData, sizeof(sHalNv));
-
- nvReadBufSize = sizeof(sHalNv) + sizeof(v_U32_t);
- }
- else
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "nvParser failed %d",status);
-
- if (nvReadBufSize != sizeof(sHalNv)) {
- vos_mem_free(pEncodedBuf);
- pEncodedBuf = (v_U8_t *)vos_mem_malloc(sizeof(sHalNv));
-
- if (!pEncodedBuf) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s : failed to allocate memory for NV", __func__);
- vos_mem_free(pnvData);
- return VOS_STATUS_E_NOMEM;
- }
- }
-
- nvReadBufSize = 0;
-
- vos_mem_copy(pEncodedBuf, &nvDefaults, sizeof(sHalNv));
-
- nvReadEncodeBufSize = sizeof(sHalNv);
- }
- }
- else
- {
- dataOffset = sizeof(v_U32_t);
- nvReadEncodeBufSize = sizeof(sHalNv);
- if (nvReadBufSize != nvReadEncodeBufSize) {
- vos_mem_free(pEncodedBuf);
- pEncodedBuf = (v_U8_t *)vos_mem_malloc(nvReadEncodeBufSize);
- if (!pEncodedBuf)
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s : failed to allocate memory for NV", __func__);
- return VOS_STATUS_E_NOMEM;
- }
- }
-
- memcpy(pEncodedBuf, &pnvEncodedBuf[dataOffset], nvReadEncodeBufSize);
- }
-
- if (NULL != pnvData)
- {
- vos_mem_free(pnvData);
- }
-
-#ifdef CONFIG_QCA_WIFI_ISOC
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "INFO: NV binary file version=%d Driver default NV version=%d, continue...",
- gnvEFSTable->halnv.fields.nvVersion, WLAN_NV_VERSION);
-#endif
-
- /* Copying the read nv data to the globa NV EFS table */
- {
- /* Allocate memory to global NV table */
- pnvEFSTable = (nvEFSTable_t *)vos_mem_malloc(sizeof(nvEFSTable_t));
- if ( NULL == pnvEFSTable )
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s : failed to allocate memory for NV", __func__);
- return VOS_STATUS_E_NOMEM;
- }
-
- /*Copying the NV defaults */
- vos_mem_copy(&(pnvEFSTable->halnv), &nvDefaults, sizeof(sHalNv));
-
- /* Size mismatch */
- if ( nvReadBufSize != bufSize)
- {
- pnvEFSTable->nvValidityBitmap = DEFAULT_NV_VALIDITY_BITMAP;
-#ifdef CONFIG_QCA_WIFI_ISOC
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
- "!!!WARNING: INVALID NV FILE, DRIVER IS USING DEFAULT CAL VALUES %d %d!!!",
- nvReadBufSize, bufSize);
-#endif
- return VOS_STATUS_SUCCESS;
- }
-
- /* Version mismatch */
- if (gnvEFSTable->halnv.fields.nvVersion != WLAN_NV_VERSION)
- {
- if ((WLAN_NV_VERSION == NV_VERSION_11N_11AC_FW_CONFIG) &&
- (gnvEFSTable->halnv.fields.nvVersion == NV_VERSION_11N_11AC_COUPER_TYPE))
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "!!!WARNING: Using Coupler Type field instead of Fw Config table,\n"
- "Make sure that this is intended or may impact performance!!!");
- }
- else
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "!!!WARNING: NV binary file version doesn't match with Driver default NV version\n"
- "Driver NV defaults will be used, may impact performance!!!");
-
- return VOS_STATUS_SUCCESS;
- }
- }
-
- pnvEFSTable->nvValidityBitmap = gnvEFSTable->nvValidityBitmap;
- /* Copy the valid fields to the NV Global structure */
- if (vos_nv_getValidity(VNV_FIELD_IMAGE, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE) {
-
- if(vos_nv_read( VNV_FIELD_IMAGE, (v_VOID_t *)&pnvEFSTable->halnv.fields,
- NULL, sizeof(sNvFields) ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_RATE_TO_POWER_TABLE, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_RATE_TO_POWER_TABLE,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.pwrOptimum[0],
- NULL, sizeof(tRateGroupPwr) * NUM_RF_SUBBANDS ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_REGULARTORY_DOMAIN_TABLE, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
-
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_REGULARTORY_DOMAIN_TABLE,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.regDomains[0],
- NULL, sizeof(sRegulatoryDomains) * NUM_REG_DOMAINS ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_DEFAULT_LOCATION, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_DEFAULT_LOCATION,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.defaultCountryTable,
- NULL, sizeof(sDefaultCountry) ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- pHddCtx = vos_get_context(VOS_MODULE_ID_HDD, pVosContext);
- if (NULL != pHddCtx)
- {
- if (!vos_mem_compare(pHddCtx->cfg_ini->overrideCountryCode,
- CFG_OVERRIDE_COUNTRY_CODE_DEFAULT, 3))
- {
- vos_mem_copy(pnvEFSTable->halnv.tables.defaultCountryTable.countryCode,
- pHddCtx->cfg_ini->overrideCountryCode,
- 3);
- }
- }
- else
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("Invalid pHddCtx pointer") );
- }
- }
-
- if (vos_nv_getValidity(VNV_TPC_POWER_TABLE, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_TPC_POWER_TABLE,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.plutCharacterized[0],
- NULL, sizeof(tTpcPowerTable) * NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_TPC_PDADC_OFFSETS, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_TPC_PDADC_OFFSETS,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.plutPdadcOffset[0],
- NULL, sizeof(tANI_U16) * NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
- if (vos_nv_getValidity(VNV_RSSI_CHANNEL_OFFSETS, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_RSSI_CHANNEL_OFFSETS,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.rssiChanOffsets[0],
- NULL, sizeof(sRssiChannelOffsets) * 2 ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_HW_CAL_VALUES, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_HW_CAL_VALUES, (v_VOID_t *)&pnvEFSTable->halnv
- .tables.hwCalValues, NULL, sizeof(sHwCalValues) ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_FW_CONFIG, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_FW_CONFIG, (v_VOID_t *)&pnvEFSTable->halnv
- .tables.fwConfig, NULL, sizeof(sFwConfig) ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_ANTENNA_PATH_LOSS, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_ANTENNA_PATH_LOSS,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.antennaPathLoss[0], NULL,
- sizeof(tANI_S16)*NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
- if (vos_nv_getValidity(VNV_PACKET_TYPE_POWER_LIMITS, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_PACKET_TYPE_POWER_LIMITS,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.pktTypePwrLimits[0], NULL,
- sizeof(tANI_S16)*NUM_802_11_MODES*NUM_RF_CHANNELS ) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_OFDM_CMD_PWR_OFFSET, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read( VNV_OFDM_CMD_PWR_OFFSET,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.ofdmCmdPwrOffset, NULL,
- sizeof(sOfdmCmdPwrOffset)) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
-
- if (vos_nv_getValidity(VNV_TX_BB_FILTER_MODE, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read(VNV_TX_BB_FILTER_MODE,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.txbbFilterMode, NULL,
- sizeof(sTxBbFilterMode)) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
- if (vos_nv_getValidity(VNV_TABLE_VIRTUAL_RATE, &itemIsValid) ==
- VOS_STATUS_SUCCESS)
- {
- if (itemIsValid == VOS_TRUE)
- {
- if(vos_nv_read(VNV_TABLE_VIRTUAL_RATE,
- (v_VOID_t *)&pnvEFSTable->halnv.tables.pwrOptimum_virtualRate, NULL,
- sizeof(gnvEFSTable->halnv.tables.pwrOptimum_virtualRate)) != VOS_STATUS_SUCCESS)
- goto error;
- }
- }
- }
+ /*Copying the NV defaults */
+ vos_mem_copy(&(pnvEFSTable->halnv), &nvDefaults, sizeof(sHalNv));
return VOS_STATUS_SUCCESS;
-error:
- vos_mem_free(pnvEFSTable);
- vos_mem_free(pEncodedBuf);
- return eHAL_STATUS_FAILURE ;
}
VOS_STATUS vos_nv_close(void)
{
- VOS_STATUS status = VOS_STATUS_SUCCESS;
- v_CONTEXT_t pVosContext= NULL;
- /*Get the global context */
- pVosContext = vos_get_global_context(VOS_MODULE_ID_SYS, NULL);
- status = hdd_release_firmware(WLAN_NV_FILE, ((VosContextType*)(pVosContext))->pHDDContext);
- if ( !VOS_IS_STATUS_SUCCESS( status ))
- {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "%s : vos_open failed",__func__);
- return VOS_STATUS_E_FAILURE;
- }
vos_mem_free(pnvEFSTable);
- vos_mem_free(pEncodedBuf);
- vos_mem_free(pDictFile);
-
- gnvEFSTable=NULL;
+ pnvEFSTable=NULL;
return VOS_STATUS_SUCCESS;
}
@@ -1547,688 +1083,6 @@ VOS_STATUS vos_nv_getSupportedCountryCode( v_BYTE_t *pBuffer, v_SIZE_t *pBufferS
}
return VOS_STATUS_SUCCESS;
}
-/**------------------------------------------------------------------------
- \brief vos_nv_readTxAntennaCount() - return number of TX antenna
- \param pTxAntennaCount - antenna count
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readTxAntennaCount( v_U8_t *pTxAntennaCount )
-{
- sNvFields fieldImage;
- VOS_STATUS status;
- status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL,
- sizeof(fieldImage) );
- if (VOS_STATUS_SUCCESS == status)
- {
- *pTxAntennaCount = fieldImage.numOfTxChains;
- }
- return status;
-}
-/**------------------------------------------------------------------------
- \brief vos_nv_readRxAntennaCount() - return number of RX antenna
- \param pRxAntennaCount - antenna count
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readRxAntennaCount( v_U8_t *pRxAntennaCount )
-{
- sNvFields fieldImage;
- VOS_STATUS status;
- status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL,
- sizeof(fieldImage) );
- if (VOS_STATUS_SUCCESS == status)
- {
- *pRxAntennaCount = fieldImage.numOfRxChains;
- }
- return status;
-}
-
-/**------------------------------------------------------------------------
- \brief vos_nv_readMacAddress() - return the MAC address
- \param pMacAddress - MAC address
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readMacAddress( v_MAC_ADDRESS_t pMacAddress )
-{
- sNvFields fieldImage;
- VOS_STATUS status;
- status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL,
- sizeof(fieldImage) );
- if (VOS_STATUS_SUCCESS == status)
- {
- memcpy( pMacAddress, fieldImage.macAddr, VOS_MAC_ADDRESS_LEN );
- }
- else
- {
- //This part of the code can be removed when NV is programmed
- const v_U8_t macAddr[VOS_MAC_ADDRESS_LEN] = VOS_HARD_CODED_MAC;
- memcpy( pMacAddress, macAddr, VOS_MAC_ADDRESS_LEN );
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_WARN,
- "fail to get MAC address from NV, hardcoded to "MAC_ADDRESS_STR,
- MAC_ADDR_ARRAY(macAddr));
- status = VOS_STATUS_SUCCESS;
- }
- return status;
-}
-
-/**------------------------------------------------------------------------
-
- \brief vos_nv_readMultiMacAddress() - return the Multiple MAC addresses
-
- \param pMacAddress - MAC address
- \param macCount - Count of valid MAC addresses to get from NV field
-
- \return status of the NV read operation
-
- \sa
-
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_readMultiMacAddress( v_U8_t *pMacAddress,
- v_U8_t macCount )
-{
- sNvFields fieldImage;
- VOS_STATUS status;
- v_U8_t countLoop;
- v_U8_t *pNVMacAddress;
-
- if((0 == macCount) || (VOS_MAX_CONCURRENCY_PERSONA < macCount) ||
- (NULL == pMacAddress))
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- " Invalid Parameter from NV Client macCount %d, pMacAddress %p",
- macCount, pMacAddress);
- }
-
- status = vos_nv_read( VNV_FIELD_IMAGE, &fieldImage, NULL,
- sizeof(fieldImage) );
- if (VOS_STATUS_SUCCESS == status)
- {
- pNVMacAddress = fieldImage.macAddr;
- for(countLoop = 0; countLoop < macCount; countLoop++)
- {
- vos_mem_copy(pMacAddress + (countLoop * VOS_MAC_ADDRESS_LEN),
- pNVMacAddress + (countLoop * VOS_MAC_ADDRESS_LEN),
- VOS_MAC_ADDRESS_LEN);
- }
- }
- else
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- "vos_nv_readMultiMacAddress Get NV Field Fail");
- }
-
- return status;
-}
-
-/**------------------------------------------------------------------------
- \brief vos_nv_setValidity() - set the validity of an NV item.
- The \a vos_nv_setValidity() validates and invalidates an NV item. The
- validity information is stored in NV memory.
- One would get the VOS_STATUS_E_EXISTS error when reading an invalid item.
- An item becomes valid when one has written to it successfully.
- \param type - NV item type
- \param itemIsValid - boolean value indicating the item's validity
- \return VOS_STATUS_SUCCESS - validity is set successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAILURE - unknown error
- \sa
- -------------------------------------------------------------------------*/
-
-VOS_STATUS vos_nv_setValidity( VNV_TYPE type, v_BOOL_t itemIsValid )
-{
- v_U32_t lastNvValidityBitmap;
- v_U32_t newNvValidityBitmap;
- VOS_STATUS status = VOS_STATUS_SUCCESS;
-
- // check if the current NV type is valid
- if (VNV_TYPE_COUNT <= type)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("%s: invalid type=%d"), __func__, type );
- return VOS_STATUS_E_INVAL;
- }
- // read the validity bitmap
- lastNvValidityBitmap = gnvEFSTable->nvValidityBitmap;
- // modify the validity bitmap
- if (itemIsValid)
- {
- newNvValidityBitmap = lastNvValidityBitmap | (1 << type);
- // commit to NV store if bitmap has been modified
- if (newNvValidityBitmap != lastNvValidityBitmap)
- {
- gnvEFSTable->nvValidityBitmap = newNvValidityBitmap;
- }
- }
- else
- {
- newNvValidityBitmap = lastNvValidityBitmap & (~(1 << type));
- if (newNvValidityBitmap != lastNvValidityBitmap)
- {
- gnvEFSTable->nvValidityBitmap = newNvValidityBitmap;
- status = wlan_write_to_efs((v_U8_t*)gnvEFSTable,sizeof(nvEFSTable_t));
- if (! VOS_IS_STATUS_SUCCESS(status)) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, ("vos_nv_write_to_efs failed!!!"));
- status = VOS_STATUS_E_FAULT;
- }
- }
- }
-
- return status;
-}
-/**------------------------------------------------------------------------
- \brief vos_nv_getValidity() - get the validity of an NV item.
- The \a vos_nv_getValidity() indicates if an NV item is valid. The
- validity information is stored in NV memory.
- One would get the VOS_STATUS_E_EXISTS error when reading an invalid item.
- An item becomes valid when one has written to it successfully.
- \param type - NV item type
- \param pItemIsValid- pointer to the boolean value indicating the item's
- validity
- \return VOS_STATUS_SUCCESS - validity is determined successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAILURE - unknown error
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_getValidity( VNV_TYPE type, v_BOOL_t *pItemIsValid )
-{
- v_U32_t nvValidityBitmap = gnvEFSTable->nvValidityBitmap;
- // check if the current NV type is valid
- if (VNV_TYPE_COUNT <= type)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("%s: invalid type=%d"), __func__, type );
- return VOS_STATUS_E_INVAL;
- }
- *pItemIsValid = (v_BOOL_t)((nvValidityBitmap >> type) & 1);
- return VOS_STATUS_SUCCESS;
-}
-/**------------------------------------------------------------------------
- \brief vos_nv_read() - read a NV item to an output buffer
- The \a vos_nv_read() reads a NV item to an output buffer. If the item is
- an array, this function would read the entire array. One would get a
- VOS_STATUS_E_EXISTS error when reading an invalid item.
- For error conditions of VOS_STATUS_E_EXISTS and VOS_STATUS_E_FAILURE,
- if a default buffer is provided (with a non-NULL value),
- the default buffer content is copied to the output buffer.
- \param type - NV item type
- \param outputBuffer - output buffer
- \param defaultBuffer - default buffer
- \param bufferSize - output buffer size
- \return VOS_STATUS_SUCCESS - NV item is read successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAULT - defaultBuffer point is NULL
- VOS_STATUS_E_EXISTS - NV type is unsupported
- VOS_STATUS_E_FAILURE - unknown error
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_read( VNV_TYPE type, v_VOID_t *outputVoidBuffer,
- v_VOID_t *defaultBuffer, v_SIZE_t bufferSize )
-{
- VOS_STATUS status = VOS_STATUS_SUCCESS;
- v_SIZE_t itemSize;
- v_BOOL_t itemIsValid = VOS_TRUE;
-
- // sanity check
- if (VNV_TYPE_COUNT <= type)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("%s: invalid type=%d"), __func__, type );
- return VOS_STATUS_E_INVAL;
- }
- if (NULL == outputVoidBuffer)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("Buffer provided is NULL") );
- return VOS_STATUS_E_FAULT;
- }
- if (0 == bufferSize)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("NV type=%d is invalid"), type );
- return VOS_STATUS_E_INVAL;
- }
- // check if the NV item has valid data
- status = vos_nv_getValidity( type, &itemIsValid );
- if (!itemIsValid)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_WARN,
- "NV type=%d does not have valid data", type );
- return VOS_STATUS_E_EMPTY;
- }
- switch(type)
- {
- case VNV_FIELD_IMAGE:
- itemSize = sizeof(gnvEFSTable->halnv.fields);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.fields,bufferSize);
- }
- break;
- case VNV_RATE_TO_POWER_TABLE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.pwrOptimum[0],bufferSize);
- }
- break;
- case VNV_REGULARTORY_DOMAIN_TABLE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.regDomains);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.regDomains[0],bufferSize);
- }
- break;
- case VNV_DEFAULT_LOCATION:
- itemSize = sizeof(gnvEFSTable->halnv.tables.defaultCountryTable);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.defaultCountryTable,bufferSize);
- }
- break;
- case VNV_TPC_POWER_TABLE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.plutCharacterized);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.plutCharacterized[0],bufferSize);
- }
- break;
- case VNV_TPC_PDADC_OFFSETS:
- itemSize = sizeof(gnvEFSTable->halnv.tables.plutPdadcOffset);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.plutPdadcOffset[0],bufferSize);
- }
- break;
- case VNV_RSSI_CHANNEL_OFFSETS:
-
- itemSize = sizeof(gnvEFSTable->halnv.tables.rssiChanOffsets);
-
- if(bufferSize != itemSize) {
-
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.rssiChanOffsets[0],bufferSize);
- }
- break;
- case VNV_HW_CAL_VALUES:
-
- itemSize = sizeof(gnvEFSTable->halnv.tables.hwCalValues);
-
- if(bufferSize != itemSize) {
-
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.hwCalValues,bufferSize);
- }
- break;
- case VNV_FW_CONFIG:
-
- itemSize = sizeof(gnvEFSTable->halnv.tables.fwConfig);
-
- if(bufferSize != itemSize) {
-
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.fwConfig,bufferSize);
- }
- break;
- case VNV_ANTENNA_PATH_LOSS:
- itemSize = sizeof(gnvEFSTable->halnv.tables.antennaPathLoss);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.antennaPathLoss[0],bufferSize);
- }
- break;
- case VNV_PACKET_TYPE_POWER_LIMITS:
- itemSize = sizeof(gnvEFSTable->halnv.tables.pktTypePwrLimits);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,gnvEFSTable->halnv.tables.pktTypePwrLimits,bufferSize);
- }
- break;
- case VNV_OFDM_CMD_PWR_OFFSET:
- itemSize = sizeof(gnvEFSTable->halnv.tables.ofdmCmdPwrOffset);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.ofdmCmdPwrOffset,bufferSize);
- }
- break;
- case VNV_TX_BB_FILTER_MODE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.txbbFilterMode);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.txbbFilterMode,bufferSize);
- }
- break;
-
-
- case VNV_TABLE_VIRTUAL_RATE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum_virtualRate);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(outputVoidBuffer,&gnvEFSTable->halnv.tables.pwrOptimum_virtualRate,bufferSize);
- }
- break;
-
- default:
- break;
- }
- return status;
-}
-
-/**------------------------------------------------------------------------
- \brief vos_nv_write() - write to a NV item from an input buffer
- The \a vos_nv_write() writes to a NV item from an input buffer. This would
- validate the NV item if the write operation is successful.
- \param type - NV item type
- \param inputBuffer - input buffer
- \param inputBufferSize - input buffer size
- \return VOS_STATUS_SUCCESS - NV item is read successfully
- VOS_STATUS_E_INVAL - one of the parameters is invalid
- VOS_STATUS_E_FAULT - outputBuffer pointer is NULL
- VOS_STATUS_E_EXISTS - NV type is unsupported
- VOS_STATUS_E_FAILURE - unknown error
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_write( VNV_TYPE type, v_VOID_t *inputVoidBuffer,
- v_SIZE_t bufferSize )
-{
- VOS_STATUS status = VOS_STATUS_SUCCESS;
- v_SIZE_t itemSize;
-
- // sanity check
- if (VNV_TYPE_COUNT <= type)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("%s: invalid type=%d"), __func__, type );
- return VOS_STATUS_E_INVAL;
- }
- if (NULL == inputVoidBuffer)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("Buffer provided is NULL") );
- return VOS_STATUS_E_FAULT;
- }
- if (0 == bufferSize)
- {
- VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("NV type=%d is invalid"), type );
- return VOS_STATUS_E_INVAL;
- }
- switch(type)
- {
- case VNV_FIELD_IMAGE:
- itemSize = sizeof(gnvEFSTable->halnv.fields);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.fields,inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_RATE_TO_POWER_TABLE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.pwrOptimum[0],inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_REGULARTORY_DOMAIN_TABLE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.regDomains);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.regDomains[0],inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_DEFAULT_LOCATION:
- itemSize = sizeof(gnvEFSTable->halnv.tables.defaultCountryTable);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.defaultCountryTable,inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_TPC_POWER_TABLE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.plutCharacterized);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.plutCharacterized[0],inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_TPC_PDADC_OFFSETS:
- itemSize = sizeof(gnvEFSTable->halnv.tables.plutPdadcOffset);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.plutPdadcOffset[0],inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_RSSI_CHANNEL_OFFSETS:
-
- itemSize = sizeof(gnvEFSTable->halnv.tables.rssiChanOffsets);
-
- if(bufferSize != itemSize) {
-
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.rssiChanOffsets[0],inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_HW_CAL_VALUES:
-
- itemSize = sizeof(gnvEFSTable->halnv.tables.hwCalValues);
-
- if(bufferSize != itemSize) {
-
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.hwCalValues,inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_FW_CONFIG:
-
- itemSize = sizeof(gnvEFSTable->halnv.tables.fwConfig);
-
- if(bufferSize != itemSize) {
-
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.fwConfig,inputVoidBuffer,bufferSize);
- }
- break;
- case VNV_ANTENNA_PATH_LOSS:
- itemSize = sizeof(gnvEFSTable->halnv.tables.antennaPathLoss);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.antennaPathLoss[0],inputVoidBuffer,bufferSize);
- }
- break;
-
- case VNV_PACKET_TYPE_POWER_LIMITS:
- itemSize = sizeof(gnvEFSTable->halnv.tables.pktTypePwrLimits);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(gnvEFSTable->halnv.tables.pktTypePwrLimits,inputVoidBuffer,bufferSize);
- }
- break;
-
- case VNV_OFDM_CMD_PWR_OFFSET:
- itemSize = sizeof(gnvEFSTable->halnv.tables.ofdmCmdPwrOffset);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.ofdmCmdPwrOffset,inputVoidBuffer,bufferSize);
- }
- break;
-
- case VNV_TX_BB_FILTER_MODE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.txbbFilterMode);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.txbbFilterMode,inputVoidBuffer,bufferSize);
- }
- break;
-
-
- case VNV_TABLE_VIRTUAL_RATE:
- itemSize = sizeof(gnvEFSTable->halnv.tables.pwrOptimum_virtualRate);
- if(bufferSize != itemSize) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR,
- ("type = %d buffer size=%d is less than data size=%d"),type, bufferSize,
- itemSize);
- status = VOS_STATUS_E_INVAL;
- }
- else {
- memcpy(&gnvEFSTable->halnv.tables.pwrOptimum_virtualRate,inputVoidBuffer,bufferSize);
- }
- break;
-
- default:
- break;
- }
- if (VOS_STATUS_SUCCESS == status)
- {
- // set NV item to have valid data
- status = vos_nv_setValidity( type, VOS_TRUE );
- if (! VOS_IS_STATUS_SUCCESS(status)) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, ("vos_nv_setValidity failed!!!"));
- status = VOS_STATUS_E_FAULT;
- }
- status = wlan_write_to_efs((v_U8_t*)gnvEFSTable,sizeof(*gnvEFSTable));
-
- if (! VOS_IS_STATUS_SUCCESS(status)) {
- VOS_TRACE(VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_ERROR, ("vos_nv_write_to_efs failed!!!"));
- status = VOS_STATUS_E_FAULT;
- }
- }
- return status;
-}
/**------------------------------------------------------------------------
\brief vos_nv_getChannelListWithPower() - function to return the list of
@@ -2369,65 +1223,6 @@ VOS_STATUS vos_nv_readDefaultCountryTable( uNvTables *tableData )
}
/**------------------------------------------------------------------------
- \brief vos_nv_getBuffer -
- \param pBuffer - to return the buffer address
- pSize - buffer size.
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_getNVBuffer(v_VOID_t **pNvBuffer,v_SIZE_t *pSize)
-{
- /* Send the NV structure and size */
- *pNvBuffer = (v_VOID_t *)(&pnvEFSTable->halnv);
- *pSize = sizeof(sHalNv);
-
- return VOS_STATUS_SUCCESS;
-}
-
-/**------------------------------------------------------------------------
- \brief vos_nv_getBuffer -
- \param pBuffer - to return the buffer address
- pSize - buffer size.
- \return status of the NV read operation
- \sa
- -------------------------------------------------------------------------*/
-VOS_STATUS vos_nv_getNVEncodedBuffer(v_VOID_t **pNvBuffer,v_SIZE_t *pSize)
-{
- /* Send the NV structure and size */
- *pNvBuffer = (v_VOID_t *)(pEncodedBuf);
- *pSize = nvReadEncodeBufSize;
- return VOS_STATUS_SUCCESS;
-}
-
-
-VOS_STATUS vos_nv_getNVDictionary(v_VOID_t **pNvBuffer,v_SIZE_t *pSize)
-{
- /* Send the NV structure and size */
- *pNvBuffer = (v_VOID_t *)(pDictFile);
- *pSize = nDictionarySize;
-
- return VOS_STATUS_SUCCESS;
-}
-
-VOS_STATUS vos_nv_isEmbeddedNV(v_VOID_t)
-{
- if (MAGIC_NUMBER == magicNumber)
- {
- return VOS_STATUS_SUCCESS;
- }
-
- return VOS_STATUS_E_FAILURE;
-}
-
-VOS_STATUS vos_nv_setNVEncodedBuffer(v_U8_t *pNvBuffer, v_SIZE_t size)
-{
- vos_mem_copy(pEncodedBuf, &pNvBuffer[sizeof(v_U32_t)],
- (size-sizeof(v_U32_t)));
-
- return VOS_STATUS_SUCCESS;
-}
-
-/**------------------------------------------------------------------------
\brief vos_nv_getChannelEnabledState -
\param rfChannel - input channel enum to know evabled state
\return eNVChannelEnabledType enabled state for channel
diff --git a/CORE/VOSS/src/wlan_nv_parser.c b/CORE/VOSS/src/wlan_nv_parser.c
deleted file mode 100644
index e0a7ba99922e..000000000000
--- a/CORE/VOSS/src/wlan_nv_parser.c
+++ /dev/null
@@ -1,2145 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/*===========================================================================
- EDIT HISTORY FOR FILE
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
- $Header:$ $DateTime: $ $Author: $
-
- when who what, where, why
- -------- --- -----------------------------------------------------
- 04/10/13 kumarpra nv parser creation
-===========================================================================*/
-
-#include <linux/string.h>
-#include "wlan_nv.h"
-
-/*
- * NV stream layer service
- */
-#include "wlan_nv_stream.h"
-#include "wlan_nv_template_internal.h"
-#include "wlan_nv_parser_internal.h"
-#include "wlan_nv_template_api.h"
-#include "wlan_nv_template_builtin.h"
-
-#define _RECURSIVE_DATA_TABLE_PARSING
-// Recursive/iterative switch !! Default iterative
-#define _RECURSIVE_VERSION
-
-/*
- * Build process should have created the built-in templates in
- * "wlan_nv_templateBuiltIn.c"
- * Include its auto-generated companion header file
- * "wlan_nv_templateBuiltIn.h"
- *
- * The main definitions are
- * _NV_TEMPLATE_TABLE NvTablesBuiltIn[];
- *
- */
-
-/*
- * Parsing control bitmap
- */
-tANI_U32 gNVParsingControlLo;
-static int subTableSize;
-static int fieldSize;
-static sHalNv *gpnvData_t;
-/* store enum comparison results*/
-static _ENUM_META_DATA enumMetaDataFromBin[INDEX_ENUM_MAX];
-
-
-/*
- * This data copy logic ignores the enum or int data types,
- * but simply copy the whole chunk to the NV data structure
- */
-typedef struct {
- int idxSubFromBin;
- int idxSubBuiltin;
-} _SUBTABLES_QUEUE;
-
-pF_NumElemBasedOnStorageType numElemBasedOnStorageType[] = {
- numElemSingular, // SINGULAR=0
- numElemArray1, // ARRAY_1=1
- numElemArray2, // ARRAY_2=2
- numElemArray3, // ARRAY_3=3
-};
-
-static int sizeOneElemBasedOnFieldIdBasicDataType[] = {
- 1, // _FIELD_ID_DATA_TYPE_U8 =0
- 4, // _FIELD_ID_DATA_TYPE_U32
- 1, // _FIELD_ID_DATA_TYPE_S8
- 4, // _FIELD_ID_DATA_TYPE_S32
- 2, // _FIELD_ID_DATA_TYPE_U16
- 2, // _FIELD_ID_DATA_TYPE_S16
-};
-
-static _NV_STREAM_BUF nvStream[_NV_STREAM_LEN_MAX];
-static int subTableRd, subTableWr;
-
-#if !defined(_RECURSIVE_VERSION)
-#define _SUBTABLES_MAX 32
-static _SUBTABLES_QUEUE subTablesQueue[_SUBTABLES_MAX];
-#endif
-
-/*==============================================================================
-*
-* Storage for NvTablesFromBin
-*
-*===============================================================================
-*/
-
-/*
- * Init NvTablesFromBin
- * All entries are initialized to 0, pointers to NULL
-*/
-
-_NV_TEMPLATE_TABLE NvTablesFromBin[TABLES_MAX][TABLE_ENTRIES_MAX] = {
- { /* TABLE_LAST*/
- {{nul}, 0, 0, 0, 0, 0, 0, {nul}},
- },
-};
-
-static void initNvTablesFromBin(void)
-{
- int i, j;
-
- for (i = 0; i < TABLES_MAX; i++) {
- for (j = 0; j < TABLE_ENTRIES_MAX; j++) {
- NvTablesFromBin[i][j].fieldName[0] = nul;
- NvTablesFromBin[i][j].fieldName[1] = nul;
- NvTablesFromBin[i][j].fieldName[2] = nul;
- NvTablesFromBin[i][j].fieldId = 0;
- NvTablesFromBin[i][j].fieldStorageType = 0;
- NvTablesFromBin[i][j].fieldStorageSize1 = 0;
- NvTablesFromBin[i][j].fieldStorageSize2 = 0;
- NvTablesFromBin[i][j].fieldStorageSize3 = 0;
- NvTablesFromBin[i][j].offset = 0;
- NvTablesFromBin[i][j].fieldFullName[0] = nul;
- NvTablesFromBin[i][j].fieldFullName[1] = nul;
- NvTablesFromBin[i][j].fieldFullName[2] = nul;
- }
- }
-
- return;
-}
-
-/*==============================================================================
-*
-* Storage for NvEnumsFromBin
-*
-* ==============================================================================
-*/
-
-/*
- * Prepare the NV enum templates storage parsed from nv.bin
- * They are used later for parsing the nv.bin data
- * All entries are initialized to 0, pointers to NULL
- */
-
-_NV_TEMPLATE_ENUM NvEnumsFromBin[INDEX_ENUM_MAX][ENUM_ENTRIES_MAX] = {
- { /* INDEX_ENUM_LAST */
- {{nul}, 0, 0, {nul}},
- },
-};
-
-static void initNvEnumsFromBin(void)
-{
- int i, j;
-
- for(i = 0; i < INDEX_ENUM_MAX; i++) {
- for(j = 0; j < ENUM_ENTRIES_MAX; j++) {
- NvEnumsFromBin[i][j].enumName[0] = nul;
- NvEnumsFromBin[i][j].enumName[1] = nul;
- NvEnumsFromBin[i][j].enumName[2] = nul;
- NvEnumsFromBin[i][j].enumValue = 0;
- NvEnumsFromBin[i][j].enumValuePeer = 0xFF;
- NvEnumsFromBin[i][j].enumFullName[0] = nul;
- }
- }
- return;
-}
-
-
-// =============================================================================
-//
-// Parse template streams
-//
-// =============================================================================
-
-/*
- * Read nv.bin to extract the template info
- * _NV_TEMPLATE_TABLE NvTablesFromBin[];
- */
-
-/*
- * Parse nv.bin data and extract to the build-in data storage
- *
- * There are two outcomes from earlier templates comparison operation.
- * different or identical
- * If identical, this operation will most likely take place.
- * If different,
- * One is to simply indicate to the user and abort reading the nv.bin data
- * The other is to continue this operation, and extract the matching entries
- * in nv.bin
- */
-
-/*
- * The template based NV logic:
- * - the s/w module has the built-in templates
- * - nv.bin is read one stream at a time, sequentially from beginning to end
- * - if the stream is an enum stream,
- * - add to nv.bin template data structure
- * - compare with the built in template, by the string ID
- * - if two match, move on
- * - if not match, indicate mismatch, act based on the global logic
- * _ selection
- * - if abort, exit here
- * - if extract-matching-ones,
- * - copy the enum from the built-in template over to a separate
- * _ column
- * - when the enum comparison is done, all correlated enums have
- * - a built-in enum value
- * - all mismtached ones have 0xff
- * - else if the stream is a table
- * - add to nv.bin template data structure
- * - compare with the built-in template, by the field string ID
- * - if two tables match, move on
- * - if not match, indicate mismatch and proceed based on the global
- * - logic selection
- * - if abort, exit here
- * - if extract-matching-ones,
- * - copy the built-in template offset to a separate column
- * - eles if the stream is a data stream
- * - parse the data stream based on the accumulated NV templates so far,
- * - note at this point,
- * - 1. the accumulated templates may be incomplete, to make up the
- * - whole NV structure
- * - 2. some will be "overwritten" by later templates definitions
- * - that change the earlier templates)
- * - how to parse?
- * - based on the nv.bin accumulated templates so far,
- * - select the table definition from the data stream,
- * - find the corresponding table template,
- * - start parsing data based on the template's field string IDs,
- * - field by field sequentially.
- * - if the field is a nested table,
- * - go inside to the next level
- * - if the field is a basic type,
- * - copy data of the given size to the offset which is the
- * - offset in the built-in nv data storage
- * - end of the logic
- */
-
-/*----------------------------------------------------------------------------
- \brief nvParser() - parse nv data provided in input buffer and store
- \ output in sHalNv
- \param inputEncodedbuffer, length, sHalNv - ptr to input stream,
- \param length, sHalNv
- \return success when successfully decode and copy to sHalNv structure
- \sa
------------------------------------------------------------------------------*/
-
-VOS_STATUS nvParser(tANI_U8 *pnvEncodedBuf, tANI_U32 nvReadBufSize,
- sHalNv *hal_nv)
-{
- _STREAM_RC streamRc;
- _NV_STREAM_BUF *pStream = &nvStream[0];
- tANI_U32 len;
- _ErrorCode errCode = _OK;
- VOS_STATUS ret = VOS_STATUS_SUCCESS;
- gpnvData_t = hal_nv;
-
- // prepare storages for parsing nv.bin
- initNvTablesFromBin();
- initNvEnumsFromBin();
-
- // init stream read pointer
- initReadStream(pnvEncodedBuf, nvReadBufSize);
-
- // get and process streams one by one
- while (RC_FAIL != (streamRc = NEXT_STREAM(&len, &nvStream[0])) ) {
- // need to copy, stream layer is freeing it
- if (len > _NV_STREAM_LEN_MAX) {
- errCode = _STREAM_NOT_FIT_BUF;
- goto _error;
- }
- // template or data
- if (IsStreamTemplate(pStream[_NV_BIN_STREAM_HEADER_BYTE])) {
- if (_MIS_MATCH == processNvTemplate(pStream, len)) {
- if (_FLAG_AND_ABORT(gNVParsingControlLo) ) {
- errCode = _SW_BIN_MISMATCH;
- break;
- }
- }
- }
- else {
- processNvData(pStream, len);
- }
- }
-
-_error:
- if (_OK != errCode) {
- ret = VOS_STATUS_E_INVAL;
- }
-
- // all done
- return ret;
-}
-
-static _NV_TEMPLATE_PROCESS_RC processNvTemplate(_NV_STREAM_BUF *pStream,
- int len)
-{
- // Table or enum
- if (IsTemplateStreamTable(pStream[_NV_BIN_STREAM_HEADER_BYTE])) {
- return processNvTemplateTable(pStream, len);
- }
- else {
- return processNvTemplateEnum(pStream, len);
- }
-}
-
-/* -----------------------------------------------------------------------------
- *
- * Parse one table template stream in nv.bin
- * The length of table templates varies, based on the field ID class,
- * field size type
- */
-
-static _NV_TEMPLATE_PROCESS_RC processNvTemplateTable(_NV_STREAM_BUF *pStream,
- int len)
-{
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
- char tableNameFromBin[_TABLE_NAME_LEN +1];
- int tableIdxFromBin;
-
- // construct the template table in the NvTablesFromBin
- memset((void*)tableNameFromBin, '\0', (size_t) (_TABLE_NAME_LEN +1));
- tableIdxFromBin = constructATemplateTable(pStream, len, tableNameFromBin);
-
- // fetch the table name from the first entry, the Table of all tables
- // search for the corresponding table in NvDataBuiltIn
- if (tableIdxFromBin) {
- rc = compareWithBuiltinTable(tableIdxFromBin, tableNameFromBin);
- }
- // done
- return rc;
-}
-
-static int getOffsetFromBuiltIn(char *tableNameFromBin)
-{
- int offset = _OFFSET_NOT_SET;
- int i;
-
- _NV_TEMPLATE_TABLE (*pTableBuiltin)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn;
- // search NvTablesBuiltIn for the same string named table, and its idx
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTableBuiltin[0][i].fieldName[0]) {
- break;
- }
- if (!strcmp(tableNameFromBin, pTableBuiltin[0][i].fieldName)) {
- offset = pTableBuiltin[0][i].offset;
- break;
- }
- }
- return offset;
-}
-
-/*
- * Construct a table template in the NvTablesFromBin
- * it returns the newly constructed table, for comparison with NvTablesBuiltIn
- */
-static int constructATemplateTable(_NV_STREAM_BUF *pStream, int len,
- char *tableStrName)
-{
- int pos = 0;
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin;
- int tableIdx, entryIdx;
- int i;
- _ErrorCode errCode = _OK;
-
- tableIdx = (pStream[_NV_BIN_STREAM_TABLE_ID_BYTE] &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
-
- if (IsIdxTableOfAllTables(tableIdx)) {
- }
- else {
- // find the string name of the table
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTable[0][i].fieldName[0]) {
- break;
- }
- if ((pTable[0][i].fieldId & FIELD_ID_TABLE_OR_ENUM_IDX_MASK) ==
- tableIdx) {
- strlcpy(tableStrName, pTable[0][i].fieldName, (_TABLE_NAME_LEN +1));
- break;
- }
- }
- if (TABLE_ENTRIES_MAX == i) {
- // if string name not found, don't know what to do
- errCode = _TABLE_NON_EXIST_IN_TABLE_OF_ALL_TABLES;
- goto _error;
- }
- }
-
- // check if the table is already populated
- if (nul != pTable[tableIdx][0].fieldName[0]) { // there is data in that enty
- // tbd: decision logic based on Parsing Control (bitmap)
- }
-
- // overwrite table entry, tableIdx
- pos = _TABLE_FIELDS_POS;
- entryIdx = 0;
- while (pos < len) {
- if (!(pos <= (len - _TABLE_FIELD_MIN_LEN))) {
- // error condition
- errCode = _INSUFFICIENT_FOR_FIELD_PARSER_ERROR;
- break;
- }
-
- // populate the entry
- memset(pTable[tableIdx][entryIdx].fieldName, '\0',
- (size_t) (_TABLE_NAME_LEN + 1));
- memset(pTable[tableIdx][entryIdx].fieldFullName, '\0',
- (size_t) (_TABLE_FIELD_FULL_NAME_LEN + 1));
- pTable[tableIdx][entryIdx].fieldName[0] = pStream[pos++];
- pTable[tableIdx][entryIdx].fieldName[1] = pStream[pos++];
- pTable[tableIdx][entryIdx].fieldId = pStream[pos++];
- pTable[tableIdx][entryIdx].fieldStorageType = pStream[pos++];
- pTable[tableIdx][entryIdx].fieldStorageSize1 = 0;
- pTable[tableIdx][entryIdx].fieldStorageSize2 = 0;
- pTable[tableIdx][entryIdx].fieldStorageSize3 = 0;
- pTable[tableIdx][entryIdx].offset =
- getOffsetFromBuiltIn(pTable[tableIdx][entryIdx].fieldName);
-
- if (SINGULAR ==
- _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) {
- }
- else if (ARRAY_1 ==
- _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) {
- pTable[tableIdx][entryIdx].fieldStorageSize1 = pStream[pos++];
- }
- else if (ARRAY_2 ==
- _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) {
- pTable[tableIdx][entryIdx].fieldStorageSize1 = pStream[pos++];
- pTable[tableIdx][entryIdx].fieldStorageSize2 = pStream[pos++];
- }
- else if (ARRAY_3 ==
- _STORAGE_TYPE(pTable[tableIdx][entryIdx].fieldStorageType)) {
- pTable[tableIdx][entryIdx].fieldStorageSize1 = pStream[pos++];
- pTable[tableIdx][entryIdx].fieldStorageSize2 = pStream[pos++];
- pTable[tableIdx][entryIdx].fieldStorageSize3 = pStream[pos++];
- }
- //
- entryIdx++;
- }
-
-_error:
- if (_OK != errCode) {
- }
-
- // all done
- return tableIdx;
-}
-
-/* -----------------------------------------------------------------------------
- *
- * Table Compare logic:
- *
- * 1. the fields need to be in the same order. Looping through fields doesn't
- * guarantee order.
- * 2. whenever mismatch occurs in this "same-order" comparison, flag.
- * 3. If extract matching entries' option is selected, proceed to nv.bin table
- * and extract data.
- *
- * Note
- * "compareWithBuiltinTable" is the initiating point.
- * "compare2Tables" is the top level compare logic.
- * it is naturally implemented as a recursive call, but out of stack
- * overflow concern,
- * it is also implemented as an iterative loop.
- *
- */
-
-static _NV_TEMPLATE_PROCESS_RC compareWithBuiltinTable(int idxFromBin,
- char *tableNameFromBin)
-{
- int i;
- _NV_TEMPLATE_TABLE (*pTableBuiltin)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn;
- int tableIdxBuiltin = 0;
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
- _ErrorCode errCode = _OK;
-
- // search NvTablesBuiltIn for the same string named table, and its idx
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTableBuiltin[0][i].fieldName[0]) {
- break;
- }
- if (!strcmp(tableNameFromBin, pTableBuiltin[0][i].fieldName)) {
- tableIdxBuiltin = (pTableBuiltin[0][i].fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
- break;
- }
- }
-
- // compare and copy values
- if (!tableIdxBuiltin) {
- errCode = _TABLE_NON_EXIST_IN_TABLE_OF_ALL_TABLES;
- rc = _MIS_MATCH;
- }
- else {
- subTableRd = 0;
- subTableWr = 0;
-
- // fire the comparison logic
- if (_MIS_MATCH == compare2Tables(idxFromBin, tableIdxBuiltin)) {
- rc = _MIS_MATCH;
- }
-
- // for iterative version
- // return code (rc) should only be set to _MIS_MATCH when it happens at
- // least once
-#if !defined(_RECURSIVE_VERSION)
- {
- int idxSubFromBin, idxSubBuiltin;
- while (subTableRd != subTableWr) {
- idxSubFromBin = subTablesQueue[subTableRd].idxSubFromBin;
- idxSubBuiltin = subTablesQueue[subTableRd].idxSubBuiltin;
- if (_MIS_MATCH == compare2Tables(idxSubFromBin, idxSubBuiltin)) {
- rc = _MIS_MATCH;
- }
- // increment read pointer
- subTableRd = (subTableRd+1) % _SUBTABLES_MAX;
- }
- }
-#endif //#if !defined(_RECURSIVE_VERSION)
- }
-
-//_error:
- if (_OK != errCode) {
- //printf("Error %d \n", errCode);
- }
-
- //
- return rc;
-}
-
-static _NV_TEMPLATE_PROCESS_RC compare2Tables(int idxFromBin, int idxBuiltin)
-{
- int i, j;
- _NV_TEMPLATE_TABLE (*pTableBuiltIn)[TABLE_ENTRIES_MAX];
- _NV_TEMPLATE_TABLE (*pTableFromBin)[TABLE_ENTRIES_MAX];
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
-
- pTableBuiltIn = NvTablesBuiltIn;
- pTableFromBin = NvTablesFromBin;
-
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if ((nul == pTableBuiltIn[idxBuiltin][i].fieldName[0]) ||
- // end of table occurs in either table
- (nul == pTableFromBin[idxFromBin][i].fieldName[0])) {
- // end of table occurs in either table
- if ((nul == pTableBuiltIn[idxBuiltin][i].fieldName[0]) &&
- (nul == pTableFromBin[idxFromBin][i].fieldName[0])) {
- rc = _MATCH;
- }
- else {
- rc = _MIS_MATCH;
-
- for (j=0; j<TABLE_ENTRIES_MAX; j++) {
- if (nul == pTableBuiltIn[idxBuiltin][j].fieldName[0]) {
- // end of bin table
- break;
- }
- if (!strcmp(
- (const char*) pTableBuiltIn[idxBuiltin][j].fieldName,
- (const char*) pTableFromBin[idxFromBin][i].fieldName)) {
- // found matching field in bin table
- // DO NOT check return code, it's already a mismatch
- compare2FieldsAndCopyFromBin(
- &(pTableBuiltIn[idxBuiltin][j]),
- &(pTableFromBin[idxFromBin][i]), idxBuiltin,
- idxFromBin);
- break;
- }
- }
- }
- break; // end of table, either table, condition
- }
- else {
- if (!strcmp(pTableBuiltIn[idxBuiltin][i].fieldName,
- pTableFromBin[idxFromBin][i].fieldName)) {
- // two field names match
- if (_MATCH == compare2FieldsAndCopyFromBin(
- &(pTableBuiltIn[idxBuiltin][i]),
- &(pTableFromBin[idxFromBin][i]),
- idxBuiltin, idxFromBin)) {
- rc = _MATCH;
- }
- else {
- rc = _MIS_MATCH;
- if ( _FLAG_AND_ABORT(gNVParsingControlLo) ) {
- break;
- }
- }
- }
- else {
- rc = _MIS_MATCH;
- if ( _FLAG_AND_ABORT(gNVParsingControlLo) ) {
- break;
- }
- // else
- // loop through the WHOLE bin tables, looking for a matching field.
- // this would take care of both cases where bin table field is
- // either "ahead" or "behind"
- for (j = 0; j < TABLE_ENTRIES_MAX; j++) {
- // end of bin table
- if (nul == pTableFromBin[idxBuiltin][j].fieldName[0]) {
- break;
- }
- if (!strcmp(pTableBuiltIn[idxBuiltin][j].fieldName,
- pTableFromBin[idxFromBin][i].fieldName)) {
- // found matching field in bin table
- // DO NOT check return code, it's already a mismatch
- compare2FieldsAndCopyFromBin(&(pTableBuiltIn[idxBuiltin][j]),
- &(pTableFromBin[idxFromBin][i]), idxBuiltin, idxFromBin);
- break;
- }
- }
- }
- }
- }
-
- return rc;
-}
-
-static _NV_TEMPLATE_PROCESS_RC compare2FieldsAndCopyFromBin(
- _NV_TEMPLATE_TABLE*pTableBuiltIn,
- _NV_TEMPLATE_TABLE *pTableFromBin, int idxBuiltin, int idxFromBin)
-{
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
-
- // Verified already the fieldNames match
- // fieldId type matching?
- /*
- * If it's a simple type, simple comparison, ==,after mask out the data type
- * else if it's a table, need to compare 2 tables, don't call recursively
- */
- if (_MIS_MATCH == compare2FieldIDType(pTableBuiltIn, pTableFromBin,
- idxBuiltin, idxFromBin)) {
- rc = _MIS_MATCH;
- goto _end;
- }
- // storage type matching?
- // If it's SINGULAR, simple == comparison
- // else if it's ARRAY_n, besides check ARRAY_n equal, check sizes
- // if sizes are Index_int, simple comparison
- // else if sizes are INDEX_ENUM, need to loop through enums
- //
- if (_MIS_MATCH == compare2FieldStorageTypeAndSizes(pTableBuiltIn,
- pTableFromBin, idxBuiltin, idxFromBin)) {
- rc = _MIS_MATCH;
- goto _end;
- }
-
- // all matched, copy offset over
- rc = _MATCH;
- pTableFromBin->offset = pTableBuiltIn->offset;
-
-_end:
- return rc;
-}
-
-static _NV_TEMPLATE_PROCESS_RC compare2FieldIDType(
- _NV_TEMPLATE_TABLE *pTableBuiltIn,
- _NV_TEMPLATE_TABLE *pTableFromBin, int idxBuiltin, int idxFromBin)
-{
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
-
- if (IsFieldTypeBasicData(pTableBuiltIn->fieldId)) {
- if (pTableBuiltIn->fieldId == pTableFromBin->fieldId) {
- rc = _MATCH;
- }
- else {
- rc = _MIS_MATCH;
- }
- }
- else { // field is a table
- int idxSubBuiltin = pTableBuiltIn->fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK;
- int idxSubFromBin = pTableFromBin->fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK;
-#if defined(_RECURSIVE_VERSION)
- rc = compare2Tables(idxSubFromBin, idxSubBuiltin);
-#else
- {
- subTablesQueue[subTableWr].idxSubFromBin = idxSubFromBin;
- subTablesQueue[subTableWr].idxSubBuiltin = idxSubBuiltin;
- subTableWr = (subTableWr +1) % _SUBTABLES_MAX;
- }
-#endif //#if defined(_RECURSIVE_VERSION)
- }
-
- return rc;
-}
-
-
-static _NV_TEMPLATE_PROCESS_RC compare2FieldStorageTypeAndSizes(
- _NV_TEMPLATE_TABLE *pTableBuiltIn,
- _NV_TEMPLATE_TABLE *pTableFromBin, int idxBuiltIn, int idxFromBin)
-{
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
-
- if (_STORAGE_TYPE(pTableBuiltIn->fieldStorageType) ==
- _STORAGE_TYPE(pTableFromBin->fieldStorageType)) {
- if (SINGULAR == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) {
- rc = _MATCH;
- }
- else if (ARRAY_1 == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) {
- if ((_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin,
- _STORAGE_SIZE1(pTableBuiltIn->fieldStorageSize1,
- pTableBuiltIn->fieldStorageType),
- _STORAGE_SIZE1(pTableFromBin->fieldStorageSize1,
- pTableFromBin->fieldStorageType),
- pTableBuiltIn->fieldStorageSize1,
- pTableFromBin->fieldStorageSize1)) ) {
-
- rc = _MATCH;
- }
- }
- else if (ARRAY_2 == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) {
- if ((_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin,
- _STORAGE_SIZE1(pTableBuiltIn->fieldStorageSize1,
- pTableBuiltIn->fieldStorageType),
- _STORAGE_SIZE1(pTableFromBin->fieldStorageSize1,
- pTableFromBin->fieldStorageType),
- pTableBuiltIn->fieldStorageSize1,
- pTableFromBin->fieldStorageSize1)) &&
- (_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin,
- _STORAGE_SIZE2(pTableBuiltIn->fieldStorageSize2,
- pTableBuiltIn->fieldStorageType),
- _STORAGE_SIZE2(pTableFromBin->fieldStorageSize2,
- pTableFromBin->fieldStorageType),
- pTableBuiltIn->fieldStorageSize2,
- pTableFromBin->fieldStorageSize2)) ) {
- rc = _MATCH;
- }
- }
- else if (ARRAY_3 == _STORAGE_TYPE(pTableBuiltIn->fieldStorageType)) {
- if ((_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin,
- _STORAGE_SIZE1(pTableBuiltIn->fieldStorageSize1,
- pTableBuiltIn->fieldStorageType),
- _STORAGE_SIZE1(pTableFromBin->fieldStorageSize1,
- pTableFromBin->fieldStorageType),
- pTableBuiltIn->fieldStorageSize1,
- pTableFromBin->fieldStorageSize1)) &&
- (_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin,
- _STORAGE_SIZE2(pTableBuiltIn->fieldStorageSize2,
- pTableBuiltIn->fieldStorageType),
- _STORAGE_SIZE2(pTableFromBin->fieldStorageSize2,
- pTableFromBin->fieldStorageType),
- pTableBuiltIn->fieldStorageSize2,
- pTableFromBin->fieldStorageSize2)) &&
- (_MATCH == compare2StorageSize(idxBuiltIn, idxFromBin,
- _STORAGE_SIZE3(pTableBuiltIn->fieldStorageSize3,
- pTableBuiltIn->fieldStorageType),
- _STORAGE_SIZE3(pTableFromBin->fieldStorageSize3,
- pTableFromBin->fieldStorageType),
- pTableBuiltIn->fieldStorageSize3,
- pTableFromBin->fieldStorageSize3)) ) {
- rc = _MATCH;
- }
- }
- }
- else {
- rc = _MIS_MATCH;
- }
- return rc;
-}
-
-static _NV_TEMPLATE_PROCESS_RC compare2StorageSize(int idxBuiltIn,
- int idxFromBin, int sizeBuiltIn,
- int sizeFromBin, tANI_U8 sizeBuiltInLowByte, tANI_U8 sizeFromBinLowByte)
-{
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
-
- if (IsFieldSizeInt(sizeBuiltInLowByte) &&
- IsFieldSizeInt(sizeFromBinLowByte)) {
- if (sizeBuiltIn == sizeFromBin) {
- rc = _MATCH;
- }
- else {
- rc = _MIS_MATCH;
- }
- }
- else if (!IsFieldSizeInt(sizeBuiltInLowByte) &&
- !IsFieldSizeInt(sizeFromBinLowByte)) {
- // enums should have been compared when enum streams are parsed
- // The implication is that the enum streams should go before tables'
- rc = enumMetaDataFromBin[idxFromBin].match;
- }
- else {
- rc = _MIS_MATCH;
- }
-
- return rc;
-}
-
-/*
- * ----------------------------------------------------------------------------
- *
- * Parse one enum template stream in nv.bin
- */
-static _NV_TEMPLATE_PROCESS_RC processNvTemplateEnum(_NV_STREAM_BUF *pStream,
- int len)
-{
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
- char enumStr[_ENUM_NAME_LEN + 1];
- //_NV_TEMPLATE_ENUM *pEnum;
- int enumIdx;
-
- // construct the enum template in the NvEnumsFromBin
- memset((void*)enumStr, '\0', (size_t) (_ENUM_NAME_LEN + 1));
- enumIdx = constructATemplateEnum(pStream, len, enumStr);
-
- // Compare the enum template
- // also record compare results for later use in the table
- // templates parsing where
- // the fields may be indexed by enums
- // if enumIdx ==0, didn't construct any entry,
- // (or only the first entry)
- if (enumIdx) {
- compareEnumWithBuiltin(enumStr, enumIdx);
- }
-
- return rc;
-}
-
-static void compareEnumWithBuiltin(char *enumStr, int enumIdxFromBin)
-{
- int i;
- int enumIdxBuiltin = 0;
- _NV_TEMPLATE_ENUM (*pEnumBuiltin)[ENUM_ENTRIES_MAX] = NvEnumsBuiltIn;
- _ErrorCode errCode = _OK;
-
- for (i = 0; i < ENUM_ENTRIES_MAX; i++) {
- if (nul == pEnumBuiltin[0][i].enumName[0]) {
- break;
- }
- if (!strcmp(enumStr, pEnumBuiltin[0][i].enumName)) {
- enumIdxBuiltin = pEnumBuiltin[0][i].enumValue;
- break;
- }
- }
- if (!enumIdxBuiltin) {
- errCode = _ENUM_NOT_FOUND_IN_BUILT_IN;
- return;
- }
- else {
- compare2EnumEntriesAndCopy(enumIdxFromBin, enumIdxBuiltin);
- }
-
-//_error:
- if (_OK != errCode) {
- //printf("Error %d\n", errCode);
- }
-
- return;
-}
-
-static _NV_TEMPLATE_PROCESS_RC compare2EnumEntriesAndCopy(int idxFromBin,
- int idxBuiltin)
-{
- int i,j;
- _NV_TEMPLATE_PROCESS_RC rc = _MATCH;
- _NV_TEMPLATE_ENUM (*enumsFromBin)[ENUM_ENTRIES_MAX] = NvEnumsFromBin;
- _NV_TEMPLATE_ENUM (*enumsBuiltin)[ENUM_ENTRIES_MAX] = NvEnumsBuiltIn;
-
- // need to go through all enums
- for (i = 0; i < ENUM_ENTRIES_MAX; i++) {
- // end conditions: either both reach the end (match),
- // or one of them reaching the end (mismatch)
- if ((nul == enumsBuiltin[idxBuiltin][i].enumName[0]) ||
- (nul == enumsFromBin[idxFromBin][i].enumName[0])) {
- if ((nul == enumsBuiltin[idxBuiltin][i].enumName[0]) &&
- (nul == enumsFromBin[idxFromBin][i].enumName[0])) {
- // fully matched
- rc = _MATCH;
- break;
- }
- else {
- rc = _MIS_MATCH;
- for (j = 0; j < ENUM_ENTRIES_MAX; j++) {
- if (nul == enumsBuiltin[idxBuiltin][j].enumName[0]) {
- break;
- }
- if (!strcmp((const char*)enumsFromBin[idxFromBin][i].enumName,
- (const char*)enumsBuiltin[idxBuiltin][j].enumName)) {
- enumsFromBin[idxFromBin][i].enumValuePeer =
- enumsBuiltin[idxBuiltin][j].enumValue;
- break;
- }
- }
- break;
- }
- }
- else {
- if (!strcmp(enumsBuiltin[idxBuiltin][i].enumName,
- enumsFromBin[idxFromBin][i].enumName)) {
- // copy builtIn enum value to fromBin
- enumsFromBin[idxFromBin][i].enumValuePeer =
- enumsBuiltin[idxBuiltin][i].enumValue;
- }
- else {
- // mismatch, but still loop through the whole enum list
- // for the "ahead" and "behind" scenarios
- rc = _MIS_MATCH;
- for (j = 0; j < ENUM_ENTRIES_MAX; j++) {
- if (nul == enumsBuiltin[idxBuiltin][j].enumName[0]) {
- break;
- }
- if (!strcmp(enumsFromBin[idxFromBin][i].enumName,
- enumsBuiltin[idxBuiltin][j].enumName)) {
- enumsFromBin[idxFromBin][i].enumValuePeer =
- enumsBuiltin[idxBuiltin][j].enumValue;
- break;
- }
- }
- }
- }
- }
-
- // record match or mismatch for later data parsing use
- enumMetaDataFromBin[idxFromBin].match = rc;
-
- // all done
- return rc;
-}
-
-static int constructATemplateEnum(_NV_STREAM_BUF *pStream, int len,
- char *enumStr)
-{
- int pos = 0;
- _NV_TEMPLATE_ENUM (*pEnum)[ENUM_ENTRIES_MAX];
- int enumIdx = 0;
- int i;
- int entryIdx;
- _ErrorCode errCode = _OK;
-
- enumIdx = (pStream[_NV_BIN_STREAM_ENUM_ID_BYTE] &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
- pEnum = NvEnumsFromBin;
-
- // find its string name
- // the logic:
- // since the nv.bin doesn't encode the enum string name in the actual enum
- // stream, only the first "enum of all enums"
- // has the names of all enums.
- if (IsIdxEnumOfAllEnums(enumIdx)) {
- }
- else {
- for (i = 0; i < ENUM_ENTRIES_MAX; i++) {
- if (nul == pEnum[0][i].enumName[0]) {
- break;
- }
- if (pEnum[0][i].enumValue == enumIdx) {
- strlcpy(enumStr, pEnum[0][i].enumName,(_ENUM_NAME_LEN + 1));
- break;
- }
- }
- if (ENUM_ENTRIES_MAX == i) {
- // without a string name, don't know what to do with the enum indexed
- errCode = _ENUM_NOT_FOUND_IN_BUILT_IN;
- goto _error;
- }
- }
-
- // Found the enum string name, now parsing decision time ...
- // Is the entry already populated?
- if (nul != pEnum[enumIdx][0].enumName[0]) { // there is data in that entry
- // TBD:
- // the logic here depends on how we support "parsing data based on the
- // latest template".
- // one way is to overwrite the template, so the subsequent parsing will
- // be based on the "latest".
- // the second way is to "append" the template, and the parsing should
- // always be based on the "last" of the same name
- // for simplicity, support the first approach for now.
- //
- // the logic:
- // based on the parsing control (bitmap), we may proceed on overwriting
- // enums with blind faith that the writing logic is correct,
- // or ignore the appended.
- //
- }
-
- // overwrite entry, enumIdx
- pos = _ENUM_START_POS;
- entryIdx = 0;
- while (pos < len) {
- if (!(pos <= (len - _ENUM_MIN_LEN))) {
- // error condition
- errCode = _INSUFFICIENT_FOR_FIELD_PARSER_ERROR;
- break;
- }
-
- // populate the entry
- memset(pEnum[enumIdx][entryIdx].enumName, '\0',
- (size_t) (_ENUM_NAME_LEN +1));
- memset(pEnum[enumIdx][entryIdx].enumFullName, '\0',
- (size_t) (_ENUM_FULL_NAME_LEN +1));
- pEnum[enumIdx][entryIdx].enumName[0] = pStream[pos++];
- pEnum[enumIdx][entryIdx].enumName[1] = pStream[pos++];
- pEnum[enumIdx][entryIdx].enumValue = pStream[pos++];
- entryIdx++;
- }
-
-_error:
- if (_OK != errCode) {
- //printf("Error %d\n", errCode);
- }
-
- // all done
- return enumIdx;
-}
-
-/* -----------------------------------------------------------------------------
- *
- * Process data stream
- * The purpose is to copy nv.bin data into built in NV data structure.
- * This is the parser function.
- *
- * Next phase:
- * With NV data in the s/w module data structure, nv.bin conforming
- * to the new format can be generated. That is the nv.bin generation logic.)
- *
- * Data stream has the following format
- *
- * delimiter|streamHeader|tableID|data....|CRC|delimiter
- * Note
- * 1. delimiters are not present in the stream data, pStream.
- * 2. nested tables do NOT have table IDs with them.
- *
- */
-// NV data, per built in templates
-// Recursive table parsing, which is naturally depth-first
-// If iterative, a bit hard to implement
-
-static void parseSubDataTable4Size(int tableIdx, int numElem)
-{
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin;
- int idxSubTable;
- int i;
- int numSubElem = 0, idx=0;
-
- // "apply" template to data -- parsing the actual NV data,
- // so far we have been parsing and building templates
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTable[tableIdx][i].fieldName[0]) {
- // data parsing done for this stream
- break;
- }
- if (IsFieldTypeBasicData(pTable[tableIdx][i].fieldId)) {
- getBasicDataSize(&(pTable[tableIdx][i]));
- }
- else {
- // number of element
- idx =
- _STORAGE_TYPE(pTable[tableIdx][i].fieldStorageType);
- numSubElem = numElemBasedOnStorageType[idx](
- &(pTable[tableIdx][i]), 1);
- // get size of the sub-table
- idxSubTable = (pTable[tableIdx][i].fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
- // recursive calls for the total size of the subtable
- parseSubDataTable4Size(idxSubTable, numSubElem);
- }
- }
- // update subTableSize for the number of elements
- subTableSize *= numElem;
-
- return;
-}
-
-static void copyDataToBuiltInFromBin(int tableIdx,int fieldId,
- _NV_STREAM_BUF *pStream, int *pos, int addOffset, int tableBaseOffset)
-{
- int i,j,k,storageType;
- int idx=0, size1=0, size2=0, size3=0;
- int enumIdx1=0, enumIdx2=0, enumIdx3=0, sizeOneElem=0;
- int isFirstFieldEnum=0,isSecondFieldEnum=0,isThirdFieldEnum=0;
- int index,index1,index2;
- int dindex,dindex1,dindex2,totalSize;
- int offset=0,sizeBuiltIn,tableIdxBuiltIn,fieldIdBuiltIn;
- int idxBuiltIn=0, size1BuiltIn=0, size2BuiltIn=0, size3BuiltIn=0;
- int size1Bin=0, size2Bin=0, size3Bin=0, numElemBuiltIn;
- int sizeOneElemBuiltIn=0, field;
- unsigned char *ptr, *dptr;
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin;
- _NV_TEMPLATE_TABLE (*pTableBuiltIn)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn;
-
- storageType = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType);
- field = pTable[tableIdx][fieldId].fieldId;
- sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[field &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK];
- sizeBuiltIn = getBuiltInFieldCount(tableIdx,
- pTable[tableIdx][fieldId].fieldName,
- &tableIdxBuiltIn,&fieldIdBuiltIn,&numElemBuiltIn);
-
- field = pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldId;
- sizeOneElemBuiltIn = sizeOneElemBasedOnFieldIdBasicDataType[field &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK];
-
- if (storageType == SINGULAR ) {
- ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset;
- dptr = (unsigned char *)&pStream[*pos];
-
- if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) {
- idx = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType);
- size1Bin = numElemBasedOnStorageType[idx](
- &(pTable[tableIdx][fieldId]), 1);
- field = pTable[tableIdx][fieldId].fieldId;
- sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[field &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK];
-
- idxBuiltIn = _STORAGE_TYPE(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
- size1BuiltIn = numElemBasedOnStorageType[idx](
- &(pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn]), 0);
-
- size1 = size1Bin;
- if (size1 > size1BuiltIn) {
- size1 = size1BuiltIn;
- }
- }
- totalSize = size1 * sizeOneElem;
-
- offset = 0;
- for (i = 0; i < size1; i++) {
- memcpy(&ptr[offset], &dptr[offset], sizeOneElem);
- offset = offset + sizeOneElem;
- }
-
- *pos = *pos + (size1Bin * sizeOneElem);
- }
- else {
- if (ARRAY_1 == storageType) {
- ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset;
- dptr = (unsigned char *)&pStream[*pos];
-
- idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1,
- pTable[tableIdx][fieldId].fieldStorageType);
- size1Bin = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize1, 1);
-
- idx = _STORAGE_SIZE1(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size1BuiltIn = getNumElemOutOfStorageSize(idx,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, 0);
-
- size1 = size1Bin;
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) {
- enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- isFirstFieldEnum = 1;
- }
- else {
- isFirstFieldEnum = 0;
- if (size1 > size1BuiltIn) {
- size1 = size1BuiltIn;
- }
- }
-
- offset = 0;
- for (i = 0; i < size1; i++) {
- if (isFirstFieldEnum) {
- if (NvEnumsFromBin[enumIdx1][i].enumValuePeer != 0xFF) {
- index = NvEnumsFromBin[enumIdx1][i].enumValuePeer;
- dindex = NvEnumsFromBin[enumIdx1][i].enumValue;
-
- index = index * sizeOneElem;
- dindex = dindex * sizeOneElem;
-
- memcpy(&ptr[index], &dptr[dindex], sizeOneElem);
- }
- }
- else {
- memcpy(&ptr[offset], &dptr[offset], sizeOneElem);
- offset = offset + sizeOneElem;
- }
- }
-
- *pos = *pos + (size1Bin * sizeOneElem);
- }
- else if (ARRAY_2 == storageType) {
- ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset;
- dptr = (unsigned char *)&pStream[*pos];
-
- idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1,
- pTable[tableIdx][fieldId].fieldStorageType);
- size1Bin = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize1, 1);
-
- idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2,
- pTable[tableIdx][fieldId].fieldStorageType);
-
- size2Bin = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize2, 1);
-
- idx = _STORAGE_SIZE1(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size1BuiltIn = getNumElemOutOfStorageSize(idx,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1, 0);
-
- idx = _STORAGE_SIZE2(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size2BuiltIn = getNumElemOutOfStorageSize(idx,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2, 0);
-
- size1 = size1Bin;
- size2 = size2Bin;
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) {
- enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- isFirstFieldEnum = 1;
- }
- else {
- isFirstFieldEnum = 0;
- if (size1 > size1BuiltIn) {
- size1 = size1BuiltIn;
- }
- }
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) {
- enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- isSecondFieldEnum = 1;
- }
- else {
- isSecondFieldEnum = 0;
- if (size2 > size2BuiltIn) {
- size2 = size2BuiltIn;
- }
- }
-
- offset = 0;
-
- for (i = 0; i < size1; i++) {
- if (isFirstFieldEnum) {
- if (NvEnumsFromBin[enumIdx1][i].enumValuePeer == 0xFF) {
- continue;
- }
-
- index = NvEnumsFromBin[enumIdx1][i].enumValuePeer;
- dindex = NvEnumsFromBin[enumIdx1][i].enumValue;
- }
- else {
- index = dindex = i;
- }
-
- for (j = 0; j < size2; j++) {
- if (isSecondFieldEnum) {
- if (NvEnumsFromBin[enumIdx2][j].enumValuePeer == 0xFF) {
- continue;
- }
-
- index1 = NvEnumsFromBin[enumIdx2][j].enumValuePeer;
- dindex1 = NvEnumsFromBin[enumIdx2][j].enumValue;
- }
- else {
- index1 = dindex1 = j;
- }
-
- memcpy(&ptr[(index1 + index * size2BuiltIn)*sizeOneElem],
- &dptr[(dindex1+dindex*size2Bin)*sizeOneElem], sizeOneElem);
- offset = offset + sizeOneElem;
- }
- }
-
- *pos = *pos + size2Bin * size1Bin * sizeOneElem;
- }
- else if (ARRAY_3 == storageType) {
- ptr = ((unsigned char*)gpnvData_t) + tableBaseOffset + addOffset;
- dptr = (unsigned char *)&pStream[*pos];
-
- idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1,
- pTable[tableIdx][fieldId].fieldStorageType);
- size1Bin = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize1, 1);
-
- idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2,
- pTable[tableIdx][fieldId].fieldStorageType);
- size2Bin = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize2, 1);
-
- idx = _STORAGE_SIZE3(pTable[tableIdx][fieldId].fieldStorageSize3,
- pTable[tableIdx][fieldId].fieldStorageType);
- size3Bin = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize3, 1);
-
- idx = _STORAGE_SIZE1(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size1BuiltIn = getNumElemOutOfStorageSize(idx,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1,
- 0);
-
- idx = _STORAGE_SIZE2(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size2BuiltIn = getNumElemOutOfStorageSize(idx,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2,
- 0);
-
- idx = _STORAGE_SIZE3(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size3BuiltIn = getNumElemOutOfStorageSize(idx,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3,
- 0);
-
- size1 = size1Bin;
- size2 = size2Bin;
- size3 = size3Bin;
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) {
- enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- isFirstFieldEnum = 1;
- }
- else {
- isFirstFieldEnum = 0;
- if (size1 > size1BuiltIn) {
- size1 = size1BuiltIn;
- }
- }
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) {
- enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- isSecondFieldEnum = 1;
- }
- else {
- isSecondFieldEnum = 0;
- if (size2 > size2BuiltIn) {
- size2 = size2BuiltIn;
- }
- }
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize3)) {
- enumIdx3 = ((pTable[tableIdx][fieldId].fieldStorageSize3 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- isThirdFieldEnum = 1;
- }
- else {
- isThirdFieldEnum = 0;
- if (size3 > size3BuiltIn) {
- size3 = size3BuiltIn;
- }
- }
-
- offset = 0;
- for (i = 0; i < size1; i++) {
- if (isFirstFieldEnum) {
- if (NvEnumsFromBin[enumIdx1][i].enumValuePeer == 0xFF) {
- continue;
- }
-
- index = NvEnumsFromBin[enumIdx1][i].enumValuePeer;
- dindex = NvEnumsFromBin[enumIdx1][i].enumValue;
- }
- else {
- index = dindex = i;
- }
-
- for (j = 0; j < size2; j++) {
- if (isSecondFieldEnum) {
- if (NvEnumsFromBin[enumIdx2][j].enumValuePeer == 0xFF) {
- continue;
- }
-
- index1 = NvEnumsFromBin[enumIdx2][j].enumValuePeer;
- dindex1 = NvEnumsFromBin[enumIdx2][j].enumValue;
- }
- else {
- index1 = dindex1 = j;
- }
-
- for (k = 0; k < size3; k++) {
- if (isThirdFieldEnum) {
- if (NvEnumsFromBin[enumIdx2][j].enumValuePeer == 0xFF) {
- continue;
- }
-
- index2 = NvEnumsFromBin[enumIdx3][k].enumValuePeer;
- dindex2 = NvEnumsFromBin[enumIdx3][k].enumValue;
- }
- else {
- index2 = dindex2 = k;
- }
-
- memcpy(&ptr[(index2 + (index1 * size2BuiltIn) +
- (index * size3BuiltIn * size2BuiltIn)) * sizeOneElem],
- &dptr[(dindex2 + (dindex1 * size2Bin) +
- (dindex * size3Bin * size2Bin))*sizeOneElem],
- sizeOneElem);
-
- offset = offset + sizeOneElem;
- }
- }
- }
-
- *pos = *pos + size1Bin * size2Bin * size3Bin * sizeOneElem;
- }
- else {
- }
- }
-}
-
-// search NvTablesBuiltIn for the same string named table, and its idx
-static int getBuiltInFieldCount (int tableIdxBin, char *tableNameFromBin,
- int *tblIdBuiltIn, int *fieldIdBuitIn, int *numElements)
-{
- int i,idx,numElem,tableIdxBuiltin=0,fieldCnt;
- _NV_TEMPLATE_TABLE (*pTableBin)[TABLE_ENTRIES_MAX] = NvTablesFromBin;
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn;
- int found=0, fieldIndex = 0;
-
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTableBin[0][i].fieldName[0]) {
- break;
- }
-
- if ((pTableBin[0][i].fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK) == tableIdxBin) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- return -1;
- }
-
- //fieldName index got from tableId from Bin
- fieldIndex = i;
- found = 0;
-
- for (i=0;i<TABLE_ENTRIES_MAX;i++) {
- if (nul == pTable[0][i].fieldName[0]) {
- break;
- }
-
- if (!strcmp((const char*)pTableBin[0][fieldIndex].fieldName,
- (const char*)pTable[0][i].fieldName)) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- return -1;
- }
-
- //found tableId of builtIn
- tableIdxBuiltin = *tblIdBuiltIn =
- (pTable[0][i].fieldId & FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
- found = 0;
-
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTable[tableIdxBuiltin][i].fieldName[0]) {
- break;
- }
-
- if (!strcmp((const char*)tableNameFromBin,
- (const char*)pTable[tableIdxBuiltin][i].fieldName)) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- return -1;
- }
-
- *fieldIdBuitIn = i;
-
- idx = _STORAGE_TYPE(pTable[tableIdxBuiltin][i].fieldStorageType);
- numElem = numElemBasedOnStorageType[idx](&(pTable[tableIdxBuiltin][i]), 0);
-
- fieldSize = 0;
- fieldCnt = getFieldCount (tableIdxBuiltin, i, numElem, 0);
-
- *numElements = numElem;
-
- return fieldCnt;
-}
-
-static int getFieldCount(int tableIdx, int fieldId, int numElem, int nvBin)
-{
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX];
- int idxSubTable;
- int i, j, storageType, field;
- int numSubElem=0, idx =0, size1=0, size2=0, size3=0, sizeOneElem=0;
- int enumIdx1=0, enumIdx2=0, enumIdx3=0;
-
- if ( nvBin ) {
- pTable = NvTablesFromBin;
- }
- else {
- pTable = NvTablesBuiltIn;
- }
-
- storageType = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType);
-
- if (SINGULAR == storageType) {
- if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) {
- idx = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType);
- size1 = numElemBasedOnStorageType[idx](&(pTable[tableIdx][fieldId]),
- nvBin);
- }
- else {
- }
- }
- else {
- if (ARRAY_1 == storageType) {
- idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1,
- pTable[tableIdx][fieldId].fieldStorageType);
- size1 = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize1,nvBin);
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) {
- enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- }
- }
- else if (ARRAY_2 == storageType) {
- idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1,
- pTable[tableIdx][fieldId].fieldStorageType);
- size1 = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize1,nvBin);
-
- idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2,
- pTable[tableIdx][fieldId].fieldStorageType);
-
- size2 = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize2,nvBin);
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) {
- enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- }
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) {
- enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- }
- }
- else if (ARRAY_3 == storageType) {
- idx = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1,
- pTable[tableIdx][fieldId].fieldStorageType);
- size1 = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize1,nvBin);
-
- idx = _STORAGE_SIZE2(pTable[tableIdx][fieldId].fieldStorageSize2,
- pTable[tableIdx][fieldId].fieldStorageType);
- size2 = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize2,nvBin);
-
- idx = _STORAGE_SIZE3(pTable[tableIdx][fieldId].fieldStorageSize3,
- pTable[tableIdx][fieldId].fieldStorageType);
- size3 = getNumElemOutOfStorageSize(idx,
- pTable[tableIdx][fieldId].fieldStorageSize3,nvBin);
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize1)) {
- enumIdx1 = ((pTable[tableIdx][fieldId].fieldStorageSize1 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- }
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize2)) {
- enumIdx2 = ((pTable[tableIdx][fieldId].fieldStorageSize2 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- }
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize3)) {
- enumIdx3 = ((pTable[tableIdx][fieldId].fieldStorageSize3 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- }
- }
- else {
- }
- }
-
- if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) {
- field = pTable[tableIdx][fieldId].fieldId;
- sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[field &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK];
- if ( size3 ) {
- fieldSize = fieldSize + size3 * size2 * size1 * sizeOneElem;
- }
- else if ( size2 ) {
- fieldSize = fieldSize + size2 * size1 * sizeOneElem;
- }
- else if ( size1 ) {
- fieldSize = fieldSize + size1 * sizeOneElem;
- }
- else {
- }
- }
- else {
- idxSubTable = (pTable[tableIdx][fieldId].fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
-
- for (j=0; j<numElem; j++) {
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTable[idxSubTable][i].fieldName[0]) {
- // data parsing done for this stream
- break;
- }
-
- idx = _STORAGE_TYPE(pTable[idxSubTable][i].fieldStorageType);
- numSubElem = numElemBasedOnStorageType[idx](
- &(pTable[idxSubTable][i]),nvBin);
-
- getFieldCount(idxSubTable, i, numSubElem, nvBin);
- }
- }
- }
-
- return fieldSize;
-}
-
-static void parseSubDataTableAndCopy(int tableIdx, int numElem, int numElem2,
- int numElem3, int fieldId, _NV_STREAM_BUF *pStream, int *pos, int addOffset,
- int tableBaseOffset, int localAddOffset)
-{
- int idxSubTable, i, j, l, m, idx1, storageType, fieldCount=0;
- int size1BuiltIn, size2BuiltIn, size3BuiltIn;
- int tableIdxBuiltIn, fieldIdBuiltIn, numElemBuiltIn, incAddOffset=0;
- int totalOffset=0, enumIdx, size1Bin, size2Bin, size3Bin;
- int numSubElem, numSubElem2, numSubElem3, sizeBuiltIn=0, idx=0;
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin;
- _NV_TEMPLATE_TABLE (*pTableBuiltIn)[TABLE_ENTRIES_MAX] = NvTablesBuiltIn;
-
- // "apply" template to data -- parsing the actual NV data,
- // so far we have been parsing and building templates
- if (IsFieldTypeBasicData(pTable[tableIdx][fieldId].fieldId)) {
- // First Entry, same as off addOffset just increment localOffset
- if (pTable[tableIdx][fieldId].offset == addOffset) {
- totalOffset = localAddOffset + pTable[tableIdx][fieldId].offset;
- }
- else {
- // Multiple Entry next index array, addOffset and localOffset
- totalOffset = localAddOffset + pTable[tableIdx][fieldId].offset +
- addOffset;
- }
- copyDataToBuiltInFromBin(tableIdx, fieldId, pStream, pos, totalOffset,
- tableBaseOffset);
- }
- else {
- // number of element
- // get size of the sub-table
- idxSubTable = (pTable[tableIdx][fieldId].fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
-
- fieldSize = 0;
- sizeBuiltIn = getBuiltInFieldCount(tableIdx,
- pTable[tableIdx][fieldId].fieldName,
- &tableIdxBuiltIn, &fieldIdBuiltIn, &numElemBuiltIn);
- incAddOffset = 0;
-
- if (numElemBuiltIn) {
- incAddOffset = sizeBuiltIn/numElemBuiltIn;
- }
-
- storageType = _STORAGE_TYPE(pTable[tableIdx][fieldId].fieldStorageType);
-
- fieldSize = 0;
- fieldCount = getFieldCount(tableIdx, fieldId, numElem, 1);
-
- idx1 = _STORAGE_SIZE1(pTable[tableIdx][fieldId].fieldStorageSize1,
- pTable[tableIdx][fieldId].fieldStorageType);
- size1Bin = getNumElemOutOfStorageSize(idx1,
- pTable[tableIdx][fieldId].fieldStorageSize1, 1);
-
- for (l=0; l < numElem3; l++) {
- if (storageType == ARRAY_3) {
- idx1 = _STORAGE_SIZE3(pTable[tableIdx][fieldId].fieldStorageSize3,
- pTable[tableIdx][fieldId].fieldStorageType);
-
- size3Bin = getNumElemOutOfStorageSize(idx1,
- pTable[tableIdx][fieldId].fieldStorageSize3, 1);
-
- fieldSize = 0;
- getBuiltInFieldCount(tableIdx,
- pTable[tableIdx][fieldId].fieldName, &tableIdxBuiltIn,
- &fieldIdBuiltIn, &numElemBuiltIn);
-
- idx1 = _STORAGE_SIZE3(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
- size3BuiltIn = getNumElemOutOfStorageSize(idx1,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize3,
- 0);
-
- if (!IsFieldSizeInt(pTable[tableIdx][fieldId].fieldStorageSize3)) {
- enumIdx = ((pTable[tableIdx][fieldId].fieldStorageSize3 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- if (NvEnumsFromBin[enumIdx][l].enumValuePeer == 0xFF) {
- *pos = *pos + (fieldCount/size1Bin) * numElem * numElem2;
- continue;
- }
- }
- else {
- if ((l+1) > size3BuiltIn) {
- *pos = *pos + (fieldCount/size1Bin) * numElem * numElem2;
- continue;
- }
- }
- }
- for (m=0; m < numElem2; m++) {
- if (storageType == ARRAY_2) {
- idx1 = _STORAGE_SIZE2(
- pTable[tableIdx][fieldId].fieldStorageSize2,
- pTable[tableIdx][fieldId].fieldStorageType);
- size2Bin = getNumElemOutOfStorageSize(idx1,
- pTable[tableIdx][fieldId].fieldStorageSize2, 1);
-
- fieldSize = 0;
- getBuiltInFieldCount(tableIdx,
- pTable[tableIdx][fieldId].fieldName, &tableIdxBuiltIn,
- &fieldIdBuiltIn, &numElemBuiltIn);
-
- idx1 = _STORAGE_SIZE2(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size2BuiltIn = getNumElemOutOfStorageSize(idx1,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize2,
- 0);
-
- if (!IsFieldSizeInt(
- pTable[tableIdx][fieldId].fieldStorageSize2)) {
- enumIdx = ((pTable[tableIdx][fieldId].fieldStorageSize2 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- if (NvEnumsFromBin[enumIdx][m].enumValuePeer == 0xFF) {
- *pos = *pos + (fieldCount/size1Bin) * numElem;
- continue;
- }
- }
- else {
- if ((m+1) > size2BuiltIn) {
- *pos = *pos + (fieldCount/size1Bin) * numElem;
- continue;
- }
- }
- }
- for (j=0; j < numElem; j++) {
- if (storageType == ARRAY_1) {
- fieldSize = 0;
- getBuiltInFieldCount(tableIdx,
- pTable[tableIdx][fieldId].fieldName, &tableIdxBuiltIn,
- &fieldIdBuiltIn, &numElemBuiltIn);
-
- idx1 = _STORAGE_SIZE1(
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageType);
-
- size1BuiltIn = getNumElemOutOfStorageSize(idx1,
- pTableBuiltIn[tableIdxBuiltIn][fieldIdBuiltIn].fieldStorageSize1,
- 0);
-
- if (!IsFieldSizeInt(
- pTable[tableIdx][fieldId].fieldStorageSize1)) {
- enumIdx = ((pTable[tableIdx][fieldId].fieldStorageSize1 &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
- if (NvEnumsFromBin[enumIdx][j].enumValuePeer == 0xFF) {
- *pos = *pos + (fieldCount/size1Bin);
- continue;
- }
- }
- else {
- if ((j+1) > size1BuiltIn) {
- *pos = *pos + (fieldCount/size1Bin);
- continue;
- }
- }
- }
-
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTable[idxSubTable][i].fieldName[0]) {
- // data parsing done for this stream
- break;
- }
-
- idx = _STORAGE_TYPE(pTable[idxSubTable][i].fieldStorageType);
- numSubElem = numElemBasedOnStorageType[idx](
- &(pTable[idxSubTable][i]),1);
- numSubElem2 = numSubElem3 = 1;
-
- if (idx == ARRAY_1) {
- idx1 = _STORAGE_SIZE1(
- pTable[idxSubTable][i].fieldStorageSize1,
- pTable[idxSubTable][i].fieldStorageType);
- numSubElem = getNumElemOutOfStorageSize(idx1,
- pTable[idxSubTable][i].fieldStorageSize1, 1);
- }
- else if (idx == ARRAY_2) {
- idx1 = _STORAGE_SIZE1(
- pTable[idxSubTable][i].fieldStorageSize1,
- pTable[idxSubTable][i].fieldStorageType);
- numSubElem = getNumElemOutOfStorageSize(idx1,
- pTable[idxSubTable][i].fieldStorageSize1, 1);
-
- idx1 = _STORAGE_SIZE2(
- pTable[idxSubTable][i].fieldStorageSize2,
- pTable[idxSubTable][i].fieldStorageType);
- numSubElem2 = getNumElemOutOfStorageSize(idx1,
- pTable[idxSubTable][i].fieldStorageSize2, 1);
- }
- else if (idx == ARRAY_3) {
- idx1 = _STORAGE_SIZE1(
- pTable[idxSubTable][i].fieldStorageSize1,
- pTable[idxSubTable][i].fieldStorageType);
- numSubElem = getNumElemOutOfStorageSize(idx1,
- pTable[idxSubTable][i].fieldStorageSize1, 1);
-
- idx1 = _STORAGE_SIZE2(
- pTable[idxSubTable][i].fieldStorageSize2,
- pTable[idxSubTable][i].fieldStorageType);
- numSubElem2 = getNumElemOutOfStorageSize(idx1,
- pTable[idxSubTable][i].fieldStorageSize2, 1);
-
- idx1 = _STORAGE_SIZE3(
- pTable[idxSubTable][i].fieldStorageSize3,
- pTable[idxSubTable][i].fieldStorageType);
- numSubElem3 = getNumElemOutOfStorageSize(idx1,
- pTable[idxSubTable][i].fieldStorageSize3, 1);
- }
-
- if (_OFFSET_NOT_SET != pTable[idxSubTable][i].offset) {
- if ( pTable[tableIdx][fieldId].offset == addOffset ) {
- parseSubDataTableAndCopy(idxSubTable, numSubElem,
- numSubElem2, numSubElem3, i, pStream, pos,
- addOffset, tableBaseOffset, localAddOffset);
- }
- else {
- // NOT the first Entry in the table..
- if ( !pTable[tableIdx][fieldId].offset ) {
- parseSubDataTableAndCopy(idxSubTable, numSubElem,
- numSubElem2, numSubElem3, i, pStream, pos,
- addOffset, tableBaseOffset, localAddOffset);
- }
- else {
- //First Entry in the the table..
- //(Sending parent offset..)
- parseSubDataTableAndCopy(idxSubTable, numSubElem,
- numSubElem2, numSubElem3, i, pStream, pos,
- addOffset, tableBaseOffset,
- pTable[tableIdx][fieldId].offset);
- }
- }
- }
- else {
- fieldSize = 0;
- fieldCount = getFieldCount(idxSubTable, i, numSubElem, 1);
- *pos += fieldCount;
- }
- }
-
- localAddOffset = localAddOffset + incAddOffset;
- }
- }
- }
- }
-
- return;
-}
-
-static void processNvData(_NV_STREAM_BUF *pStream, int len)
-{
- int tableIdx, pos, idx = 0, addOffset = 0, i;
- int numElem = 0, additionalOffset = 0, tableBaseOffset = 0;
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin;
-
- // fetch the table template
- pos = 0; // stream header byte is already checked, that's why we are here
- pos += _NV_BIN_DATA_STREAM_TABLEID_BYTE;
- tableIdx = (pStream[_NV_BIN_DATA_STREAM_TABLEID_BYTE] &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
- pos++;
-
- // call the table parsing
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTable[0][i].fieldName[0]) {
- break;
- }
- if (tableIdx == _TABLE_IDX(pTable[0][i].fieldId)) {
- // Table base offset, stored in the "table of all tables" (index 0),
- // will be added to
- // fields relative offset in all tables.
- tableBaseOffset = pTable[0][i].offset;
-
- idx = _STORAGE_TYPE(pTable[0][i].fieldStorageType);
-
- // number of element
- numElem = numElemBasedOnStorageType[idx](&(pTable[0][i]),1);
-
- // recursive calls for the total size of the subtable, which may
- // contain nested tables
- subTableSize = 0;
- parseSubDataTable4Size(tableIdx, numElem);
-
- // additional offset for EACH subsequent table element
- additionalOffset = subTableSize/numElem;
-
- break;
- }
- }
-
- if (numElem) {
- for (i = 0; i < numElem; i++) {
- addOffset = (i * additionalOffset);
- parseDataTable_new(pStream, &pos, tableIdx, addOffset,
- tableBaseOffset);
- }
- }
-
- // the above recursive data table parser takes care of the nested tables
- // all done
- return;
-}
-
-static void parseDataTable_new(_NV_STREAM_BUF *pStream, int* pos, int tableIdx,
- int addOffset, int tableBaseOffset)
-{
- _NV_TEMPLATE_TABLE (*pTable)[TABLE_ENTRIES_MAX] = NvTablesFromBin;
- int i, idx, fieldCount;
- int numElem, numElem2, numElem3, storageType, idxSubTable;
-
- // "apply" template to data -- parsing the actual NV data,
- // so far we have been parsing and building templates
- for (i = 0; i < TABLE_ENTRIES_MAX; i++) {
- if (nul == pTable[tableIdx][i].fieldName[0]) {
- // data parsing done for this stream
- break;
- }
-
- // get size of the sub-table
- idxSubTable = (pTable[tableIdx][i].fieldId &
- FIELD_ID_TABLE_OR_ENUM_IDX_MASK);
-
- idx = _STORAGE_TYPE(pTable[tableIdx][i].fieldStorageType);
-
- numElem = numElemBasedOnStorageType[idx](&(pTable[tableIdx][i]),1);
-
- addOffset = pTable[tableIdx][i].offset;
-
- fieldSize = 0;
- fieldCount = getFieldCount(tableIdx, i, numElem, 1);
-
- numElem2 = numElem3 = 1;
-
- if (idx == ARRAY_1 ) {
- storageType = _STORAGE_SIZE1(pTable[tableIdx][i].fieldStorageSize1,
- pTable[tableIdx][i].fieldStorageType);
- numElem = getNumElemOutOfStorageSize(storageType,
- pTable[tableIdx][i].fieldStorageSize1, 1);
- }
- else if (idx == ARRAY_2) {
- storageType = _STORAGE_SIZE1(pTable[tableIdx][i].fieldStorageSize1,
- pTable[tableIdx][i].fieldStorageType);
-
- numElem = getNumElemOutOfStorageSize(storageType,
- pTable[tableIdx][i].fieldStorageSize1, 1);
-
- storageType = _STORAGE_SIZE2(pTable[tableIdx][i].fieldStorageSize2,
- pTable[tableIdx][i].fieldStorageType);
-
- numElem2 = getNumElemOutOfStorageSize(storageType,
- pTable[tableIdx][i].fieldStorageSize2, 1);
- }
- else if (idx == ARRAY_3) {
- storageType = _STORAGE_SIZE1(pTable[tableIdx][i].fieldStorageSize1,
- pTable[tableIdx][i].fieldStorageType);
-
- numElem = getNumElemOutOfStorageSize(storageType,
- pTable[tableIdx][i].fieldStorageSize1, 1);
-
- storageType = _STORAGE_SIZE2(pTable[tableIdx][i].fieldStorageSize2,
- pTable[tableIdx][i].fieldStorageType);
-
- numElem2 = getNumElemOutOfStorageSize(storageType,
- pTable[tableIdx][i].fieldStorageSize2, 1);
-
- storageType = _STORAGE_SIZE3(pTable[tableIdx][i].fieldStorageSize3,
- pTable[tableIdx][i].fieldStorageType);
-
- numElem3 = getNumElemOutOfStorageSize(storageType,
- pTable[tableIdx][i].fieldStorageSize3, 1);
- }
-
- if (_OFFSET_NOT_SET != pTable[tableIdx][i].offset) {
- parseSubDataTableAndCopy(tableIdx, numElem, numElem2, numElem3, i,
- pStream, pos, addOffset, tableBaseOffset, 0);
- }
- else {
- *pos += fieldCount;
- }
- }
-}
-
-static void getBasicDataSize(_NV_TEMPLATE_TABLE *pTableEntry)
-{
- int numElem, sizeOneElem, totalSize;
- int idx, idx1;
-
- // number of element
- idx = _STORAGE_TYPE(pTableEntry->fieldStorageType);
- numElem = numElemBasedOnStorageType[idx](pTableEntry, 1);
-
- // size of each element
- idx1 = pTableEntry->fieldId & FIELD_ID_TABLE_OR_ENUM_IDX_MASK;
- sizeOneElem = sizeOneElemBasedOnFieldIdBasicDataType[idx1];
-
- // total size in bytes
- totalSize = numElem * sizeOneElem;
-
- // all done, update global
- subTableSize += totalSize;
-
- return;
-}
-
-static int numElemSingular(_NV_TEMPLATE_TABLE *pTableEntry, int unused)
-{
- return 1;
-}
-
-static int getNumElemOutOfStorageSize(int fieldStorageSize,
- uint8 fieldStorageSizeLowByte, int nvBin)
-{
- int ret = 0;
- if (IsFieldSizeInt(fieldStorageSizeLowByte)) {
- return fieldStorageSize;
- }
- else {
- int maxEnumVal=0, i;
- _NV_TEMPLATE_ENUM (*pEnum)[ENUM_ENTRIES_MAX];
- int enumIdx = ((fieldStorageSizeLowByte &
- FIELD_SIZE_VALUE_MASK) >> FIELD_SIZE_VALUE_LSB);
-
- if (nvBin) {
- pEnum = NvEnumsFromBin;
- }
- else {
- pEnum = NvEnumsBuiltIn;
- }
-
- for (i = 0; i < ENUM_ENTRIES_MAX; i++) {
- if (nul == pEnum[enumIdx][i].enumName[0]) {
- if ( i == 0 ) {
- maxEnumVal = 0;
- }
- else {
- maxEnumVal = pEnum[enumIdx][i-1].enumValue;
- }
- break;
- }
- }
- ret = (maxEnumVal + 1);
- return ret; // +1 to count for 0 to maxEnumVal
- }
-}
-
-static int numElemArray1(_NV_TEMPLATE_TABLE *pTableEntry, int nvBin)
-{
- int fieldStorageSize = 0;
-
- fieldStorageSize = getNumElemOutOfStorageSize(_STORAGE_SIZE1(
- pTableEntry->fieldStorageSize1, pTableEntry->fieldStorageType),
- pTableEntry->fieldStorageSize1, nvBin);
-
- return fieldStorageSize;
-}
-
-static int numElemArray2(_NV_TEMPLATE_TABLE *pTableEntry, int nvBin)
-{
- int fieldStorageSize1,fieldStorageSize2,fieldStorageSize;
-
- fieldStorageSize1 = getNumElemOutOfStorageSize(_STORAGE_SIZE1(
- pTableEntry->fieldStorageSize1,
- pTableEntry->fieldStorageType),
- pTableEntry->fieldStorageSize1, nvBin);
-
- fieldStorageSize2 = getNumElemOutOfStorageSize(_STORAGE_SIZE2(
- pTableEntry->fieldStorageSize2,
- pTableEntry->fieldStorageType),
- pTableEntry->fieldStorageSize2, nvBin);
-
- fieldStorageSize = fieldStorageSize1 * fieldStorageSize2;
-
- return fieldStorageSize;
-}
-
-static int numElemArray3(_NV_TEMPLATE_TABLE *pTableEntry, int nvBin)
-{
- int fieldStorageSize1,fieldStorageSize2,fieldStorageSize3,fieldStorageSize;
-
- fieldStorageSize1 = getNumElemOutOfStorageSize(_STORAGE_SIZE1(
- pTableEntry->fieldStorageSize1,
- pTableEntry->fieldStorageType),
- pTableEntry->fieldStorageSize1, nvBin);
-
- fieldStorageSize2 = getNumElemOutOfStorageSize(_STORAGE_SIZE2(
- pTableEntry->fieldStorageSize2,
- pTableEntry->fieldStorageType),
- pTableEntry->fieldStorageSize2, nvBin);
-
- fieldStorageSize3 = getNumElemOutOfStorageSize(_STORAGE_SIZE3(
- pTableEntry->fieldStorageSize3,
- pTableEntry->fieldStorageType),
- pTableEntry->fieldStorageSize3, nvBin);
-
- fieldStorageSize = fieldStorageSize1 * fieldStorageSize2 * fieldStorageSize3;
-
- return fieldStorageSize;
-}
diff --git a/CORE/VOSS/src/wlan_nv_stream_read.c b/CORE/VOSS/src/wlan_nv_stream_read.c
deleted file mode 100644
index 54a5268905ef..000000000000
--- a/CORE/VOSS/src/wlan_nv_stream_read.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2013 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/*===========================================================================
- EDIT HISTORY FOR FILE
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
- $Header:$ $DateTime: $ $Author: $
-
- when who what, where, why
- -------- --- --------------------------------------------------------
- 04/10/13 kumarpra nv stream layer creation
-===========================================================================*/
-
-#include "wlan_nv_stream.h"
-
-_STREAM_BUF streamBuf;
-
-static tANI_U32 deCodeData(tANI_U8 *ipdata, tANI_U32 length, tANI_U8 *opdata,
- tANI_U32 *currentIndex);
-
-/*----------------------------------------------------------------------------
- \brief initReadStream() - stream Initialization
- This function will initialize stream read
- \param readBuf, length - ptr to read Buffer, number of bytes
- \return success on init
- \sa
---------------------------------------------------------------------------*/
-_STREAM_RC initReadStream(tANI_U8 *readBuf, tANI_U32 length)
-{
- _STREAM_RC rc = RC_SUCCESS;
- streamBuf.currentIndex = 0;
- streamBuf.totalLength = 0;
- streamBuf.totalLength = length;
- streamBuf.dataBuf = (_NV_STREAM_BUF *)&readBuf[0];
- return rc;
-}
-
-/*----------------------------------------------------------------------------
- \brief nextStream() - get next Stream in buffer
- This function will provide next stream in the buffere initalized
- \param readBuf, length - ptr to stream length, stream data
- \return success when stream length is non-zero else error
- \sa
---------------------------------------------------------------------------*/
-
-_STREAM_RC nextStream(tANI_U32 *length, tANI_U8 *dataBuf)
-{
- _STREAM_RC rc = RC_SUCCESS;
-
- if (streamBuf.currentIndex >= streamBuf.totalLength)
- {
- *length = 0;
- }
- else
- {
- *length = deCodeData(&streamBuf.dataBuf[streamBuf.currentIndex],
- (streamBuf.totalLength - streamBuf.currentIndex), dataBuf,
- &streamBuf.currentIndex);
- }
-
- if (*length == 0)
- {
- rc = RC_FAIL;
- }
-
- return rc;
-}
-
-/*----------------------------------------------------------------------------
- \brief decodeData() - decode the input data
- This function will decode stream read
- \param readBuf, length - ptr to input stream, length, output stream data,
- \index pointer
- \return success when stream length is non-zero else error
- \sa
---------------------------------------------------------------------------*/
-
-tANI_U32 deCodeData(tANI_U8 *ipdata, tANI_U32 length, tANI_U8 *opdata,
- tANI_U32 *currentIndex)
-{
- tANI_U16 oplength = 0;
-
- oplength = ipdata[0];
- oplength = oplength | (ipdata[1] << 8);
-
- memcpy(opdata, &ipdata[sizeof(tANI_U16)], oplength);
-
- *currentIndex = *currentIndex + sizeof(tANI_U16) + oplength;
-
- return oplength;
-}
diff --git a/CORE/VOSS/src/wlan_nv_template_builtin.c b/CORE/VOSS/src/wlan_nv_template_builtin.c
deleted file mode 100644
index ba03acf342b2..000000000000
--- a/CORE/VOSS/src/wlan_nv_template_builtin.c
+++ /dev/null
@@ -1,831 +0,0 @@
-/*
- * Copyright (c) 2013-2014 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-
-/*===========================================================================
- EDIT HISTORY FOR FILE
-
- This section contains comments describing changes made to the module.
- Notice that changes are listed in reverse chronological order.
-
- $Header:$ $DateTime: $ $Author: $
-
- when who what, where, why
- -------- --- -----------------------------------------------
- 04/10/13 kumarpra nv built in creation
-===========================================================================*/
-
-
-/*
- -----------------------------------------
- This file is generated by nvTmplRun Parser
- -----------------------------------------
- To be auto-generated, or
- This is the source file and the header file can be generated from this
- template file.
-
- Template constructs
- 1. TABLE_: struct
- 2. INDEX_ENUM: enums, e.g. {RATE_OFDM_6M,RATE_OFDM_54M}
- 3. INDEX_INT: int, e.g.{min, max, increment}
- 3. Basic data types: tANI_U8, tANI_S8, tANI_U32, tANI_S32
- 4. Storage types:
- 4.1 SINGULAR: one element of basic data type
- 4.2 ARRAY_1: one dimensional array, x-axis
- 4.3 ARRAY_2: two dimensional array, (x, y)
- 4.4 ARRAY_3: three dimensional array, (x, y, z)
- 4.5 ARRAY_4: four dimensional array, (x, y, z, t)
-
- Implementation notes
- 1. Flow of changing NV data format: (TBD) Either change the template and
- generate the header file, or modify header file and auto-generate
- the template.
- 2. Flow of writing NV data: encode the template in the data stream, so the
- NV data is "self-sufficient". No separate template, no compability
- issue, no need of version control.
- 3. Flow of reading NV data: parse the binary NV data stream based on the
- template info in the data stream.
- 4. The above NV logic is decoupled from the actual data content, a generic,
- content ergonostic parser (reading) and encoder (writing).
- The NV logic is common code shared by tools, s/w
- (both host and firmware), and off-line utilities.
- 5. NV data parsing and "acceptanace" into an s/w moduel data structure can
- be "configured" in several ways:
- 5.1 only total matching of all fields, otherwise, reject the whole data
- stream (a table).
- 5.2 partial matching of fields allowed and the rest fields assume
- reasonal default values,
- The choice can be determined later, but the capability is provided.
- 6. We could also design in this selection on an individual table base.
- To design such capability, reserve some header bits in the data stream.
- 7. The NV data streams can be modified, replaced, or intact with a new data
- stream of the same table ID added to NV data.
- The choice can be determined later, but the NV scheme provides such
- capability.
- 8. The template construct definitions can be common to all tables
- (tbd: in a common section) or table specific, or updated in a
- subsequent format section.
- The use cases are:
- - An index enum (e.g. RF channels) is common to all tables when the NV
- data is created. Later new enums are added (e.g.
- additional channels), one can choose to add the new index enum for new
- tables appended to the NV data, or replace the
- old table with new template info and data.
- The template precedence is table specific then common, and later
- "common" overwrites "earlier" commmon.
- - A new field is added to the table, the user decides to replace the
- old table data, he can simply encode the template info in the
- data stream.
- - In the same scenario (a new field is added), the user decides to
- append a new table, he can encode the template
- in the new data table and append it to NV data, or write a new common
- template section and append the data.
-
- Key "ingredients", (re-iterate the most important features and capabilities)
- 1. How to parse the data is embedded in the NV data itself. It removes the
- dependency on header file matching,
- version checking, compatibility among tools, host and firmware.
- 2. Table field ID enables "partial" data acceptance in an s/w module data
- structure. Whether full matching or reject the whole table, or "partial"
- acceptance, the capabiilty is in place and further ensures the robust
- NV data extensibility and compatibility.
- 3. The table granularity, data stream based NV data has variable length
- and flexibility of modifying an existing table data, replacing the
- whole data, or leaving the existing data table intact and appending
- a new table.
- Misc notes:
- 1. For endianness, support only 4 bytes integer or 4 1-byte
- 2. String identifier needs to be shortened to save storage
- 3. string_field_name, field type, field storage class, storage size
-*/
-
-
-#include "wlan_nv_types.h"
-#include "wlan_nv_stream.h"
-#include "wlan_nv.h"
-#include "wlan_nv_template_internal.h"
-#include "wlan_nv_template_api.h"
-#include "wlan_nv_template_builtin.h"
-
-
-
-static int enumNoOfFieldArray[INDEX_ENUM_BUILTIN_MAX] =
- {7,1,9,5,80,14,3,55};
-
-_NV_TEMPLATE_ENUM NvEnumsBuiltIn[/*INDEX_ENUM_MAX*/][ENUM_ENTRIES_MAX] = {
- { // INDEX_ENUM_ALL
- {"j1",INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS,0,{nul}},
- {"j2",INDEX_ENUM_NUM_REG_DOMAINS,0,{nul}},
- {"j3",INDEX_ENUM_NUM_RF_SUBBANDS,0,{nul}},
- {"j4",INDEX_ENUM_NUM_RF_CHANNELS,0,{nul}},
- {"j5",INDEX_ENUM_NUM_2_4GHZ_CHANNELS,0,{nul}},
- {"j6",INDEX_ENUM_NUM_802_11_MODES,0,{nul}},
- {"j7",INDEX_ENUM_NUM_HAL_PHY_RATES,0,{nul}},
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_ALL
-
- { // INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS
- {"a1",PHY_TX_CHAIN_0,0,{nul}},
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS
-
- { // INDEX_ENUM_NUM_REG_DOMAINS
- {"a3",REG_DOMAIN_FCC,0,{nul}},
- {"a4",REG_DOMAIN_ETSI,0,{nul}},
- {"a5",REG_DOMAIN_JAPAN,0,{nul}},
- {"a6",REG_DOMAIN_WORLD,0,{nul}},
- {"a7",REG_DOMAIN_N_AMER_EXC_FCC,0,{nul}},
- {"a8",REG_DOMAIN_APAC,0,{nul}},
- {"a9",REG_DOMAIN_KOREA,0,{nul}},
- {"ba",REG_DOMAIN_HI_5GHZ,0,{nul}},
- {"bb",REG_DOMAIN_NO_5GHZ,0,{nul}},
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_NUM_REG_DOMAINS
-
- { // INDEX_ENUM_NUM_RF_SUBBANDS
- {"bd",RF_SUBBAND_2_4_GHZ,0,{nul}},
- {"be",RF_SUBBAND_5_LOW_GHZ,0,{nul}},
- {"bf",RF_SUBBAND_5_MID_GHZ,0,{nul}},
- {"bg",RF_SUBBAND_5_HIGH_GHZ,0,{nul}},
- {"bh",RF_SUBBAND_4_9_GHZ,0,{nul}},
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_NUM_RF_SUBBANDS
-
- { // INDEX_ENUM_NUM_RF_CHANNELS
- {"bj",RF_CHAN_1,0,{nul}},
- {"bk",RF_CHAN_2,0,{nul}},
- {"bl",RF_CHAN_3,0,{nul}},
- {"bm",RF_CHAN_4,0,{nul}},
- {"bn",RF_CHAN_5,0,{nul}},
- {"bo",RF_CHAN_6,0,{nul}},
- {"bp",RF_CHAN_7,0,{nul}},
- {"bq",RF_CHAN_8,0,{nul}},
- {"br",RF_CHAN_9,0,{nul}},
- {"bs",RF_CHAN_10,0,{nul}},
- {"bt",RF_CHAN_11,0,{nul}},
- {"bu",RF_CHAN_12,0,{nul}},
- {"bv",RF_CHAN_13,0,{nul}},
- {"bw",RF_CHAN_14,0,{nul}},
- {"bx",RF_CHAN_240,0,{nul}},
- {"by",RF_CHAN_244,0,{nul}},
- {"bz",RF_CHAN_248,0,{nul}},
- {"b0",RF_CHAN_252,0,{nul}},
- {"b1",RF_CHAN_208,0,{nul}},
- {"b2",RF_CHAN_212,0,{nul}},
- {"b3",RF_CHAN_216,0,{nul}},
- {"b4",RF_CHAN_36,0,{nul}},
- {"b5",RF_CHAN_40,0,{nul}},
- {"b6",RF_CHAN_44,0,{nul}},
- {"b7",RF_CHAN_48,0,{nul}},
- {"b8",RF_CHAN_52,0,{nul}},
- {"b9",RF_CHAN_56,0,{nul}},
- {"ca",RF_CHAN_60,0,{nul}},
- {"cb",RF_CHAN_64,0,{nul}},
- {"cc",RF_CHAN_100,0,{nul}},
- {"cd",RF_CHAN_104,0,{nul}},
- {"ce",RF_CHAN_108,0,{nul}},
- {"cf",RF_CHAN_112,0,{nul}},
- {"cg",RF_CHAN_116,0,{nul}},
- {"ch",RF_CHAN_120,0,{nul}},
- {"ci",RF_CHAN_124,0,{nul}},
- {"cj",RF_CHAN_128,0,{nul}},
- {"ck",RF_CHAN_132,0,{nul}},
- {"cl",RF_CHAN_136,0,{nul}},
- {"cm",RF_CHAN_140,0,{nul}},
- {"cn",RF_CHAN_149,0,{nul}},
- {"co",RF_CHAN_153,0,{nul}},
- {"cp",RF_CHAN_157,0,{nul}},
- {"cq",RF_CHAN_161,0,{nul}},
- {"cr",RF_CHAN_165,0,{nul}},
- {"cs",RF_CHAN_BOND_3,0,{nul}},
- {"ct",RF_CHAN_BOND_4,0,{nul}},
- {"cu",RF_CHAN_BOND_5,0,{nul}},
- {"cv",RF_CHAN_BOND_6,0,{nul}},
- {"cw",RF_CHAN_BOND_7,0,{nul}},
- {"cx",RF_CHAN_BOND_8,0,{nul}},
- {"cy",RF_CHAN_BOND_9,0,{nul}},
- {"cz",RF_CHAN_BOND_10,0,{nul}},
- {"c0",RF_CHAN_BOND_11,0,{nul}},
- {"c1",RF_CHAN_BOND_242,0,{nul}},
- {"c2",RF_CHAN_BOND_246,0,{nul}},
- {"c3",RF_CHAN_BOND_250,0,{nul}},
- {"c4",RF_CHAN_BOND_210,0,{nul}},
- {"c5",RF_CHAN_BOND_214,0,{nul}},
- {"c6",RF_CHAN_BOND_38,0,{nul}},
- {"c7",RF_CHAN_BOND_42,0,{nul}},
- {"c8",RF_CHAN_BOND_46,0,{nul}},
- {"c9",RF_CHAN_BOND_50,0,{nul}},
- {"da",RF_CHAN_BOND_54,0,{nul}},
- {"db",RF_CHAN_BOND_58,0,{nul}},
- {"dc",RF_CHAN_BOND_62,0,{nul}},
- {"dd",RF_CHAN_BOND_102,0,{nul}},
- {"de",RF_CHAN_BOND_106,0,{nul}},
- {"df",RF_CHAN_BOND_110,0,{nul}},
- {"dg",RF_CHAN_BOND_114,0,{nul}},
- {"dh",RF_CHAN_BOND_118,0,{nul}},
- {"di",RF_CHAN_BOND_122,0,{nul}},
- {"dj",RF_CHAN_BOND_126,0,{nul}},
- {"dk",RF_CHAN_BOND_130,0,{nul}},
- {"dl",RF_CHAN_BOND_134,0,{nul}},
- {"dm",RF_CHAN_BOND_138,0,{nul}},
- {"dn",RF_CHAN_BOND_151,0,{nul}},
- {"do",RF_CHAN_BOND_155,0,{nul}},
- {"dp",RF_CHAN_BOND_159,0,{nul}},
- {"dq",RF_CHAN_BOND_163,0,{nul}},
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_NUM_RF_CHANNELS
-
- { // INDEX_ENUM_NUM_2_4GHZ_CHANNELS
- {"ke",RF_CHAN_1_1,0,{nul}},
- {"kf",RF_CHAN_2_1,0,{nul}},
- {"kg",RF_CHAN_3_1,0,{nul}},
- {"kh",RF_CHAN_4_1,0,{nul}},
- {"ki",RF_CHAN_5_1,0,{nul}},
- {"kj",RF_CHAN_6_1,0,{nul}},
- {"kk",RF_CHAN_7_1,0,{nul}},
- {"kl",RF_CHAN_8_1,0,{nul}},
- {"km",RF_CHAN_9_1,0,{nul}},
- {"kn",RF_CHAN_10_1,0,{nul}},
- {"ko",RF_CHAN_11_1,0,{nul}},
- {"kp",RF_CHAN_12_1,0,{nul}},
- {"kq",RF_CHAN_13_1,0,{nul}},
- {"kr",RF_CHAN_14_1,0,{nul}},
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_NUM_2_4GHZ_CHANNELS
-
- { // INDEX_ENUM_NUM_802_11_MODES
- {"d6",MODE_802_11B,0,{nul}},
- {"d7",MODE_802_11AG,0,{nul}},
- {"d8",MODE_802_11N,0,{nul}},
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_NUM_802_11_MODES
-
- { // INDEX_ENUM_NUM_HAL_PHY_RATES
- {"ez",HAL_PHY_RATE_11B_LONG_1_MBPS,0,{nul}},
- {"e0",HAL_PHY_RATE_11B_LONG_2_MBPS,0,{nul}},
- {"e1",HAL_PHY_RATE_11B_LONG_5_5_MBPS,0,{nul}},
- {"e2",HAL_PHY_RATE_11B_LONG_11_MBPS,0,{nul}},
- {"e3",HAL_PHY_RATE_11B_SHORT_2_MBPS,0,{nul}},
- {"e4",HAL_PHY_RATE_11B_SHORT_5_5_MBPS,0,{nul}},
- {"e5",HAL_PHY_RATE_11B_SHORT_11_MBPS,0,{nul}},
- {"e6",HAL_PHY_RATE_11A_6_MBPS,0,{nul}},
- {"e7",HAL_PHY_RATE_11A_9_MBPS,0,{nul}},
- {"e8",HAL_PHY_RATE_11A_12_MBPS,0,{nul}},
- {"e9",HAL_PHY_RATE_11A_18_MBPS,0,{nul}},
- {"fa",HAL_PHY_RATE_11A_24_MBPS,0,{nul}},
- {"fb",HAL_PHY_RATE_11A_36_MBPS,0,{nul}},
- {"fc",HAL_PHY_RATE_11A_48_MBPS,0,{nul}},
- {"fd",HAL_PHY_RATE_11A_54_MBPS,0,{nul}},
- {"fe",HAL_PHY_RATE_11A_DUP_6_MBPS,0,{nul}},
- {"ff",HAL_PHY_RATE_11A_DUP_9_MBPS,0,{nul}},
- {"fg",HAL_PHY_RATE_11A_DUP_12_MBPS,0,{nul}},
- {"fh",HAL_PHY_RATE_11A_DUP_18_MBPS,0,{nul}},
- {"fi",HAL_PHY_RATE_11A_DUP_24_MBPS,0,{nul}},
- {"fj",HAL_PHY_RATE_11A_DUP_36_MBPS,0,{nul}},
- {"fk",HAL_PHY_RATE_11A_DUP_48_MBPS,0,{nul}},
- {"fl",HAL_PHY_RATE_11A_DUP_54_MBPS,0,{nul}},
- {"fm",HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,0,{nul}},
- {"fn",HAL_PHY_RATE_MCS_1NSS_13_MBPS,0,{nul}},
- {"fo",HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,0,{nul}},
- {"fp",HAL_PHY_RATE_MCS_1NSS_26_MBPS,0,{nul}},
- {"fq",HAL_PHY_RATE_MCS_1NSS_39_MBPS,0,{nul}},
- {"fr",HAL_PHY_RATE_MCS_1NSS_52_MBPS,0,{nul}},
- {"fs",HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,0,{nul}},
- {"ft",HAL_PHY_RATE_MCS_1NSS_65_MBPS,0,{nul}},
- {"fu",HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,0,{nul}},
- {"fv",HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,0,{nul}},
- {"fw",HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,0,{nul}},
- {"fx",HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,0,{nul}},
- {"fy",HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,0,{nul}},
- {"fz",HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,0,{nul}},
- {"f0",HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,0,{nul}},
- {"f1",HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,0,{nul}},
- {"f2",HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,0,{nul}},
- {"f3",HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,0,{nul}},
- {"f4",HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,0,{nul}},
- {"f5",HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,0,{nul}},
- {"f6",HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,0,{nul}},
- {"f7",HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,0,{nul}},
- {"f8",HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,0,{nul}},
- {"f9",HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,0,{nul}},
- {"ga",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,0,{nul}},
- {"gb",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,0,{nul}},
- {"gc",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,0,{nul}},
- {"gd",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,0,{nul}},
- {"ge",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,0,{nul}},
- {"gf",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,0,{nul}},
- {"gg",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,0,{nul}},
- {"gh",HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,0,{nul}},
-#ifdef WLAN_FEATURE_11AC
- {"gj",HAL_PHY_RATE_11AC_DUP_6_MBPS,0,{nul}},
- {"gk",HAL_PHY_RATE_11AC_DUP_9_MBPS,0,{nul}},
- {"gl",HAL_PHY_RATE_11AC_DUP_12_MBPS,0,{nul}},
- {"gm",HAL_PHY_RATE_11AC_DUP_18_MBPS,0,{nul}},
- {"gn",HAL_PHY_RATE_11AC_DUP_24_MBPS,0,{nul}},
- {"go",HAL_PHY_RATE_11AC_DUP_36_MBPS,0,{nul}},
- {"gp",HAL_PHY_RATE_11AC_DUP_48_MBPS,0,{nul}},
- {"gq",HAL_PHY_RATE_11AC_DUP_54_MBPS,0,{nul}},
- {"gr",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_6_5_MBPS,0,{nul}},
- {"gs",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_13_MBPS,0,{nul}},
- {"gt",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_19_5_MBPS,0,{nul}},
- {"gu",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_26_MBPS,0,{nul}},
- {"gv",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_39_MBPS,0,{nul}},
- {"gw",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_52_MBPS,0,{nul}},
- {"gx",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_58_5_MBPS,0,{nul}},
- {"gy",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_65_MBPS,0,{nul}},
- {"gz",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_78_MBPS,0,{nul}},
-#ifdef WCN_PRONTO
- {"j8",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,0,{nul}},
-#endif
- {"g0",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_7_2_MBPS,0,{nul}},
- {"g1",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_14_4_MBPS,0,{nul}},
- {"g2",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_21_6_MBPS,0,{nul}},
- {"g3",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_28_8_MBPS,0,{nul}},
- {"g4",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_43_3_MBPS,0,{nul}},
- {"g5",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_57_7_MBPS,0,{nul}},
- {"g6",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_65_MBPS,0,{nul}},
- {"g7",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_72_2_MBPS,0,{nul}},
- {"g8",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_86_6_MBPS,0,{nul}},
-#ifdef WCN_PRONTO
- {"j9",HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,0,{nul}},
-#endif
- {"g9",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,0,{nul}},
- {"ha",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,0,{nul}},
- {"hb",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,0,{nul}},
- {"hc",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,0,{nul}},
- {"hd",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,0,{nul}},
- {"he",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,0,{nul}},
- {"hf",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,0,{nul}},
- {"hg",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,0,{nul}},
- {"hh",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,0,{nul}},
- {"hi",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,0,{nul}},
- {"hj",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,0,{nul}},
- {"hk",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,0,{nul}},
- {"hl",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,0,{nul}},
- {"hm",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,0,{nul}},
- {"hn",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,0,{nul}},
- {"ho",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,0,{nul}},
- {"hp",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,0,{nul}},
- {"hq",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,0,{nul}},
- {"hr",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,0,{nul}},
- {"hs",HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,0,{nul}},
- {"ht",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,0,{nul}},
- {"hu",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,0,{nul}},
- {"hv",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,0,{nul}},
- {"hw",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,0,{nul}},
- {"hx",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,0,{nul}},
- {"hy",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,0,{nul}},
- {"hz",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,0,{nul}},
- {"h0",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,0,{nul}},
- {"h1",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,0,{nul}},
- {"h2",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,0,{nul}},
- {"h3",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,0,{nul}},
- {"h4",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,0,{nul}},
- {"h5",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,0,{nul}},
- {"h6",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,0,{nul}},
- {"h7",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,0,{nul}},
- {"h8",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,0,{nul}},
- {"h9",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,0,{nul}},
- {"ia",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,0,{nul}},
- {"ib",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,0,{nul}},
- {"ic",HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,0,{nul}},
-#endif
- {{nul},0, 0,{nul}},
- }, // INDEX_ENUM_NUM_HAL_PHY_RATES
-
- { //INDEX_ENUM_LAST
- {{nul},0, 0,{nul}},
- }, //INDEX_ENUM_LAST
-}; // END _NV_TEMPLATE_ENUM
-
-
-int getEnumNoOfFields(int enumIdx){
-#ifdef WLAN_FEATURE_11AC
- enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 17;
-#ifdef WCN_PRONTO
- enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 1;
-#endif
- enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 9;
-#ifdef WCN_PRONTO
- enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 1;
-#endif
- enumNoOfFieldArray[7] = enumNoOfFieldArray[7] + 40;
-#endif
-
- return enumNoOfFieldArray[enumIdx];
-}
-
-
-static int tableNoOfFieldArray[TABLE_BUILTIN_MAX] =
- {14,12,2,2,16,1,2,2,23,1,1,1,4,2,13};
-
-_NV_TEMPLATE_TABLE NvTablesBuiltIn[/*TABLES_MAX*/][TABLE_ENTRIES_MAX] = {
- { // TABLE_sHalNv
- {"jz",_TABLE_IDX(TABLE_sNvFields),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.fields) - (char *)&nvDefaults),"fields"},
- {"jm",_TABLE_IDX(TABLE_tRateGroupPwr),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
- ((char *)&(nvDefaults.tables.pwrOptimum[0]) - (char *)&nvDefaults.tables),
- "pwrOptimum"},
- {"dx",_TABLE_IDX(TABLE_sRegulatoryChannel),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.regDomains[0].channels[0]) -
- (char *)&nvDefaults.tables.regDomains[0]),"channels"},
- {"jn",_TABLE_IDX(TABLE_sRegulatoryDomains),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_REG_DOMAINS))),0,0,
- ((char *)&(nvDefaults.tables.regDomains[0]) - (char *)&nvDefaults.tables),
- "regDomains"},
- {"jo",_TABLE_IDX(TABLE_sDefaultCountry),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.defaultCountryTable) -
- (char *)&nvDefaults.tables),"defaultCountryTable"},
- {"jp",_TABLE_IDX(TABLE_tTpcPowerTable),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.plutCharacterized[0]) -
- (char *)&nvDefaults.tables),"plutCharacterized"},
- {"jr",_TABLE_IDX(TABLE_tRateGroupPwrVR),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
- ((char *)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) -
- (char *)&nvDefaults.tables),"pwrOptimum_virtualRate"},
- {"js",_TABLE_IDX(TABLE_sFwConfig),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig) - (char *)&nvDefaults.tables),
- "fwConfig"},
- {"jt",_TABLE_IDX(TABLE_sRssiChannelOffsets),(_ADD_SIZE1(2)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|(FIELD_SIZE_VALUE_BITS(2))),
- 0,0,((char *)&(nvDefaults.tables.rssiChanOffsets[0]) -
- (char *)&nvDefaults.tables),"rssiChanOffsets"},
- {"er",_TABLE_IDX(TABLE_sCalData),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData) -
- (char *)&nvDefaults.tables.hwCalValues),"calData"},
- {"ju",_TABLE_IDX(TABLE_sHwCalValues),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues) - (char *)&nvDefaults.tables),
- "hwCalValues"},
- {"jx",_TABLE_IDX(TABLE_sOfdmCmdPwrOffset),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset) - (char *)&nvDefaults.tables),
- "ofdmCmdPwrOffset"},
- {"jy",_TABLE_IDX(TABLE_sTxBbFilterMode),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.txbbFilterMode) - (char *)&nvDefaults.tables),
- "txbbFilterMode"},
- {"j0",_TABLE_IDX(TABLE_sNvTables),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables) - (char *)&nvDefaults),"tables"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sHalNv
-
- { // TABLE_sNvFields
- {"ap",_ID_U16,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.productId) -
- (char *)&nvDefaults.fields),"productId"},
- {"aq",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.productBands) -
- (char *)&nvDefaults.fields),"productBands"},
- {"ar",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.wlanNvRevId) -
- (char *)&nvDefaults.fields),"wlanNvRevId"},
- {"as",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.numOfTxChains) -
- (char *)&nvDefaults.fields),"numOfTxChains"},
- {"at",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.numOfRxChains) -
- (char *)&nvDefaults.fields),"numOfRxChains"},
- {"au",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
- ((char *)&(nvDefaults.fields.macAddr[0]) - (char *)&nvDefaults.fields),
- "macAddr"},
- {"av",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
- ((char *)&(nvDefaults.fields.macAddr2[0]) - (char *)&nvDefaults.fields),
- "macAddr2"},
- {"aw",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
- ((char *)&(nvDefaults.fields.macAddr3[0]) - (char *)&nvDefaults.fields),
- "macAddr3"},
- {"ax",_ID_U8,(_ADD_SIZE1(NV_FIELD_MAC_ADDR_SIZE)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(NV_FIELD_MAC_ADDR_SIZE))),0,0,
- ((char *)&(nvDefaults.fields.macAddr4[0]) - (char *)&nvDefaults.fields),
- "macAddr4"},
- {"ay",_ID_U8,(_ADD_SIZE1(NV_FIELD_MFG_SN_SIZE)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(NV_FIELD_MFG_SN_SIZE))),0,0,
- ((char *)&(nvDefaults.fields.mfgSN[0]) - (char *)&nvDefaults.fields),"mfgSN"}
- ,
- {"az",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.couplerType) -
- (char *)&nvDefaults.fields),"couplerType"},
- {"a0",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.fields.nvVersion) -
- (char *)&nvDefaults.fields),"nvVersion"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sNvFields
-
- { // TABLE_sRegulatoryChannel
- {"dv",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.regDomains[0].channels[0].enabled) -
- (char *)&nvDefaults.tables.regDomains[0].channels[0]),"enabled"},
- {"dw",_ID_S8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.regDomains[0].channels[0].pwrLimit) -
- (char *)&nvDefaults.tables.regDomains[0].channels[0]),"pwrLimit"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sRegulatoryChannel
-
- { // TABLE_sRssiChannelOffsets
- {"d1",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.rssiChanOffsets[0].bRssiOffset[0]) -
- (char *)&nvDefaults.tables.rssiChanOffsets[0]),"bRssiOffset"},
- {"d2",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.rssiChanOffsets[0].gnRssiOffset[0]) -
- (char *)&nvDefaults.tables.rssiChanOffsets[0]),"gnRssiOffset"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sRssiChannelOffsets
-
- { // TABLE_sCalData
- {"ea",_ID_U16,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHd2G) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHd2G"},
- {"eb",_ID_U16,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHd5G) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHd5G"},
- {"ec",_ID_U16,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHdxLNA5G"},
- {"ed",_ID_U8,SINGULAR,0,0,0,
- (((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) +
- sizeof(uint16)) - (char *)&nvDefaults.tables.hwCalValues.calData),
- "nv_TxBBFSel9MHz"},
- {"ee",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam2) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam2"},
- {"ef",_ID_U16,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.custom_tcxo_reg8) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"custom_tcxo_reg8"},
- {"eg",_ID_U16,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.custom_tcxo_reg9) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"custom_tcxo_reg9"},
- {"eh",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam3) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam3"},
- {"ei",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam4) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam4"},
- {"ej",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam5) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam5"},
- {"ek",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam6) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam6"},
- {"el",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam7) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam7"},
- {"em",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam8) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam8"},
- {"en",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam9) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam9"},
- {"eo",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam10) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam10"},
- {"ep",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam11) -
- (char *)&nvDefaults.tables.hwCalValues.calData),"hwParam11"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sCalData
-
- { // TABLE_sTxBbFilterMode
- {"es",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.txbbFilterMode.txFirFilterMode) -
- (char *)&nvDefaults.tables.txbbFilterMode),"txFirFilterMode"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sTxBbFilterMode
-
- { // TABLE_sOfdmCmdPwrOffset
- {"et",_ID_S16,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset.ofdmPwrOffset) -
- (char *)&nvDefaults.tables.ofdmCmdPwrOffset),"ofdmPwrOffset"},
- {"eu",_ID_S16,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset.rsvd) -
- (char *)&nvDefaults.tables.ofdmCmdPwrOffset),"rsvd"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sOfdmCmdPwrOffset
-
- { // TABLE_sDefaultCountry
- {"if",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.defaultCountryTable.regDomain) -
- (char *)&nvDefaults.tables.defaultCountryTable),"regDomain"},
- {"ig",_ID_U8,(_ADD_SIZE1(NV_FIELD_COUNTRY_CODE_SIZE)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(NV_FIELD_COUNTRY_CODE_SIZE))),0,0,
- ((char *)&(nvDefaults.tables.defaultCountryTable.countryCode[0]) -
- (char *)&nvDefaults.tables.defaultCountryTable),"countryCode"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sDefaultCountry
-
- { // TABLE_sFwConfig
- {"ih",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.skuID) -
- (char *)&nvDefaults.tables.fwConfig),"skuID"},
- {"ii",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.tpcMode2G)
- - (char *)&nvDefaults.tables.fwConfig),"tpcMode2G"},
- {"ij",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.tpcMode5G)
- - (char *)&nvDefaults.tables.fwConfig),"tpcMode5G"},
- {"ik",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem1)
- - (char *)&nvDefaults.tables.fwConfig),"configItem1"},
- {"il",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPA2G) -
- (char *)&nvDefaults.tables.fwConfig),"xPA2G"},
- {"im",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPA5G) -
- (char *)&nvDefaults.tables.fwConfig),"xPA5G"},
- {"in",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.extPaCtrl0Polarity) -
- (char *)&nvDefaults.tables.fwConfig),"extPaCtrl0Polarity"},
- {"io",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.extPaCtrl1Polarity) -
- (char *)&nvDefaults.tables.fwConfig),"extPaCtrl1Polarity"},
- {"ip",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xLNA2G) -
- (char *)&nvDefaults.tables.fwConfig),"xLNA2G"},
- {"iq",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xLNA5G) -
- (char *)&nvDefaults.tables.fwConfig),"xLNA5G"},
- {"ir",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xCoupler2G)
- - (char *)&nvDefaults.tables.fwConfig),"xCoupler2G"},
- {"is",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xCoupler5G)
- - (char *)&nvDefaults.tables.fwConfig),"xCoupler5G"},
- {"it",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPdet2G) -
- (char *)&nvDefaults.tables.fwConfig),"xPdet2G"},
- {"iu",_ID_U8,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.xPdet5G) -
- (char *)&nvDefaults.tables.fwConfig),"xPdet5G"},
- {"iv",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.enableDPD2G) -
- (char *)&nvDefaults.tables.fwConfig),"enableDPD2G"},
- {"iw",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.enableDPD5G) -
- (char *)&nvDefaults.tables.fwConfig),"enableDPD5G"},
- {"ix",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect2G) -
- (char *)&nvDefaults.tables.fwConfig),"pdadcSelect2G"},
- {"iy",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect5GLow) -
- (char *)&nvDefaults.tables.fwConfig),"pdadcSelect5GLow"},
- {"iz",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect5GMid) -
- (char *)&nvDefaults.tables.fwConfig),"pdadcSelect5GMid"},
- {"i0",_ID_U8,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig.pdadcSelect5GHigh) -
- (char *)&nvDefaults.tables.fwConfig),"pdadcSelect5GHigh"},
- {"i1",_ID_U32,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem2)
- - (char *)&nvDefaults.tables.fwConfig),"configItem2"},
- {"i2",_ID_U32,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem3)
- - (char *)&nvDefaults.tables.fwConfig),"configItem3"},
- {"i3",_ID_U32,SINGULAR,0,0,0,((char *)&(nvDefaults.tables.fwConfig.configItem4)
- - (char *)&nvDefaults.tables.fwConfig),"configItem4"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sFwConfig
-
- { // TABLE_tTpcPowerTable
- {"kc",_ID_U8,(_ADD_SIZE2(TPC_MEM_POWER_LUT_DEPTH)|ARRAY_2),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_PHY_MAX_TX_CHAINS))),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(TPC_MEM_POWER_LUT_DEPTH))),0,
- ((char *)&(nvDefaults.tables.plutCharacterized[0]) -
- (char *)&nvDefaults.tables.plutCharacterized[0]),"tTpcPowerTable"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_tTpcPowerTable
-
- { // TABLE_tRateGroupPwr
- {"kb",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_HAL_PHY_RATES))),0,0,
- ((char *)&(nvDefaults.tables.pwrOptimum[0]) -
- (char *)&nvDefaults.tables.pwrOptimum[0]),"tRateGroupPwr"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_tRateGroupPwr
-
- { // TABLE_tRateGroupPwrVR
- {"kd",_ID_U32,(_ADD_SIZE1(NUM_RF_VR_RATE)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|
- (FIELD_SIZE_VALUE_BITS(NUM_RF_VR_RATE))),0,0,
- ((char *)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) -
- (char *)&nvDefaults.tables.pwrOptimum_virtualRate[0]),"tRateGroupPwrVR"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_tRateGroupPwrVR
-
- { // TABLE_sRegulatoryDomains
- {"dx",_TABLE_IDX(TABLE_sRegulatoryChannel),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.regDomains[0].channels[0]) -
- (char *)&nvDefaults.tables.regDomains[0]),"channels"},
- {"dy",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
- ((char *)&(nvDefaults.tables.regDomains[0].antennaGain[0]) -
- (char *)&nvDefaults.tables.regDomains[0]),"antennaGain"},
- {"dz",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_2_4GHZ_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.regDomains[0].bRatePowerOffset[0]) -
- (char *)&nvDefaults.tables.regDomains[0]),"bRatePowerOffset"},
- {"d0",_ID_U32,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.regDomains[0].gnRatePowerOffset[0]) -
- (char *)&nvDefaults.tables.regDomains[0]),"gnRatePowerOffset"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sRegulatoryDomains
-
- { // TABLE_sHwCalValues
- {"eq",_ID_U32,SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.validBmap) -
- (char *)&nvDefaults.tables.hwCalValues),"validBmap"},
- {"er",_TABLE_IDX(TABLE_sCalData),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues.calData) -
- (char *)&nvDefaults.tables.hwCalValues),"calData"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sHwCalValues
-
- { // TABLE_sNvTables
- {"jm",_TABLE_IDX(TABLE_tRateGroupPwr),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
- ((char *)&(nvDefaults.tables.pwrOptimum[0]) - (char *)&nvDefaults.tables),
- "pwrOptimum"},
- {"jn",_TABLE_IDX(TABLE_sRegulatoryDomains),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_REG_DOMAINS))),0,0,
- ((char *)&(nvDefaults.tables.regDomains[0]) - (char *)&nvDefaults.tables),
- "regDomains"},
- {"jo",_TABLE_IDX(TABLE_sDefaultCountry),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.defaultCountryTable) -
- (char *)&nvDefaults.tables),"defaultCountryTable"},
- {"jp",_TABLE_IDX(TABLE_tTpcPowerTable),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.plutCharacterized[0]) -
- (char *)&nvDefaults.tables),"plutCharacterized"},
- {"jq",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.plutPdadcOffset[0]) -
- (char *)&nvDefaults.tables),"plutPdadcOffset"},
- {"jr",_TABLE_IDX(TABLE_tRateGroupPwrVR),(ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_SUBBANDS))),0,0,
- ((char *)&(nvDefaults.tables.pwrOptimum_virtualRate[0]) -
- (char *)&nvDefaults.tables),"pwrOptimum_virtualRate"},
- {"js",_TABLE_IDX(TABLE_sFwConfig),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.fwConfig) - (char *)&nvDefaults.tables),
- "fwConfig"},
- {"jt",_TABLE_IDX(TABLE_sRssiChannelOffsets),(_ADD_SIZE1(2)|ARRAY_1),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_INT))|(FIELD_SIZE_VALUE_BITS(2))),
- 0,0,((char *)&(nvDefaults.tables.rssiChanOffsets[0]) -
- (char *)&nvDefaults.tables),"rssiChanOffsets"},
- {"ju",_TABLE_IDX(TABLE_sHwCalValues),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.hwCalValues) - (char *)&nvDefaults.tables),
- "hwCalValues"},
- {"jv",_ID_S16,(ARRAY_1),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,0,
- ((char *)&(nvDefaults.tables.antennaPathLoss[0]) -
- (char *)&nvDefaults.tables),"antennaPathLoss"},
- {"jw",_ID_S16,(ARRAY_2),((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_802_11_MODES))),
- ((FIELD_SIZE_TYPE_BIT(FIELD_SIZE_IDX_ENUM))|
- (FIELD_SIZE_VALUE_BITS(INDEX_ENUM_NUM_RF_CHANNELS))),0,
- ((char *)&(nvDefaults.tables.pktTypePwrLimits[0][0]) -
- (char *)&nvDefaults.tables),"pktTypePwrLimits"},
- {"jx",_TABLE_IDX(TABLE_sOfdmCmdPwrOffset),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.ofdmCmdPwrOffset) - (char *)&nvDefaults.tables),
- "ofdmCmdPwrOffset"},
- {"jy",_TABLE_IDX(TABLE_sTxBbFilterMode),SINGULAR,0,0,0,
- ((char *)&(nvDefaults.tables.txbbFilterMode) - (char *)&nvDefaults.tables),
- "txbbFilterMode"},
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, // TABLE_sNvTables
-
- { //INDEX_TABLE_LAST
- {{nul}, 0, 0, 0, 0, 0, 0,{nul}},
- }, //INDEX_TABLE_LAST
-}; // END _NV_TEMPLATE_TABLE
-
-int getTableNoOfFields(int tblIdx)
-{
- return tableNoOfFieldArray[tblIdx];
-}
diff --git a/CORE/WDA/src/wlan_nv.c b/CORE/WDA/src/wlan_nv.c
deleted file mode 100644
index c7a063f6bfd3..000000000000
--- a/CORE/WDA/src/wlan_nv.c
+++ /dev/null
@@ -1,5376 +0,0 @@
-/*
- * Copyright (c) 2012 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/** ------------------------------------------------------------------------- *
- ------------------------------------------------------------------------- *
-
-
- \file wlan_nv.c
-
- \brief Contains collection of table default values to use in
- case a table is not found in NV
-
- $Id$
-
- ========================================================================== */
-
-#ifndef WLAN_NV_C
-#define WLAN_NV_C
-
-#include "palTypes.h"
-#include "wlan_nv.h"
-//#include "wlan_hal_msg.h"
-
-const sHalNv nvDefaults =
-{
- {
- 0, // tANI_U16 productId;
- 1, // tANI_U8 productBands;
- 2, // tANI_U8 wlanNvRevId; //0: WCN1312, 1: WCN1314, 2: WCN3660
- 1, // tANI_U8 numOfTxChains;
- 1, // tANI_U8 numOfRxChains;
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE];
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE];
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE];
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // tANI_U8 macAddr[NV_FIELD_MAC_ADDR_SIZE];
- { "\0" },
- 0, // tANI_U8 couplerType;
- WLAN_NV_VERSION, // tANI_U8 nvVersion;
- }, //fields
-
- {
- // NV_TABLE_RATE_POWER_SETTINGS
- {
- // typedef tANI_S16 tPowerdBm;
- //typedef tPowerdBm tRateGroupPwr[NUM_HAL_PHY_RATES];
- //tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS];
- //2.4G
- {
- //802.11b Rates
- {1900}, // HAL_PHY_RATE_11B_LONG_1_MBPS,
- {1900}, // HAL_PHY_RATE_11B_LONG_2_MBPS,
- {1900}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS,
- {1900}, // HAL_PHY_RATE_11B_LONG_11_MBPS,
- {1900}, // HAL_PHY_RATE_11B_SHORT_2_MBPS,
- {1900}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
- {1900}, // HAL_PHY_RATE_11B_SHORT_11_MBPS,
-
- //11A 20MHz Rates
- {1700}, // HAL_PHY_RATE_11A_6_MBPS,
- {1700}, // HAL_PHY_RATE_11A_9_MBPS,
- {1700}, // HAL_PHY_RATE_11A_12_MBPS,
- {1650}, // HAL_PHY_RATE_11A_18_MBPS,
- {1600}, // HAL_PHY_RATE_11A_24_MBPS,
- {1550}, // HAL_PHY_RATE_11A_36_MBPS,
- {1550}, // HAL_PHY_RATE_11A_48_MBPS,
- {1550}, // HAL_PHY_RATE_11A_54_MBPS,
-
- //DUP 11A 40MHz Rates
- {1700}, // HAL_PHY_RATE_11A_DUP_6_MBPS,
- {1700}, // HAL_PHY_RATE_11A_DUP_9_MBPS,
- {1700}, // HAL_PHY_RATE_11A_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_24_MBPS,
- {1550}, // HAL_PHY_RATE_11A_DUP_36_MBPS,
- {1550}, // HAL_PHY_RATE_11A_DUP_48_MBPS,
- {1500}, // HAL_PHY_RATE_11A_DUP_54_MBPS,
-
- //MCS Index #0-7(20/40MHz)
- {1700}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
- {1700}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS,
- {1650}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS,
- {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
- {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
- {1650}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
-
- //MCS Index #8-15(20/40MHz)
- {1700}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
- {1700}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
- {1650}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
- {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
- {1700}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
- {1650}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
-
-#ifdef WLAN_FEATURE_11AC
- //11AC rates
- //11A duplicate 80MHz Rates
- {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS,
- {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS,
- {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS,
-
- //11ac 20MHZ NG, SG
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS,
-#ifdef WCN_PRONTO
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
-#endif
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS,
-#ifdef WCN_PRONTO
- {0000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
-#endif
-
- //11ac 40MHZ NG, SG
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
-
- //11ac 80MHZ NG, SG
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
- {0000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
-#endif
- }, // RF_SUBBAND_2_4_GHZ
- // 5G Low
- {
- //802.11b Rates
- {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS,
-
- ///11A 20MHz Rates
- {1600}, // HAL_PHY_RATE_11A_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_12_MBPS,
- {1550}, // HAL_PHY_RATE_11A_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_54_MBPS,
-
- ///DUP 11A 40MHz Rates
- {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS,
-
- ///MCS Index #0-7(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS,
- {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
-
- ///MCS Index #8-15(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
-
-#ifdef WLAN_FEATUURE_11AC
- ///11AC rates
- ///11A duplicate 80MHz Rates
- {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS,
- {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS,
- {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS,
-
- ///11ac 20MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
-#endif
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
-#endif
- //11ac 40MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
-
-
- //11ac 80MHZ NG, SG
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
-#endif
- }, // RF_SUBBAND_5_LOW_GHZ
- // 5G Mid
- {
- //802.11b Rates
- {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS,
-
- ///11A 20MHz Rates
- {1600}, // HAL_PHY_RATE_11A_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_12_MBPS,
- {1550}, // HAL_PHY_RATE_11A_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_54_MBPS,
-
- ///DU P 11A 40MHz Rates
- {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS,
-
- ///MCSS Index #0-7(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS,
- {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
-
- ///MCSS Index #8-15(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
-
-#ifdef WLAN_FEATUURE_111AC
- ///11CAC rates
- ///11Ad duplicate 80MHz Rates
- {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS,
- {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS,
- {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS,
-
- ///11a c 20MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
-#endif
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
-#endif
- //11ac 40MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
-
-
- ///11a c 80MHZ NG, SG
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
-#endif
- }, // // RF_SUBBAND_5_MID_GHZ
- // 5G High
- {
- //802.11b Rates
- {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS,
-
- ///11A 20MHz Rates
- {1600}, // HAL_PHY_RATE_11A_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_12_MBPS,
- {1550}, // HAL_PHY_RATE_11A_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_54_MBPS,
-
- ///DU P 11A 40MHz Rates
- {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS,
-
- ///MCSS Index #0-7(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS,
- {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
-
- ///MCSS Index #8-15(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
-
-#ifdef WLAN_FEATUURE_11AC
- ///11CAC rates
- ///11Ad duplicate 80MHz Rates
- {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS,
- {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS,
- {1500}, // HAL_PHY_RATE_11AC_DUP_54_MBPS,
-
- ///11a c 20MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
-#endif
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
-#endif
- //11ac 40MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
-
-
- ///11a c 80MHZ NG, SG
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
-#endif
- }, // RF_SUBBAND_5_HIGH_GHZ,
- // 4.9G
-
- {
- //802.11b Rates
- {0}, // HAL_PHY_RATE_11B_LONG_1_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_LONG_11_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_2_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_5_5_MBPS,
- {0}, // HAL_PHY_RATE_11B_SHORT_11_MBPS,
-
- ///11A 20MHz Rates
- {1600}, // HAL_PHY_RATE_11A_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_12_MBPS,
- {1550}, // HAL_PHY_RATE_11A_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_54_MBPS,
-
- ///DU P 11A 40MHz Rates
- {1600}, // HAL_PHY_RATE_11A_DUP_6_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_9_MBPS,
- {1600}, // HAL_PHY_RATE_11A_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11A_DUP_18_MBPS,
- {1550}, // HAL_PHY_RATE_11A_DUP_24_MBPS,
- {1450}, // HAL_PHY_RATE_11A_DUP_36_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_48_MBPS,
- {1400}, // HAL_PHY_RATE_11A_DUP_54_MBPS,
-
- ///MCSS Index #0-7(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_6_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_13_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_19_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_26_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_39_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_52_MBPS,
- {1350}, // HAL_PHY_RATE_MCS_1NSS_58_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_65_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_7_2_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_14_4_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_21_7_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_28_9_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_43_3_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_57_8_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_65_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_72_2_MBPS,
-
- ///MCSS Index #8-15(20/40MHz)
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_13_5_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_CB_27_MBPS,
- {1550}, // HAL_PHY_RATE_MCS_1NSS_CB_40_5_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_CB_54_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_CB_81_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_CB_108_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_CB_121_5_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_CB_135_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_15_MBPS,
- {1600}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_30_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_45_MBPS,
- {1500}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_60_MBPS,
- {1450}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_90_MBPS,
- {1400}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_120_MBPS,
- {1300}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_135_MBPS,
- {1200}, // HAL_PHY_RATE_MCS_1NSS_MM_SG_CB_150_MBPS,
-
-#ifdef WLAN_FEATUURE_11AC
- ///11CAC rates
- ///11Ad duplicate 80MHz Rates
- {1700}, // HAL_PHY_RATE_11AC_DUP_6_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_9_MBPS,
- {1700}, // HAL_PHY_RATE_11AC_DUP_12_MBPS,
- {1650}, // HAL_PHY_RATE_11AC_DUP_18_MBPS,
- {1600}, // HAL_PHY_RATE_11AC_DUP_24_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_36_MBPS,
- {1550}, // HAL_PHY_RATE_11AC_DUP_48_MBPS,
- {1500,, // HAL_PHY_RATE_11AC_DUP_54_MBPS,
-
- ///11a c 20MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_6_5_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_13_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_19_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_26_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_39_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_52_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_65_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_NGI_78_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_NGI_86_5_MBPS,
-#endif
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_7_2_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_14_4_MBPS,
- {1350}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_21_6_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_28_8_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_43_3_MBPS,
- {1200}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_57_7_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_72_2_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_CB_SGI_86_6_MBPS,
-#ifdef WCN_PRONTO
- { 800}, // HAL_PHY_RATE_VHT_20MHZ_MCS_1NSS_SGI_96_1_MBPS,
-#endif
- //11ac 40MHZ NG, SG
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_13_5_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_27_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_40_5_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_54_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_81_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_108_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_121_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_135_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_162_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_NGI_180_MBPS,
- {1400}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_15_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_30_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_45_MBPS,
- {1250}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_60_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_90_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_120_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_135_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_150_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_180_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_40MHZ_MCS_1NSS_CB_SGI_200_MBPS,
-
-
- ///11a c 80MHZ NG, SG
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_29_3_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_58_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_87_8_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_117_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_175_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_234_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_263_3_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_292_5_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_351_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_NGI_390_MBPS,
- {1300}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_32_5_MBPS,
- {1100}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_65_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_97_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_130_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_195_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_260_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_292_5_MBPS,
- {1000}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_325_MBPS,
- { 900}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_390_MBPS,
- { 800}, // HAL_PHY_RATE_VHT_80MHZ_MCS_1NSS_CB_SGI_433_3_MBPS,
-#endif
- }, // RF_SUBBAND_4_9_GHZ
- },
-
- // NV_TABLE_REGULATORY_DOMAINS
- {
- // typedef struct
- // {
- // tANI_BOOLEAN enabled;
- // tPowerdBm pwrLimit;
- // }sRegulatoryChannel;
-
- // typedef struct
- // {
- // sRegulatoryChannel channels[NUM_RF_CHANNELS];
- // uAbsPwrPrecision antennaGain[NUM_RF_SUBBANDS];
- // uAbsPwrPrecision bRatePowerOffset[NUM_2_4GHZ_CHANNELS];
- // }sRegulatoryDomains;
-
- //sRegulatoryDomains regDomains[NUM_REG_DOMAINS];
-
-
- { // REG_DOMAIN_FCC start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band, none CB
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_11,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_12,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_52,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_56,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_60,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DFS, 22}, //RF_CHAN_100,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_104,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_108,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_112,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_116,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_132,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_136,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_FCC end
-
- { // REG_DOMAIN_ETSI start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band, none CB
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_11,
- {NV_CHANNEL_ENABLE, 19}, //RF_CHAN_12,
- {NV_CHANNEL_ENABLE, 19}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_48,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_52,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_56,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_60,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_100,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_104,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_108,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_112,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_116,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_132,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_136,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_149,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_153,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_157,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_161,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 23}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_ETSI end
-
- { // REG_DOMAIN_JAPAN start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band, none CB
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_11,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_12,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_13,
- {NV_CHANNEL_ENABLE, 18}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_52,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_56,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_60,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DFS, 22}, //RF_CHAN_100,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_104,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_108,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_112,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_116,
- {NV_CHANNEL_DFS, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DFS, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DFS, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_132,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_136,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_149,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_153,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_157,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_161,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_JAPAN end
-
- { // REG_DOMAIN_WORLD start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_11,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_12,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_52,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_56,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_60,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DFS, 22}, //RF_CHAN_100,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_104,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_108,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_112,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_116,
- {NV_CHANNEL_DFS, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DFS, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DFS, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_132,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_136,
- {NV_CHANNEL_DFS, 24}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_149,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_153,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_157,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_161,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_WORLD end
-
- { // REG_DOMAIN_N_AMER_EXC_FCC start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band, none CB
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_11,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_12,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_N_AMER_EXC_FCC end
-
- { // REG_DOMAIN_APAC start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band, none CB
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_11,
- {NV_CHANNEL_ENABLE, 26}, //RF_CHAN_12,
- {NV_CHANNEL_ENABLE, 16}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_APAC end
-
- { // REG_DOMAIN_KOREA start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band, none CB
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_11,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_12,
- {NV_CHANNEL_ENABLE, 15}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_KOREA end
-
- { // REG_DOMAIN_HI_5GHZ start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band, none CB
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_11,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_12,
- {NV_CHANNEL_ENABLE, 14}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
-
- //4.9GHz Band, none CB
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_240,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_244,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_248,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_252,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_208,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_212,
- {NV_CHANNEL_DISABLE, 23}, //RF_CHAN_216,
-
- //5GHz Low & Mid U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_36,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_40,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_44,
- {NV_CHANNEL_ENABLE, 17}, //RF_CHAN_48,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_52,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_56,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_60,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_64,
-
- //5GHz Mid Band - ETSI, none CB
- {NV_CHANNEL_DISABLE, 22}, //RF_CHAN_100,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_104,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_108,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_112,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_116,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_120,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_124,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_128,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_132,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_136,
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_140,
-
- //5GHz High U-NII Band, none CB
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_149,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_153,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_157,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_161,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_165,
-
- //2.4GHz Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_3,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_4,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_5,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_6,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_7,
- {NV_CHANNEL_ENABLE, 30}, //RF_CHAN_BOND_8,
- {NV_CHANNEL_ENABLE, 22}, //RF_CHAN_BOND_9,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_10,
- {NV_CHANNEL_ENABLE, 0}, //RF_CHAN_BOND_11,
-
- // 4.9GHz Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_242,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_246,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_250,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_210,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_214,
-
- //5GHz Low & Mid U-NII Band, channel bonded channels
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_38,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_42,
- {NV_CHANNEL_ENABLE, 20}, //RF_CHAN_BOND_46,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_50,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_54,
- {NV_CHANNEL_ENABLE, 27}, //RF_CHAN_BOND_58,
- {NV_CHANNEL_ENABLE, 25}, //RF_CHAN_BOND_62,
-
- //5GHz Mid Band - ETSI, channel bonded channels
- {NV_CHANNEL_DISABLE, 24}, //RF_CHAN_BOND_102
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_106
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_110
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_114
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_118
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_122
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_126
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_130
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_134
- {NV_CHANNEL_DISABLE, 27}, //RF_CHAN_BOND_138
-
- //5GHz High U-NII Band, channel bonded channels
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_151,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_155,
- {NV_CHANNEL_DISABLE, 30}, //RF_CHAN_BOND_159,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_BOND_163
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- }, // REG_DOMAIN_HI_5GHZ end
-
- { // REG_DOMAIN_NO_5GHZ start
- { //sRegulatoryChannel start
- //enabled, pwrLimit
- //2.4GHz Band
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_1,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_2,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_3,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_4,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_5,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_6,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_7,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_8,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_9,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_10,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_11,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_12,
- {NV_CHANNEL_ENABLE, 12}, //RF_CHAN_13,
- {NV_CHANNEL_DISABLE, 0}, //RF_CHAN_14,
- }, //sRegulatoryChannel end
-
- {
- { 0 }, // RF_SUBBAND_2_4_GHZ
- {0}, // RF_SUBBAND_5_LOW_GHZ
- {0}, // RF_SUBBAND_5_MID_GHZ
- {0}, // RF_SUBBAND_5_HIGH_GHZ
- {0} // RF_SUBBAND_4_9_GHZ
- },
-
- { // bRatePowerOffset start
- //2.4GHz Band
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- }, // bRatePowerOffset end
-
- { // gnRatePowerOffset start
- //apply to all 2.4 and 5G channels
- { 0 }, //RF_CHAN_1,
- { 0 }, //RF_CHAN_2,
- { 0 }, //RF_CHAN_3,
- { 0 }, //RF_CHAN_4,
- { 0 }, //RF_CHAN_5,
- { 0 }, //RF_CHAN_6,
- { 0 }, //RF_CHAN_7,
- { 0 }, //RF_CHAN_8,
- { 0 }, //RF_CHAN_9,
- { 0 }, //RF_CHAN_10,
- { 0 }, //RF_CHAN_11,
- { 0 }, //RF_CHAN_12,
- { 0 }, //RF_CHAN_13,
- { 0 }, //RF_CHAN_14,
- } // gnRatePowerOffset end
- } // REG_DOMAIN_NO_5GHZ end
- },
-
- // NV_TABLE_DEFAULT_COUNTRY
- {
- // typedef struct
- // {
- // tANI_U8 regDomain; //from eRegDomainId
- // tANI_U8 countryCode[NV_FIELD_COUNTRY_CODE_SIZE]; // string identifier
- // }sDefaultCountry;
-
- 0, // regDomain
- { 'U', 'S', 'I' } // countryCode
- },
-
- //NV_TABLE_TPC_POWER_TABLE
- {
- {
- {
- 0 , //0
- 41 , //1
- 43 , //2
- 45 , //3
- 47 , //4
- 49 , //5
- 51 , //6
- 53 , //7
- 55 , //8
- 56 , //9
- 58 , //10
- 59 , //11
- 60 , //12
- 62 , //13
- 63 , //14
- 64 , //15
- 65 , //16
- 67 , //17
- 68 , //18
- 69 , //19
- 70 , //20
- 71 , //21
- 72 , //22
- 73 , //23
- 74 , //24
- 75 , //25
- 75 , //26
- 76 , //27
- 77 , //28
- 78 , //29
- 78 , //30
- 79 , //31
- 80 , //32
- 81 , //33
- 82 , //34
- 82 , //35
- 83 , //36
- 83 , //37
- 84 , //38
- 85 , //39
- 86 , //40
- 86 , //41
- 87 , //42
- 88 , //43
- 89 , //44
- 89 , //45
- 90 , //46
- 91 , //47
- 91 , //48
- 92 , //49
- 92 , //50
- 93 , //51
- 93 , //52
- 94 , //53
- 94 , //54
- 95 , //55
- 95 , //56
- 95 , //57
- 96 , //58
- 96 , //59
- 97 , //60
- 97 , //61
- 98 , //62
- 98 , //63
- 98 , //64
- 99 , //65
- 99 , //66
- 99 , //67
- 100, //68
- 100, //69
- 100, //70
- 101, //71
- 101, //72
- 102, //73
- 102, //74
- 102, //75
- 102, //76
- 103, //77
- 103, //78
- 103, //79
- 103, //80
- 104, //81
- 104, //82
- 104, //83
- 104, //84
- 105, //85
- 105, //86
- 105, //87
- 105, //88
- 105, //89
- 106, //90
- 106, //91
- 106, //92
- 106, //93
- 106, //94
- 106, //95
- 106, //96
- 106, //97
- 106, //98
- 106, //99
- 106, //100
- 106, //101
- 106, //102
- 106, //103
- 106, //104
- 106, //105
- 107, //106
- 107, //107
- 107, //108
- 107, //109
- 107, //110
- 107, //111
- 107, //112
- 107, //113
- 107, //114
- 107, //115
- 107, //116
- 107, //117
- 107, //118
- 107, //119
- 107, //120
- 107, //121
- 107, //122
- 107, //123
- 107, //124
- 107, //125
- 107, //126
- 107, //127
- 107,
- }
- }, //RF_CHAN_1
- {
- {
- 0 , //0
- 41 , //1
- 43 , //2
- 45 , //3
- 47 , //4
- 49 , //5
- 51 , //6
- 52 , //7
- 54 , //8
- 56 , //9
- 57 , //10
- 59 , //11
- 60 , //12
- 61 , //13
- 62 , //14
- 64 , //15
- 65 , //16
- 66 , //17
- 67 , //18
- 68 , //19
- 69 , //20
- 70 , //21
- 71 , //22
- 72 , //23
- 73 , //24
- 74 , //25
- 75 , //26
- 75 , //27
- 76 , //28
- 77 , //29
- 78 , //30
- 79 , //31
- 79 , //32
- 80 , //33
- 81 , //34
- 82 , //35
- 82 , //36
- 83 , //37
- 84 , //38
- 85 , //39
- 85 , //40
- 86 , //41
- 87 , //42
- 88 , //43
- 88 , //44
- 89 , //45
- 89 , //46
- 90 , //47
- 91 , //48
- 91 , //49
- 92 , //50
- 92 , //51
- 93 , //52
- 93 , //53
- 94 , //54
- 94 , //55
- 95 , //56
- 95 , //57
- 96 , //58
- 96 , //59
- 96 , //60
- 97 , //61
- 97 , //62
- 98 , //63
- 98 , //64
- 98 , //65
- 99 , //66
- 99 , //67
- 99 , //68
- 100, //69
- 100, //70
- 101, //71
- 101, //72
- 101, //73
- 101, //74
- 102, //75
- 102, //76
- 102, //77
- 103, //78
- 103, //79
- 103, //80
- 104, //81
- 104, //82
- 104, //83
- 104, //84
- 105, //85
- 105, //86
- 105, //87
- 105, //88
- 105, //89
- 106, //90
- 106, //91
- 106, //92
- 106, //93
- 106, //94
- 106, //95
- 106, //96
- 106, //97
- 106, //98
- 106, //99
- 106, //100
- 106, //101
- 106, //102
- 107, //103
- 107, //104
- 107, //105
- 107, //106
- 107, //107
- 107, //108
- 107, //109
- 107, //110
- 107, //111
- 107, //112
- 107, //113
- 107, //114
- 107, //115
- 107, //116
- 107, //117
- 107, //118
- 107, //119
- 107, //120
- 107, //121
- 107, //122
- 107, //123
- 107, //124
- 107, //125
- 107, //126
- 107, //127
- 107,
- }
- }, //RF_CHAN_2
- {
- {
- 0 , //0
- 41 , //1
- 43 , //2
- 45 , //3
- 47 , //4
- 49 , //5
- 51 , //6
- 52 , //7
- 54 , //8
- 55 , //9
- 57 , //10
- 58 , //11
- 60 , //12
- 61 , //13
- 62 , //14
- 64 , //15
- 65 , //16
- 66 , //17
- 67 , //18
- 68 , //19
- 69 , //20
- 70 , //21
- 71 , //22
- 72 , //23
- 73 , //24
- 74 , //25
- 75 , //26
- 75 , //27
- 76 , //28
- 77 , //29
- 78 , //30
- 78 , //31
- 79 , //32
- 80 , //33
- 81 , //34
- 82 , //35
- 82 , //36
- 83 , //37
- 84 , //38
- 84 , //39
- 85 , //40
- 86 , //41
- 87 , //42
- 87 , //43
- 88 , //44
- 89 , //45
- 89 , //46
- 90 , //47
- 90 , //48
- 91 , //49
- 91 , //50
- 92 , //51
- 93 , //52
- 93 , //53
- 94 , //54
- 94 , //55
- 94 , //56
- 95 , //57
- 95 , //58
- 96 , //59
- 96 , //60
- 97 , //61
- 97 , //62
- 97 , //63
- 98 , //64
- 98 , //65
- 99 , //66
- 99 , //67
- 99 , //68
- 100, //69
- 100, //70
- 100, //71
- 101, //72
- 101, //73
- 101, //74
- 102, //75
- 102, //76
- 102, //77
- 103, //78
- 103, //79
- 103, //80
- 103, //81
- 104, //82
- 104, //83
- 104, //84
- 104, //85
- 104, //86
- 105, //87
- 105, //88
- 105, //89
- 105, //90
- 105, //91
- 105, //92
- 105, //93
- 105, //94
- 105, //95
- 105, //96
- 105, //97
- 105, //98
- 106, //99
- 106, //100
- 106, //101
- 106, //102
- 106, //103
- 106, //104
- 106, //105
- 106, //106
- 106, //107
- 106, //108
- 106, //109
- 106, //110
- 106, //111
- 106, //112
- 106, //113
- 106, //114
- 106, //115
- 106, //116
- 106, //117
- 106, //118
- 106, //119
- 106, //120
- 106, //121
- 106, //122
- 106, //123
- 106, //124
- 106, //125
- 106, //126
- 106, //127
- 107,
- }
- }, //RF_CHAN_3
- {
- {
- 0 , //0
- 42 , //1
- 44 , //2
- 46 , //3
- 48 , //4
- 49 , //5
- 51 , //6
- 53 , //7
- 55 , //8
- 57 , //9
- 58 , //10
- 60 , //11
- 61 , //12
- 62 , //13
- 63 , //14
- 64 , //15
- 66 , //16
- 67 , //17
- 68 , //18
- 69 , //19
- 70 , //20
- 71 , //21
- 72 , //22
- 73 , //23
- 74 , //24
- 75 , //25
- 75 , //26
- 76 , //27
- 77 , //28
- 78 , //29
- 78 , //30
- 79 , //31
- 80 , //32
- 81 , //33
- 82 , //34
- 82 , //35
- 83 , //36
- 84 , //37
- 84 , //38
- 85 , //39
- 86 , //40
- 87 , //41
- 87 , //42
- 88 , //43
- 88 , //44
- 89 , //45
- 90 , //46
- 90 , //47
- 91 , //48
- 91 , //49
- 92 , //50
- 92 , //51
- 93 , //52
- 93 , //53
- 94 , //54
- 94 , //55
- 95 , //56
- 95 , //57
- 95 , //58
- 96 , //59
- 96 , //60
- 97 , //61
- 97 , //62
- 98 , //63
- 98 , //64
- 98 , //65
- 99 , //66
- 99 , //67
- 99 , //68
- 100, //69
- 100, //70
- 100, //71
- 101, //72
- 101, //73
- 101, //74
- 102, //75
- 102, //76
- 102, //77
- 103, //78
- 103, //79
- 103, //80
- 103, //81
- 104, //82
- 104, //83
- 104, //84
- 104, //85
- 104, //86
- 104, //87
- 104, //88
- 104, //89
- 105, //90
- 105, //91
- 105, //92
- 105, //93
- 105, //94
- 105, //95
- 105, //96
- 105, //97
- 105, //98
- 105, //99
- 105, //100
- 105, //101
- 105, //102
- 105, //103
- 105, //104
- 106, //105
- 106, //106
- 106, //107
- 106, //108
- 106, //109
- 106, //110
- 106, //111
- 106, //112
- 106, //113
- 106, //114
- 106, //115
- 106, //116
- 106, //117
- 106, //118
- 106, //119
- 106, //120
- 106, //121
- 106, //122
- 106, //123
- 106, //124
- 106, //125
- 106, //126
- 106, //127
- 106,
- }
- }, //RF_CHAN_4
- {
- {
- 0 , //0
- 41 , //1
- 43 , //2
- 45 , //3
- 47 , //4
- 49 , //5
- 51 , //6
- 53 , //7
- 54 , //8
- 56 , //9
- 57 , //10
- 59 , //11
- 60 , //12
- 62 , //13
- 63 , //14
- 65 , //15
- 66 , //16
- 67 , //17
- 68 , //18
- 69 , //19
- 69 , //20
- 71 , //21
- 72 , //22
- 72 , //23
- 73 , //24
- 74 , //25
- 75 , //26
- 76 , //27
- 77 , //28
- 78 , //29
- 79 , //30
- 79 , //31
- 80 , //32
- 81 , //33
- 82 , //34
- 83 , //35
- 83 , //36
- 84 , //37
- 85 , //38
- 86 , //39
- 87 , //40
- 87 , //41
- 88 , //42
- 89 , //43
- 89 , //44
- 90 , //45
- 91 , //46
- 91 , //47
- 92 , //48
- 92 , //49
- 93 , //50
- 93 , //51
- 94 , //52
- 94 , //53
- 95 , //54
- 95 , //55
- 96 , //56
- 96 , //57
- 96 , //58
- 97 , //59
- 97 , //60
- 98 , //61
- 98 , //62
- 98 , //63
- 99 , //64
- 99 , //65
- 100, //66
- 100, //67
- 100, //68
- 101, //69
- 101, //70
- 101, //71
- 102, //72
- 102, //73
- 102, //74
- 103, //75
- 103, //76
- 103, //77
- 103, //78
- 104, //79
- 104, //80
- 104, //81
- 104, //82
- 105, //83
- 105, //84
- 105, //85
- 105, //86
- 105, //87
- 105, //88
- 105, //89
- 105, //90
- 105, //91
- 106, //92
- 106, //93
- 106, //94
- 106, //95
- 106, //96
- 106, //97
- 106, //98
- 106, //99
- 106, //100
- 106, //101
- 106, //102
- 106, //103
- 106, //104
- 106, //105
- 106, //106
- 106, //107
- 106, //108
- 106, //109
- 106, //110
- 106, //111
- 106, //112
- 106, //113
- 106, //114
- 106, //115
- 106, //116
- 106, //117
- 106, //118
- 106, //119
- 106, //120
- 106, //121
- 106, //122
- 106, //123
- 106, //124
- 106, //125
- 106, //126
- 106, //127
- 106,
- }
- }, //RF_CHAN_5
- {
- {
- 0 , //0
- 41 , //1
- 43 , //2
- 45 , //3
- 47 , //4
- 49 , //5
- 51 , //6
- 53 , //7
- 55 , //8
- 56 , //9
- 58 , //10
- 59 , //11
- 61 , //12
- 62 , //13
- 63 , //14
- 64 , //15
- 65 , //16
- 66 , //17
- 68 , //18
- 69 , //19
- 70 , //20
- 71 , //21
- 72 , //22
- 73 , //23
- 74 , //24
- 75 , //25
- 76 , //26
- 77 , //27
- 77 , //28
- 78 , //29
- 79 , //30
- 80 , //31
- 80 , //32
- 81 , //33
- 82 , //34
- 83 , //35
- 83 , //36
- 84 , //37
- 85 , //38
- 86 , //39
- 87 , //40
- 87 , //41
- 88 , //42
- 89 , //43
- 89 , //44
- 90 , //45
- 91 , //46
- 91 , //47
- 92 , //48
- 92 , //49
- 93 , //50
- 93 , //51
- 94 , //52
- 94 , //53
- 95 , //54
- 95 , //55
- 96 , //56
- 96 , //57
- 97 , //58
- 97 , //59
- 98 , //60
- 98 , //61
- 98 , //62
- 99 , //63
- 99 , //64
- 100, //65
- 100, //66
- 100, //67
- 101, //68
- 101, //69
- 101, //70
- 102, //71
- 102, //72
- 102, //73
- 103, //74
- 103, //75
- 103, //76
- 103, //77
- 104, //78
- 104, //79
- 104, //80
- 104, //81
- 104, //82
- 105, //83
- 105, //84
- 105, //85
- 105, //86
- 105, //87
- 105, //88
- 105, //89
- 106, //90
- 106, //91
- 106, //92
- 106, //93
- 106, //94
- 106, //95
- 106, //96
- 106, //97
- 106, //98
- 106, //99
- 106, //100
- 106, //101
- 106, //102
- 106, //103
- 106, //104
- 106, //105
- 106, //106
- 106, //107
- 106, //108
- 106, //109
- 106, //110
- 107, //111
- 107, //112
- 107, //113
- 107, //114
- 107, //115
- 107, //116
- 107, //117
- 107, //118
- 107, //119
- 107, //120
- 107, //121
- 107, //122
- 107, //123
- 107, //124
- 107, //125
- 107, //126
- 107, //127
- 107,
- }
- }, //RF_CHAN_6
- {
- {
- 0 , //0
- 41 , //1
- 43 , //2
- 45 , //3
- 47 , //4
- 49 , //5
- 51 , //6
- 53 , //7
- 55 , //8
- 56 , //9
- 58 , //10
- 60 , //11
- 61 , //12
- 62 , //13
- 63 , //14
- 64 , //15
- 66 , //16
- 67 , //17
- 68 , //18
- 69 , //19
- 70 , //20
- 71 , //21
- 72 , //22
- 73 , //23
- 74 , //24
- 75 , //25
- 76 , //26
- 77 , //27
- 77 , //28
- 78 , //29
- 79 , //30
- 80 , //31
- 80 , //32
- 81 , //33
- 82 , //34
- 83 , //35
- 84 , //36
- 84 , //37
- 85 , //38
- 86 , //39
- 87 , //40
- 87 , //41
- 88 , //42
- 88 , //43
- 89 , //44
- 90 , //45
- 90 , //46
- 91 , //47
- 91 , //48
- 92 , //49
- 92 , //50
- 93 , //51
- 93 , //52
- 94 , //53
- 94 , //54
- 95 , //55
- 95 , //56
- 96 , //57
- 96 , //58
- 97 , //59
- 97 , //60
- 97 , //61
- 98 , //62
- 98 , //63
- 99 , //64
- 99 , //65
- 99 , //66
- 100, //67
- 100, //68
- 100, //69
- 101, //70
- 101, //71
- 101, //72
- 102, //73
- 102, //74
- 102, //75
- 103, //76
- 103, //77
- 103, //78
- 103, //79
- 104, //80
- 104, //81
- 104, //82
- 104, //83
- 104, //84
- 104, //85
- 105, //86
- 105, //87
- 105, //88
- 105, //89
- 105, //90
- 105, //91
- 105, //92
- 105, //93
- 105, //94
- 105, //95
- 105, //96
- 105, //97
- 106, //98
- 106, //99
- 106, //100
- 106, //101
- 106, //102
- 106, //103
- 106, //104
- 106, //105
- 106, //106
- 106, //107
- 106, //108
- 106, //109
- 106, //110
- 106, //111
- 106, //112
- 106, //113
- 106, //114
- 106, //115
- 106, //116
- 106, //117
- 106, //118
- 106, //119
- 106, //120
- 106, //121
- 106, //122
- 106, //123
- 106, //124
- 106, //125
- 106, //126
- 106, //127
- 106,
- }
- }, //RF_CHAN_7
- {
- {
- 0 , //0
- 40 , //1
- 42 , //2
- 45 , //3
- 47 , //4
- 49 , //5
- 51 , //6
- 52 , //7
- 54 , //8
- 56 , //9
- 58 , //10
- 59 , //11
- 61 , //12
- 62 , //13
- 63 , //14
- 65 , //15
- 66 , //16
- 67 , //17
- 68 , //18
- 69 , //19
- 70 , //20
- 71 , //21
- 72 , //22
- 73 , //23
- 74 , //24
- 75 , //25
- 76 , //26
- 77 , //27
- 77 , //28
- 78 , //29
- 79 , //30
- 80 , //31
- 81 , //32
- 81 , //33
- 82 , //34
- 83 , //35
- 84 , //36
- 85 , //37
- 86 , //38
- 86 , //39
- 87 , //40
- 88 , //41
- 89 , //42
- 89 , //43
- 90 , //44
- 91 , //45
- 91 , //46
- 92 , //47
- 92 , //48
- 93 , //49
- 93 , //50
- 94 , //51
- 94 , //52
- 95 , //53
- 95 , //54
- 96 , //55
- 96 , //56
- 97 , //57
- 97 , //58
- 97 , //59
- 98 , //60
- 98 , //61
- 99 , //62
- 99 , //63
- 99 , //64
- 100, //65
- 100, //66
- 100, //67
- 101, //68
- 101, //69
- 102, //70
- 102, //71
- 102, //72
- 103, //73
- 103, //74
- 103, //75
- 104, //76
- 104, //77
- 104, //78
- 104, //79
- 105, //80
- 105, //81
- 105, //82
- 105, //83
- 105, //84
- 105, //85
- 105, //86
- 105, //87
- 106, //88
- 106, //89
- 106, //90
- 106, //91
- 106, //92
- 106, //93
- 106, //94
- 106, //95
- 106, //96
- 106, //97
- 106, //98
- 106, //99
- 106, //100
- 106, //101
- 106, //102
- 106, //103
- 106, //104
- 107, //105
- 107, //106
- 107, //107
- 107, //108
- 107, //109
- 107, //110
- 107, //111
- 107, //112
- 107, //113
- 107, //114
- 107, //115
- 107, //116
- 107, //117
- 107, //118
- 107, //119
- 107, //120
- 107, //121
- 107, //122
- 107, //123
- 107, //124
- 107, //125
- 107, //126
- 107, //127
- 107,
- }
- }, //RF_CHAN_8
- {
- {
- 0 , //0
- 41 , //1
- 44 , //2
- 46 , //3
- 48 , //4
- 50 , //5
- 52 , //6
- 54 , //7
- 56 , //8
- 58 , //9
- 59 , //10
- 60 , //11
- 62 , //12
- 63 , //13
- 64 , //14
- 66 , //15
- 67 , //16
- 68 , //17
- 69 , //18
- 70 , //19
- 71 , //20
- 72 , //21
- 73 , //22
- 74 , //23
- 75 , //24
- 76 , //25
- 77 , //26
- 78 , //27
- 79 , //28
- 79 , //29
- 80 , //30
- 81 , //31
- 82 , //32
- 83 , //33
- 83 , //34
- 84 , //35
- 85 , //36
- 86 , //37
- 87 , //38
- 87 , //39
- 88 , //40
- 89 , //41
- 89 , //42
- 90 , //43
- 91 , //44
- 91 , //45
- 92 , //46
- 92 , //47
- 93 , //48
- 93 , //49
- 94 , //50
- 94 , //51
- 95 , //52
- 95 , //53
- 96 , //54
- 96 , //55
- 97 , //56
- 97 , //57
- 98 , //58
- 98 , //59
- 98 , //60
- 99 , //61
- 99 , //62
- 100, //63
- 100, //64
- 100, //65
- 101, //66
- 101, //67
- 101, //68
- 102, //69
- 102, //70
- 103, //71
- 103, //72
- 103, //73
- 104, //74
- 104, //75
- 104, //76
- 104, //77
- 105, //78
- 105, //79
- 105, //80
- 105, //81
- 105, //82
- 105, //83
- 106, //84
- 106, //85
- 106, //86
- 106, //87
- 106, //88
- 106, //89
- 106, //90
- 106, //91
- 106, //92
- 106, //93
- 106, //94
- 106, //95
- 106, //96
- 106, //97
- 106, //98
- 107, //99
- 107, //100
- 107, //101
- 107, //102
- 107, //103
- 107, //104
- 107, //105
- 107, //106
- 107, //107
- 107, //108
- 107, //109
- 107, //110
- 107, //111
- 107, //112
- 107, //113
- 107, //114
- 107, //115
- 107, //116
- 107, //117
- 107, //118
- 107, //119
- 107, //120
- 107, //121
- 107, //122
- 107, //123
- 107, //124
- 107, //125
- 107, //126
- 107, //127
- 107,
- }
- }, //RF_CHAN_9
- {
- {
- 0 , //0
- 41 , //1
- 43 , //2
- 47 , //3
- 48 , //4
- 50 , //5
- 52 , //6
- 53 , //7
- 55 , //8
- 57 , //9
- 58 , //10
- 60 , //11
- 62 , //12
- 63 , //13
- 64 , //14
- 65 , //15
- 67 , //16
- 68 , //17
- 69 , //18
- 70 , //19
- 71 , //20
- 72 , //21
- 73 , //22
- 74 , //23
- 75 , //24
- 76 , //25
- 77 , //26
- 77 , //27
- 78 , //28
- 79 , //29
- 80 , //30
- 81 , //31
- 82 , //32
- 83 , //33
- 84 , //34
- 85 , //35
- 85 , //36
- 86 , //37
- 87 , //38
- 88 , //39
- 89 , //40
- 89 , //41
- 90 , //42
- 90 , //43
- 91 , //44
- 92 , //45
- 92 , //46
- 93 , //47
- 94 , //48
- 94 , //49
- 95 , //50
- 95 , //51
- 96 , //52
- 96 , //53
- 96 , //54
- 97 , //55
- 97 , //56
- 98 , //57
- 98 , //58
- 99 , //59
- 99 , //60
- 99 , //61
- 100, //62
- 100, //63
- 101, //64
- 101, //65
- 102, //66
- 102, //67
- 102, //68
- 103, //69
- 103, //70
- 103, //71
- 104, //72
- 104, //73
- 104, //74
- 105, //75
- 105, //76
- 105, //77
- 105, //78
- 105, //79
- 106, //80
- 106, //81
- 106, //82
- 106, //83
- 106, //84
- 106, //85
- 106, //86
- 106, //87
- 106, //88
- 107, //89
- 107, //90
- 107, //91
- 107, //92
- 107, //93
- 107, //94
- 107, //95
- 107, //96
- 107, //97
- 107, //98
- 107, //99
- 107, //100
- 107, //101
- 107, //102
- 107, //103
- 107, //104
- 107, //105
- 107, //106
- 107, //107
- 107, //108
- 107, //109
- 107, //110
- 107, //111
- 107, //112
- 107, //113
- 107, //114
- 107, //115
- 107, //116
- 107, //117
- 107, //118
- 107, //119
- 107, //120
- 107, //121
- 107, //122
- 107, //123
- 107, //124
- 107, //125
- 107, //126
- 107, //127
- 107,
- }
- }, //RF_CHAN_10
- {
- {
- 0 , //0
- 42 , //1
- 44 , //2
- 47 , //3
- 49 , //4
- 51 , //5
- 52 , //6
- 54 , //7
- 55 , //8
- 57 , //9
- 58 , //10
- 60 , //11
- 61 , //12
- 63 , //13
- 64 , //14
- 65 , //15
- 66 , //16
- 67 , //17
- 69 , //18
- 70 , //19
- 71 , //20
- 72 , //21
- 73 , //22
- 74 , //23
- 75 , //24
- 76 , //25
- 77 , //26
- 77 , //27
- 78 , //28
- 79 , //29
- 80 , //30
- 81 , //31
- 82 , //32
- 82 , //33
- 83 , //34
- 84 , //35
- 85 , //36
- 86 , //37
- 86 , //38
- 87 , //39
- 88 , //40
- 89 , //41
- 90 , //42
- 90 , //43
- 91 , //44
- 91 , //45
- 92 , //46
- 92 , //47
- 93 , //48
- 93 , //49
- 94 , //50
- 94 , //51
- 95 , //52
- 96 , //53
- 96 , //54
- 97 , //55
- 97 , //56
- 97 , //57
- 98 , //58
- 98 , //59
- 99 , //60
- 99 , //61
- 100, //62
- 100, //63
- 100, //64
- 101, //65
- 101, //66
- 101, //67
- 102, //68
- 102, //69
- 102, //70
- 103, //71
- 103, //72
- 103, //73
- 103, //74
- 103, //75
- 103, //76
- 104, //77
- 104, //78
- 104, //79
- 104, //80
- 104, //81
- 104, //82
- 104, //83
- 104, //84
- 104, //85
- 104, //86
- 104, //87
- 105, //88
- 105, //89
- 105, //90
- 105, //91
- 105, //92
- 105, //93
- 105, //94
- 105, //95
- 105, //96
- 105, //97
- 105, //98
- 105, //99
- 105, //100
- 105, //101
- 105, //102
- 105, //103
- 105, //104
- 105, //105
- 105, //106
- 105, //107
- 105, //108
- 105, //109
- 105, //110
- 105, //111
- 105, //112
- 105, //113
- 105, //114
- 105, //115
- 105, //116
- 105, //117
- 105, //118
- 105, //119
- 105, //120
- 105, //121
- 105, //122
- 105, //123
- 105, //124
- 105, //125
- 105, //126
- 105, //127
- }
- }, //RF_CHAN_11
- {
- {
- 0 , //0
- 41 , //1
- 44 , //2
- 46 , //3
- 48 , //4
- 50 , //5
- 52 , //6
- 54 , //7
- 56 , //8
- 57 , //9
- 59 , //10
- 60 , //11
- 61 , //12
- 63 , //13
- 64 , //14
- 65 , //15
- 66 , //16
- 67 , //17
- 69 , //18
- 70 , //19
- 71 , //20
- 72 , //21
- 73 , //22
- 74 , //23
- 75 , //24
- 76 , //25
- 77 , //26
- 77 , //27
- 78 , //28
- 79 , //29
- 80 , //30
- 80 , //31
- 81 , //32
- 82 , //33
- 83 , //34
- 83 , //35
- 84 , //36
- 85 , //37
- 86 , //38
- 86 , //39
- 87 , //40
- 88 , //41
- 88 , //42
- 89 , //43
- 90 , //44
- 90 , //45
- 91 , //46
- 92 , //47
- 92 , //48
- 93 , //49
- 93 , //50
- 94 , //51
- 94 , //52
- 95 , //53
- 95 , //54
- 96 , //55
- 96 , //56
- 96 , //57
- 97 , //58
- 97 , //59
- 98 , //60
- 98 , //61
- 99 , //62
- 99 , //63
- 99 , //64
- 100, //65
- 100, //66
- 100, //67
- 101, //68
- 101, //69
- 101, //70
- 102, //71
- 102, //72
- 102, //73
- 103, //74
- 103, //75
- 103, //76
- 103, //77
- 103, //78
- 103, //79
- 103, //80
- 104, //81
- 104, //82
- 104, //83
- 104, //84
- 104, //85
- 104, //86
- 104, //87
- 104, //88
- 104, //89
- 104, //90
- 104, //91
- 104, //92
- 104, //93
- 105, //94
- 105, //95
- 105, //96
- 105, //97
- 105, //98
- 105, //99
- 105, //100
- 105, //101
- 105, //102
- 105, //103
- 105, //104
- 105, //105
- 105, //106
- 105, //107
- 105, //108
- 105, //109
- 105, //110
- 105, //111
- 105, //112
- 105, //113
- 105, //114
- 105, //115
- 105, //116
- 105, //117
- 105, //118
- 105, //119
- 105, //120
- 105, //121
- 105, //122
- 105, //123
- 105, //124
- 105, //125
- 105, //126
- 105, //127
- 105,
- }
- }, //RF_CHAN_12
- {
- {
- 0 , //0
- 42 , //1
- 44 , //2
- 46 , //3
- 48 , //4
- 50 , //5
- 52 , //6
- 54 , //7
- 56 , //8
- 58 , //9
- 59 , //10
- 60 , //11
- 61 , //12
- 63 , //13
- 64 , //14
- 65 , //15
- 66 , //16
- 68 , //17
- 69 , //18
- 70 , //19
- 71 , //20
- 72 , //21
- 73 , //22
- 74 , //23
- 75 , //24
- 75 , //25
- 76 , //26
- 77 , //27
- 78 , //28
- 79 , //29
- 80 , //30
- 80 , //31
- 81 , //32
- 82 , //33
- 83 , //34
- 83 , //35
- 84 , //36
- 85 , //37
- 86 , //38
- 86 , //39
- 87 , //40
- 88 , //41
- 89 , //42
- 89 , //43
- 90 , //44
- 91 , //45
- 91 , //46
- 92 , //47
- 93 , //48
- 93 , //49
- 94 , //50
- 94 , //51
- 95 , //52
- 95 , //53
- 96 , //54
- 96 , //55
- 97 , //56
- 97 , //57
- 97 , //58
- 98 , //59
- 98 , //60
- 99 , //61
- 99 , //62
- 100, //63
- 100, //64
- 100, //65
- 101, //66
- 101, //67
- 101, //68
- 102, //69
- 102, //70
- 102, //71
- 103, //72
- 103, //73
- 103, //74
- 103, //75
- 103, //76
- 103, //77
- 104, //78
- 104, //79
- 104, //80
- 104, //81
- 104, //82
- 104, //83
- 104, //84
- 104, //85
- 104, //86
- 104, //87
- 104, //88
- 104, //89
- 105, //90
- 105, //91
- 105, //92
- 105, //93
- 105, //94
- 105, //95
- 105, //96
- 105, //97
- 105, //98
- 105, //99
- 105, //100
- 105, //101
- 105, //102
- 105, //103
- 105, //104
- 105, //105
- 105, //106
- 105, //107
- 105, //108
- 105, //109
- 105, //110
- 105, //111
- 105, //112
- 105, //113
- 105, //114
- 105, //115
- 105, //116
- 105, //117
- 105, //118
- 105, //119
- 105, //120
- 105, //121
- 105, //122
- 105, //123
- 105, //124
- 105, //125
- 105, //126
- 105, //127
- 105,
- }
- }, //RF_CHAN_13
- {
- {
- 0, //0
- 40, //1
- 43, //2
- 45, //3
- 47, //4
- 49, //5
- 50, //6
- 52, //7
- 54, //8
- 56, //9
- 57, //10
- 58, //11
- 59, //12
- 60, //13
- 62, //14
- 63, //15
- 64, //16
- 65, //17
- 66, //18
- 67, //19
- 68, //20
- 69, //21
- 70, //22
- 71, //23
- 72, //24
- 73, //25
- 74, //26
- 74, //27
- 75, //28
- 76, //29
- 77, //30
- 78, //31
- 78, //32
- 79, //33
- 80, //34
- 81, //35
- 82, //36
- 83, //37
- 83, //38
- 84, //39
- 85, //40
- 85, //41
- 86, //42
- 87, //43
- 87, //44
- 88, //45
- 89, //46
- 89, //47
- 90, //48
- 90, //49
- 91, //50
- 91, //51
- 92, //52
- 92, //53
- 93, //54
- 93, //55
- 94, //56
- 94, //57
- 95, //58
- 95, //59
- 96, //60
- 96, //61
- 96, //62
- 97, //63
- 97, //64
- 97, //65
- 98, //66
- 98, //67
- 98, //68
- 98, //69
- 99, //70
- 99, //71
- 99, //72
- 99, //73
- 99, //74
- 99, //75
- 99, //76
- 99, //77
- 99, //78
- 99, //79
- 100, //80
- 100, //81
- 100, //82
- 100, //83
- 100, //84
- 100, //85
- 100, //86
- 100, //87
- 100, //88
- 100, //89
- 100, //90
- 100, //91
- 100, //92
- 100, //93
- 100, //94
- 100, //95
- 100, //96
- 100, //97
- 100, //98
- 100, //99
- 100, //100
- 100, //101
- 100, //102
- 100, //103
- 100, //104
- 100, //105
- 100, //106
- 100, //107
- 100, //108
- 100, //109
- 100, //110
- 100, //111
- 100, //112
- 100, //113
- 100, //114
- 100, //115
- 100, //116
- 100, //117
- 100, //118
- 100, //119
- 100, //120
- 100, //121
- 100, //122
- 100, //123
- 100, //124
- 100, //125
- 100, //126
- 100, //127
- 100,
- }
- }, //RF_CHAN_14
- },
-
- //NV_TABLE_TPC_PDADC_OFFSETS
- {
- 98, // RF_CHAN_1
- 101, // RF_CHAN_2
- 101, // RF_CHAN_3
- 100, // RF_CHAN_4
- 98, // RF_CHAN_5
- 97, // RF_CHAN_6
- 94, // RF_CHAN_7
- 94, // RF_CHAN_8
- 92, // RF_CHAN_9
- 90, // RF_CHAN_10
- 94, // RF_CHAN_11
- 95, // RF_CHAN_12
- 97, // RF_CHAN_13
- 104, // RF_CHAN_14
- 100, // RF_CHAN_240
- 100, // RF_CHAN_244
- 100, // RF_CHAN_248
- 100, // RF_CHAN_252
- 100, // RF_CHAN_208
- 100, // RF_CHAN_212
- 100, // RF_CHAN_216
- 100, // RF_CHAN_36
- 100, // RF_CHAN_40
- 100, // RF_CHAN_44
- 100, // RF_CHAN_48
- 100, // RF_CHAN_52
- 100, // RF_CHAN_56
- 100, // RF_CHAN_60
- 100, // RF_CHAN_64
- 100, // RF_CHAN_100
- 100, // RF_CHAN_104
- 100, // RF_CHAN_108
- 100, // RF_CHAN_112
- 100, // RF_CHAN_116
- 100, // RF_CHAN_120
- 100, // RF_CHAN_124
- 100, // RF_CHAN_128
- 100, // RF_CHAN_132
- 100, // RF_CHAN_136
- 100, // RF_CHAN_140
- 100, // RF_CHAN_149
- 100, // RF_CHAN_153
- 100, // RF_CHAN_157
- 100, // RF_CHAN_161
- 100, // RF_CHAN_165
- //CHANNEL BONDED CHANNELS
- 100, // RF_CHAN_BOND_3
- 100, // RF_CHAN_BOND_4
- 100, // RF_CHAN_BOND_5
- 100, // RF_CHAN_BOND_6
- 100, // RF_CHAN_BOND_7
- 100, // RF_CHAN_BOND_8
- 100, // RF_CHAN_BOND_9
- 100, // RF_CHAN_BOND_10
- 100, // RF_CHAN_BOND_11
- 100, // RF_CHAN_BOND_242
- 100, // RF_CHAN_BOND_246
- 100, // RF_CHAN_BOND_250
- 100, // RF_CHAN_BOND_210
- 100, // RF_CHAN_BOND_214
- 100, // RF_CHAN_BOND_38
- 100, // RF_CHAN_BOND_42
- 100, // RF_CHAN_BOND_46
- 100, // RF_CHAN_BOND_50
- 100, // RF_CHAN_BOND_54
- 100, // RF_CHAN_BOND_58
- 100, // RF_CHAN_BOND_62
- 100, // RF_CHAN_BOND_102
- 100, // RF_CHAN_BOND_106
- 100, // RF_CHAN_BOND_110
- 100, // RF_CHAN_BOND_114
- 100, // RF_CHAN_BOND_118
- 100, // RF_CHAN_BOND_122
- 100, // RF_CHAN_BOND_126
- 100, // RF_CHAN_BOND_130
- 100, // RF_CHAN_BOND_134
- 100, // RF_CHAN_BOND_138
- 100, // RF_CHAN_BOND_151
- 100, // RF_CHAN_BOND_155
- 100, // RF_CHAN_BOND_159
- 100, // RF_CHAN_BOND_163
- },
-
- //NV_TABLE_VIRTUAL_RATE
- // typedef tANI_S16 tPowerdBm;
- //typedef tPowerdBm tRateGroupPwr[NUM_HAL_PHY_RATES];
- //tRateGroupPwr pwrOptimum[NUM_RF_SUBBANDS];
- {
- // 2.4G RF Subband
- {
- //802.11b Rates
- {100}, // HAL_PHY_VRATE_11A_54_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- },
- // 5G Low RF Subband
- {
- //802.11b Rates
- {100}, // HAL_PHY_VRATE_11A_54_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- },
- // 5G Middle RF Subband
- {
- //802.11b Rates
- {100}, // HAL_PHY_VRATE_11A_54_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- },
- // 5G High RF Subband
- {
- //802.11b Rates
- {100}, // HAL_PHY_VRATE_11A_54_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- },
- // 4.9G RF Subband
- {
- //802.11b Rates
- {100}, // HAL_PHY_VRATE_11A_54_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_65_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_72_2_MBPS,
- {100}, // HAL_PHY_VRATE_MCS_1NSS_CB_135_MBPS
- {100}, // HAL_PHY_VRATE_MCS_1NSS_MM_SG_CB_150_MBPS,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- {100}, // RESERVED,
- }
- },
-
-#if 0 //FIXME_PRIMA
- //NV_TABLE_CAL_MEMORY
- {
- 0x7FFF, // tANI_U16 process_monitor;
- 0x00, // tANI_U8 hdet_cal_code;
- 0x00, // tANI_U8 rxfe_gm_2;
-
- 0x00, // tANI_U8 tx_bbf_rtune;
- 0x00, // tANI_U8 pa_rtune_reg;
- 0x00, // tANI_U8 rt_code;
- 0x00, // tANI_U8 bias_rtune;
-
- 0x00, // tANI_U8 bb_bw1;
- 0x00, // tANI_U8 bb_bw2;
- { 0x00, 0x00 }, // tANI_U8 reserved[2];
-
- 0x00, // tANI_U8 bb_bw3;
- 0x00, // tANI_U8 bb_bw4;
- 0x00, // tANI_U8 bb_bw5;
- 0x00, // tANI_U8 bb_bw6;
-
- 0x7FFF, // tANI_U16 rcMeasured;
- 0x00, // tANI_U8 tx_bbf_ct;
- 0x00, // tANI_U8 tx_bbf_ctr;
-
- 0x00, // tANI_U8 csh_maxgain_reg;
- 0x00, // tANI_U8 csh_0db_reg;
- 0x00, // tANI_U8 csh_m3db_reg;
- 0x00, // tANI_U8 csh_m6db_reg;
-
- 0x00, // tANI_U8 cff_0db_reg;
- 0x00, // tANI_U8 cff_m3db_reg;
- 0x00, // tANI_U8 cff_m6db_reg;
- 0x00, // tANI_U8 rxfe_gpio_ctl_1;
-
- 0x00, // tANI_U8 mix_bal_cnt_2;
- 0x00, // tANI_S8 rxfe_lna_highgain_bias_ctl_delta;
- 0x00, // tANI_U8 rxfe_lna_load_ctune;
- 0x00, // tANI_U8 rxfe_lna_ngm_rtune;
-
- 0x00, // tANI_U8 rx_im2_i_cfg0;
- 0x00, // tANI_U8 rx_im2_i_cfg1;
- 0x00, // tANI_U8 rx_im2_q_cfg0;
- 0x00, // tANI_U8 rx_im2_q_cfg1;
-
- 0x00, // tANI_U8 pll_vfc_reg3_b0;
- 0x00, // tANI_U8 pll_vfc_reg3_b1;
- 0x00, // tANI_U8 pll_vfc_reg3_b2;
- 0x00, // tANI_U8 pll_vfc_reg3_b3;
-
- 0x7FFF, // tANI_U16 tempStart;
- 0x7FFF, // tANI_U16 tempFinish;
-
- { //txLoCorrections
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_1
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_2
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_3
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_4
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_5
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_6
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_7
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_8
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_9
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_10
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_11
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_12
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- }, //RF_CHAN_13
- {
- { 0x00, 0x00 }, // TX_GAIN_STEP_0
- { 0x00, 0x00 }, // TX_GAIN_STEP_1
- { 0x00, 0x00 }, // TX_GAIN_STEP_2
- { 0x00, 0x00 }, // TX_GAIN_STEP_3
- { 0x00, 0x00 }, // TX_GAIN_STEP_4
- { 0x00, 0x00 }, // TX_GAIN_STEP_5
- { 0x00, 0x00 }, // TX_GAIN_STEP_6
- { 0x00, 0x00 }, // TX_GAIN_STEP_7
- { 0x00, 0x00 }, // TX_GAIN_STEP_8
- { 0x00, 0x00 }, // TX_GAIN_STEP_9
- { 0x00, 0x00 }, // TX_GAIN_STEP_10
- { 0x00, 0x00 }, // TX_GAIN_STEP_11
- { 0x00, 0x00 }, // TX_GAIN_STEP_12
- { 0x00, 0x00 }, // TX_GAIN_STEP_13
- { 0x00, 0x00 }, // TX_GAIN_STEP_14
- { 0x00, 0x00 } // TX_GAIN_STEP_15
- } //RF_CHAN_14
- }, // tTxLoCorrections txLoValues;
-
- { //sTxIQChannel
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_1
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_2
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_3
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_4
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_5
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_6
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_7
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_8
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_9
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_10
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_11
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_12
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- }, //RF_CHAN_13
- {
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // TX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // TX_GAIN_STEP_15
- } //RF_CHAN_14
- }, // sTxIQChannel txIqValues;
-
- { //sRxIQChannel
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_1
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_2
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_3
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_4
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_5
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_6
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_7
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_8
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_9
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_10
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_11
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_12
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- }, //RF_CHAN_13
- {
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_0
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_1
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_2
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_3
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_4
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_5
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_6
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_7
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_8
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_9
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_10
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_11
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_12
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_13
- { 0x0000, 0x0000, 0x0000 }, // RX_GAIN_STEP_14
- { 0x0000, 0x0000, 0x0000 } // RX_GAIN_STEP_15
- } //RF_CHAN_14
- }, // sRxIQChannel rxIqValues;
-
- { // tTpcConfig clpcData[MAX_TPC_CHANNELS]
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_1
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_2
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_3
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_4
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_5
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_6
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_7
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_8
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_9
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_10
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_11
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_12
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- }, // RF_CHAN_13
- {
- {
- {
- { 0x00, 0x00 }, //CAL_POINT_0
- { 0x00, 0x00 }, //CAL_POINT_1
- { 0x00, 0x00 }, //CAL_POINT_2
- { 0x00, 0x00 }, //CAL_POINT_3
- { 0x00, 0x00 }, //CAL_POINT_4
- { 0x00, 0x00 }, //CAL_POINT_5
- { 0x00, 0x00 }, //CAL_POINT_6
- { 0x00, 0x00 } //CAL_POINT_7
- } // PHY_TX_CHAIN_0
- } // empirical
- } // RF_CHAN_14
- }, // tTpcConfig clpcData[MAX_TPC_CHANNELS];
-
- {
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_1: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_2: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_3: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_4: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_5: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_6: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_7: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_8: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_9: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_10: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_11: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_12: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } }, // RF_CHAN_13: pdadc_offset, reserved[2]
- { 0x0000, { 0x00, 0x00 } } // RF_CHAN_14: pdadc_offset, reserved[2]
- } // tTpcParams clpcParams[MAX_TPC_CHANNELS];
-
- }, //NV_TABLE_CAL_MEMORY
-#endif
- //NV_TABLE_FW_CONFIG
- {
- 0, //skuID
- 0, //tpcMode2G
- 0, //tpcMode5G
- 0, //reserved1
-
- 0, //xPA2G
- 0, //xPA5G;
- 0, //paPolarityTx;
- 0, //paPolarityRx;
-
- 0, //xLNA2G;
- 0, //xLNA5G;
- 0, //xCoupler2G;
- 0, //xCoupler5G;
-
- 0, //xPdet2G;
- 0, //xPdet5G;
- 0, //enableDPD2G;
- 1, //enableDPD5G;
-
- 1, //pdadcSelect2G;
- 1, //pdadcSelect5GLow;
- 1, //pdadcSelect5GMid;
- 1, //pdadcSelect5GHigh;
-
- 0, //reserved2
- 0, //reserved3
- 0, //reserved4
- },
-
-
- //NV_TABLE_RSSI_CHANNEL_OFFSETS
- {
- //PHY_RX_CHAIN_0
- {
- //bRssiOffset
- {300}, // apply to all channles
-
- //gnRssiOffset
- {300} // apply to all channles
- },
- //rsvd
- {
- //bRssiOffset
- {0}, // apply to all channles
-
- //gnRssiOffset
- {0} // apply to all channles
- }
- },
-
- //NV_TABLE_HW_CAL_VALUES
- {
- 0x0, //validBmap
- {
- 1400, //psSlpTimeOvrHd2G;
- 1400, //psSlpTimeOvrHd5G;
-
- 1600, //psSlpTimeOvrHdxLNA5G;
- 0, //nv_TxBBFSel9MHz
- 0, //hwParam1
- 0, //hwParam2
-
- 0x1B, //custom_tcxo_reg8
- 0xFF, //custom_tcxo_reg9
-
- 0, //hwParam3;
- 0, //hwParam4;
- 0, //hwParam5;
- 0, //hwParam6;
- 0, //hwParam7;
- 0, //hwParam8;
- 0, //hwParam9;
- 0, //hwParam10;
- 0, //hwParam11;
- }
- },
-
-
- //NV_TABLE_ANTENNA_PATH_LOSS
- {
- 280, // RF_CHAN_1
- 270, // RF_CHAN_2
- 270, // RF_CHAN_3
- 270, // RF_CHAN_4
- 270, // RF_CHAN_5
- 270, // RF_CHAN_6
- 280, // RF_CHAN_7
- 280, // RF_CHAN_8
- 290, // RF_CHAN_9
- 300, // RF_CHAN_10
- 300, // RF_CHAN_11
- 310, // RF_CHAN_12
- 310, // RF_CHAN_13
- 310, // RF_CHAN_14
- 280, // RF_CHAN_240
- 280, // RF_CHAN_244
- 280, // RF_CHAN_248
- 280, // RF_CHAN_252
- 280, // RF_CHAN_208
- 280, // RF_CHAN_212
- 280, // RF_CHAN_216
- 280, // RF_CHAN_36
- 280, // RF_CHAN_40
- 280, // RF_CHAN_44
- 280, // RF_CHAN_48
- 280, // RF_CHAN_52
- 280, // RF_CHAN_56
- 280, // RF_CHAN_60
- 280, // RF_CHAN_64
- 280, // RF_CHAN_100
- 280, // RF_CHAN_104
- 280, // RF_CHAN_108
- 280, // RF_CHAN_112
- 280, // RF_CHAN_116
- 280, // RF_CHAN_120
- 280, // RF_CHAN_124
- 280, // RF_CHAN_128
- 280, // RF_CHAN_132
- 280, // RF_CHAN_136
- 280, // RF_CHAN_140
- 280, // RF_CHAN_149
- 280, // RF_CHAN_153
- 280, // RF_CHAN_157
- 280, // RF_CHAN_161
- 280, // RF_CHAN_165
- //CHANNEL BONDED CHANNELS
- 280, // RF_CHAN_BOND_3
- 280, // RF_CHAN_BOND_4
- 280, // RF_CHAN_BOND_5
- 280, // RF_CHAN_BOND_6
- 280, // RF_CHAN_BOND_7
- 280, // RF_CHAN_BOND_8
- 280, // RF_CHAN_BOND_9
- 280, // RF_CHAN_BOND_10
- 280, // RF_CHAN_BOND_11
- 280, // RF_CHAN_BOND_242
- 280, // RF_CHAN_BOND_246
- 280, // RF_CHAN_BOND_250
- 280, // RF_CHAN_BOND_210
- 280, // RF_CHAN_BOND_214
- 280, // RF_CHAN_BOND_38
- 280, // RF_CHAN_BOND_42
- 280, // RF_CHAN_BOND_46
- 280, // RF_CHAN_BOND_50
- 280, // RF_CHAN_BOND_54
- 280, // RF_CHAN_BOND_58
- 280, // RF_CHAN_BOND_62
- 280, // RF_CHAN_BOND_102
- 280, // RF_CHAN_BOND_106
- 280, // RF_CHAN_BOND_110
- 280, // RF_CHAN_BOND_114
- 280, // RF_CHAN_BOND_118
- 280, // RF_CHAN_BOND_122
- 280, // RF_CHAN_BOND_126
- 280, // RF_CHAN_BOND_130
- 280, // RF_CHAN_BOND_134
- 280, // RF_CHAN_BOND_138
- 280, // RF_CHAN_BOND_151
- 280, // RF_CHAN_BOND_155
- 280, // RF_CHAN_BOND_159
- 280, // RF_CHAN_BOND_163
- },
-
- //NV_TABLE_PACKET_TYPE_POWER_LIMITS
- {
- { 2150 }, // applied to all channels, MODE_802_11B
- { 1850 }, // applied to all channels,MODE_802_11AG
- { 1750 } // applied to all channels,MODE_802_11N
- },
-
- //NV_TABLE_OFDM_CMD_PWR_OFFSET
- {
- 0, 0
- },
-
- //NV_TABLE_TX_BB_FILTER_MODE
- {
- 0
- }
-
- } // tables
-};
-
-#endif
diff --git a/Kbuild b/Kbuild
index 43d2486c0641..790525531cf0 100644
--- a/Kbuild
+++ b/Kbuild
@@ -643,10 +643,7 @@ VOSS_OBJS := $(VOSS_SRC_DIR)/vos_api.o \
$(VOSS_SRC_DIR)/vos_timer.o \
$(VOSS_SRC_DIR)/vos_trace.o \
$(VOSS_SRC_DIR)/vos_types.o \
- $(VOSS_SRC_DIR)/vos_utils.o \
- $(VOSS_SRC_DIR)/wlan_nv_parser.o \
- $(VOSS_SRC_DIR)/wlan_nv_stream_read.o \
- $(VOSS_SRC_DIR)/wlan_nv_template_builtin.o
+ $(VOSS_SRC_DIR)/vos_utils.o
ifeq ($(BUILD_DIAG_VERSION),1)
VOSS_OBJS += $(VOSS_SRC_DIR)/vos_diag.o
@@ -780,7 +777,9 @@ WMA_DIR := CORE/SERVICES/WMA
WMA_INC := -I$(WLAN_ROOT)/$(WMA_DIR)
WMA_OBJS := $(WMA_DIR)/wma.o \
- $(WMA_DIR)/wma_dfs_interface.o
+ $(WMA_DIR)/wma_dfs_interface.o \
+ $(WMA_DIR)/wlan_nv.o
+
ifeq ($(CONFIG_QCA_WIFI_ISOC), 1)
WMA_OBJS += $(WMA_DIR)/wma_isoc.o
@@ -799,8 +798,7 @@ WDA_INC := -I$(WLAN_ROOT)/$(WDA_INC_DIR) \
-I$(WLAN_ROOT)/$(WDA_SRC_DIR)
WDA_OBJS := $(WDA_SRC_DIR)/wlan_qct_wda_debug.o \
- $(WDA_SRC_DIR)/wlan_qct_wda_legacy.o \
- $(WDA_SRC_DIR)/wlan_nv.o
+ $(WDA_SRC_DIR)/wlan_qct_wda_legacy.o
############ WDI ############
WDI_DIR := CORE/WDI
diff --git a/firmware_bin/WCNSS_qcom_wlan_nv.bin b/firmware_bin/WCNSS_qcom_wlan_nv.bin
deleted file mode 100644
index 9ecfc087d029..000000000000
--- a/firmware_bin/WCNSS_qcom_wlan_nv.bin
+++ /dev/null
Binary files differ
diff --git a/wcnss/inc/pttFrameGen.h b/wcnss/inc/pttFrameGen.h
deleted file mode 100644
index 0d57ab681270..000000000000
--- a/wcnss/inc/pttFrameGen.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 2014 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/** ------------------------------------------------------------------------- *
- ------------------------------------------------------------------------- *
-
-
- \file pttFrameGen.h
-
- \brief Definitions for PTT frame generation
-
- $Id$========================================================================== */
-
-#ifndef PTTFRAMEGEN_H
-#define PTTFRAMEGEN_H
-
-
-//#define MAX_PKT_GEN_BUF_ENTRY (HAL_HIF_MAX_TX_RING_ENTRY >> 1)
-
-
-
-#define MAX_PAYLOAD_SIZE 2400
-#define MAX_TX_PAYLOAD_SIZE 4096
-
-typedef enum {
- TEST_PAYLOAD_NONE,
- TEST_PAYLOAD_FILL_BYTE,
- TEST_PAYLOAD_RANDOM,
- TEST_PAYLOAD_RAMP,
- TEST_PAYLOAD_TEMPLATE,
- TEST_PAYLOAD_MAX = 0X3FFFFFFF, //dummy value to set enum to 4 bytes
-} ePayloadContents;
-
-
-#define MAC_ADDR_SIZE ( 6 )
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 numTestPackets;
- tANI_U32 interFrameSpace;
- eHalPhyRates rate;
- ePayloadContents payloadContents;
- tANI_U16 payloadLength;
- tANI_U8 payloadFillByte;
- tANI_BOOLEAN pktAutoSeqNum; //seq num setting (hw or not) for packet gen
-
- tANI_U8 addr1[MAC_ADDR_SIZE];
- tANI_U8 addr2[MAC_ADDR_SIZE];
- tANI_U8 addr3[MAC_ADDR_SIZE];
- tANI_U8 tx_mode;
- tANI_BOOLEAN crc; //0 = no FCS calculated = power detector works = receive won't work?,
- //1 = crc calculated = receive works, but power detector workaround doesn't
-
- ePhyDbgPreamble preamble;
-} sPttFrameGenParams;
-
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 legacy; //11g OFDM preamble
- tANI_U32 gfSimo20; //greenfield preamble
- tANI_U32 mmSimo20; //mixed mode preamble
- tANI_U32 gfSimo40; //greenfield preamble
- tANI_U32 mmSimo40; //mixed mode preamble
- tANI_U32 txbShort; //11b short
- tANI_U32 txbLong; //11b long
- tANI_U32 acSimo204080; //11ac SIMO 20,40,80
- tANI_U32 total;
-} sTxFrameCounters;
-
-#endif
diff --git a/wcnss/inc/pttModule.h b/wcnss/inc/pttModule.h
deleted file mode 100644
index 963d44171e40..000000000000
--- a/wcnss/inc/pttModule.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 2014 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/**
- pttModule.h: global variable structure for pttModule
- Author: Mark Nelson
- Date: 6/27/05
-
- History -
- Date Modified by Modification Information
- --------------------------------------------------------------------------
-
- */
-
-#ifndef PTTMODULE_H
-#define PTTMODULE_H
-#include <wlan_phy.h>
-#include <pttFrameGen.h>
-
-#ifdef BUILD_QWPTTSTATIC
-#include "wlan_hal_msg.h" // it is needed to build qwptt static lib
-#endif
-
-// Max NV fragment size
-#define MAX_NV_BIN_SIZE 2000
-
-enum
-{
- PTT_STATUS_SUCCESS = 0,
- PTT_STATUS_FAILURE = 1,
- PTT_MAX_VAL = 0XFFFF,
-};
-typedef tANI_U32 eQWPttStatus;
-
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U16 drvMjr;
- tANI_U16 drvMnr;
- tANI_U16 drvPtch;
- tANI_U16 drvBld;
- tANI_U16 pttMax;
- tANI_U16 pttMin;
- //FwVersionInfo fwVer;
-} sBuildReleaseParams;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_BOOLEAN agPktsDisabled; //802.11ag
- tANI_BOOLEAN bPktsDisabled; //802.11b
- tANI_BOOLEAN slrPktsDisabled; //deprecated in Riva
- tANI_BOOLEAN n40PktsDisabled; //11N 40
- tANI_BOOLEAN ac80PktsDisabled; //11AC 80
- tANI_BOOLEAN rsvd;
-} sRxTypesDisabled;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 totalRxPackets;
- tANI_U32 totalMacRxPackets;
- tANI_U32 totalMacFcsErrPackets;
-} sRxFrameCounters;
-
-
-
-
-/* GRAB RAM types */
-//TODO: Change Grab RAM interface as appropriate to Taurus
-typedef enum {
- GRAB_RAM_RXFIR,
- GRAB_RAM_ADC,
- GRAB_RAM_ADC_80,
- GRAB_RAM_MAX_VAL = 0XFFFF,
-} eGrabRamType;
-
-#define GRAB_RAM_SIZE 6000
-#define GRAB_RAM_SIZE_80MHZ_1_CHAIN 12000
-
-
-
-/// Enum used to specify the trigger type for the aniGrabRam API
-typedef enum eGramDumpTrigType {
- eGRAM_DUMP_UNTRIGGERED,
- eGRAM_DUMP_TRIG_ON_11A,
- eGRAM_DUMP_TRIG_ON_11B,
- eGRAM_DUMP_TRIG_ON_11A_OR_11B
-} tGramDumpTrigType;
-
-typedef PACKED_PRE struct PACKED_POST {
- //common to both transmit chains
- eHalPhyRates rate; //current rate
- ePhyChanBondState cbState; //current Channel bonded state
-
- tANI_U8 channelId; //current channel Id
- tANI_U8 pwrTemplateIndex; //5-bit template index used for the current rate
- tANI_U8 reserved[2];
-
- //specific transmit chain power
- tTxChainPower txChains[PHY_MAX_TX_CHAINS]; //output power for Tx chains
-} tTxPowerReport;
-
-#define RXP_MAX_FILTER_IDX 64
-
-typedef PACKED_PRE struct PACKED_POST
-{
- uint32 rxpFilterForFTMPER[RXP_MAX_FILTER_IDX];
- uint32 max_pktlen;
- uint32 flt_disable0;
- uint32 flt_disable1;
- uint32 config2;
- uint32 push_wq_ctrl;
- uint32 push_wq_ctrl2;
- uint32 extra_frame_flt;
-} sMACConfig;
-
-
-typedef PACKED_PRE struct PACKED_POST {
- /*
- * The idea here is to store only those things which cannot be
- * handled directly within the individual function calls.
- * Most things will go straight to registers or come from registers.
- */
- sPttFrameGenParams frameGenParams;
- tANI_U8 payload[MAX_PAYLOAD_SIZE];
-
- //Tx Waveform Gen Service
- tANI_U16 numWfmSamples;
- tANI_BOOLEAN wfmEnabled;
- tANI_BOOLEAN wfmStored;
-
- //Tx Frame Power Service
- tTxGain forcedTxGain[PHY_MAX_TX_CHAINS]; //use TXPWR_OVERRIDE for wfm, and fill gain table otherwise
- tANI_U8 tpcPowerLut[PHY_MAX_TX_CHAINS][TPC_MEM_POWER_LUT_DEPTH];
- tTxGain tpcGainLut[PHY_MAX_TX_CHAINS][TPC_MEM_GAIN_LUT_DEPTH];
-
- //Tx Frame Gen Service
- tANI_BOOLEAN frameGenEnabled;
- tANI_BOOLEAN phyDbgFrameGen; //this says use phyDbg for frames - leave this in place until we know that PhyDbg will suffice
-
- // for FTM PER feature
- tANI_U8 tx_mode;
-
- tANI_BOOLEAN ftm_per_settings_saved;
-
- //Rx Gain Service
- sRxChainsAgcEnable agcEnables;
-
- tANI_U32 *pADCCaptureCache; //pointer to allocate ADC capture cache
-
- //TX_TIMER adcRssiStatsTimer; //Create adc rssi stat collection timer
-
- sRxChainsRssi rssi;
-} tPttModuleVariables;
-
-#ifdef WCN_PRONTO
-extern sMACConfig macConfig;
-#endif
-
-#endif /* PTTMODULE_H */
diff --git a/wcnss/inc/pttMsgApi.h b/wcnss/inc/pttMsgApi.h
deleted file mode 100644
index 71b3288594cf..000000000000
--- a/wcnss/inc/pttMsgApi.h
+++ /dev/null
@@ -1,962 +0,0 @@
-/*
- * Copyright (c) 2012 The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * This file was originally distributed by Qualcomm Atheros, Inc.
- * under proprietary terms before Copyright ownership was assigned
- * to the Linux Foundation.
- */
-
-/**
- pttMsgApi.h: Contains messages to PTT Module for physical layer testing
- Author: Mark Nelson
- Date: 6/21/05
-
- History -
- Date Modified by Modification Information
- --------------------------------------------------------------------------
-
- */
-
-#ifndef PTT_MSG_API_H
-#define PTT_MSG_API_H
-
-#include "halCompiler.h"
-#include "wlan_nv.h"
-#include "wlan_phy.h"
-#include "pttFrameGen.h"
-#include "pttModule.h"
-
-#include "halLegacyPalTypes.h"
-
-typedef tANI_U8 tQWPTT_U8;
-typedef tANI_S8 tQWPTT_S8;
-
-typedef tANI_U16 tQWPTT_U16;
-typedef tANI_S16 tQWPTT_S16;
-
-typedef tANI_U32 tQWPTT_U32;
-typedef tANI_S32 tQWPTT_S32;
-
-typedef tANI_U8 tQWPTT_BYTE;
-typedef tANI_S9 tQWPTT_S9;
-
-typedef tANI_U8 tQWPTT_BOOLEAN;
-
-#define PTT_MEM_ACCESS_MAX_SIZE 256
-
-//Messages to/from socket or pttApi.c
-typedef enum {
- PTT_MSG_TYPES_BEGIN = 0x3000,
-
- // Init
- PTT_MSG_INIT = PTT_MSG_TYPES_BEGIN, //extra: internal only
-
-//NV Service
- PTT_MSG_GET_TPC_CAL_STATE_OBSOLETE = 0x3011,
- PTT_MSG_RESET_TPC_CAL_STATE_OBSOLETE = 0x3012,
-
- PTT_MSG_SET_NV_CKSUM_OBSOLETE = 0x3013,
- PTT_MSG_GET_NV_CKSUM_OBSOLETE = 0x3014,
- PTT_MSG_GET_NV_TABLE = 0x3016,
- PTT_MSG_SET_NV_TABLE = 0x3017,
- PTT_MSG_SET_NV_IMAGE_OBSOLETE = 0x3018,
- PTT_MSG_BLANK_NV = 0x3019,
- PTT_MSG_GET_NV_IMAGE_OBSOLETE = 0x301E,
- PTT_MSG_DEL_NV_TABLE = 0x301F,
- PTT_MSG_GET_NV_FIELD = 0x3020,
- PTT_MSG_SET_NV_FIELD = 0x3021,
- PTT_MSG_STORE_NV_TABLE = 0x3022,
- PTT_MSG_SET_REG_DOMAIN = 0x3023,
-
-//new NV format Service
- PTT_MSG_GET_NV_BIN = 0x3030,
- PTT_MSG_SET_NV_BIN = 0x3031,
- PTT_MSG_GET_DICTIONARY = 0x3032,
-
-//Device Register Access
- PTT_MSG_DBG_READ_REGISTER = 0x3040,
- PTT_MSG_DBG_WRITE_REGISTER = 0x3041,
- PTT_MSG_API_WRITE_REGISTER_OBSOLETE = 0x3042,
- PTT_MSG_API_READ_REGISTER_OBSOLETE = 0x3043,
- PTT_MSG_DBG_READ_MEMORY = 0x3044,
- PTT_MSG_DBG_WRITE_MEMORY = 0x3045,
-
-//Device MAC Test Setup
- PTT_MSG_ENABLE_CHAINS = 0x304F,
- PTT_MSG_SET_CHANNEL = 0x3050,
-
-//Tx Waveform Gen Service
- PTT_MSG_SET_WAVEFORM = 0x3071,
- PTT_MSG_SET_TX_WAVEFORM_GAIN = 0x3072,
- PTT_MSG_GET_WAVEFORM_POWER_ADC = 0x3073,
- PTT_MSG_START_WAVEFORM = 0x3074,
- PTT_MSG_STOP_WAVEFORM = 0x3075,
- PTT_MSG_SET_RX_WAVEFORM_GAIN = 0x3076,
- PTT_MSG_SET_TX_WAVEFORM_GAIN_PRIMA_V1 = 0x3077,
-
-//Tx Frame Gen Service
- PTT_MSG_CONFIG_TX_PACKET_GEN = 0x3081,
- PTT_MSG_START_STOP_TX_PACKET_GEN = 0x3082,
- PTT_MSG_POLL_TX_PACKET_PROGRESS_OBSOLETE = 0x3083,
- PTT_MSG_FRAME_GEN_STOP_IND_OBSOLETE = 0x3088,
- PTT_MSG_QUERY_TX_STATUS = 0x3089,
-
-
-//Tx Frame Power Service
- PTT_MSG_CLOSE_TPC_LOOP = 0x30A0,
-
-//open loop service
- PTT_MSG_SET_PACKET_TX_GAIN_TABLE = 0x30A1,
- PTT_MSG_SET_PACKET_TX_GAIN_INDEX = 0x30A2,
- PTT_MSG_FORCE_PACKET_TX_GAIN = 0x30A3,
-
-//closed loop(CLPC) service
- PTT_MSG_SET_PWR_INDEX_SOURCE = 0x30A4,
- PTT_MSG_SET_TX_POWER = 0x30A5,
- PTT_MSG_GET_TX_POWER_REPORT = 0x30A7,
- PTT_MSG_SAVE_TX_PWR_CAL_TABLE_OBSOLETE = 0x30A8,
- PTT_MSG_SET_POWER_LUT = 0x30A9,
- PTT_MSG_GET_POWER_LUT = 0x30AA,
- PTT_MSG_GET_PACKET_TX_GAIN_TABLE = 0x30AB,
- PTT_MSG_SAVE_TX_PWR_FREQ_TABLE_OBSOLETE = 0x30AC,
- PTT_MSG_CLPC_TEMP_COMPENSATION_OBSOLETE = 0x30AD,
-
-//Rx Gain Service
- PTT_MSG_DISABLE_AGC_TABLES = 0x30D0,
- PTT_MSG_ENABLE_AGC_TABLES = 0x30D1,
- PTT_MSG_SET_AGC_TABLES_OBSOLETE = 0x30D2,
- PTT_MSG_GET_RX_RSSI = 0x30D3,
- PTT_MSG_GET_AGC_TABLE_OBSOLETE = 0x30D5,
-
-//Rx Frame Catcher Service
- PTT_MSG_SET_RX_DISABLE_MODE = 0x30D4,
- PTT_MSG_GET_RX_PKT_COUNTS = 0x30E0,
- PTT_MSG_RESET_RX_PACKET_STATISTICS = 0x30E2,
- PTT_MSG_GET_UNI_CAST_MAC_PKT_RX_RSSI = 0x30E3,
- PTT_MSG_GET_UNI_CAST_MAC_PKT_RX_RSSI_CONFIG = 0x30E4,
-
-//Rx Symbol Service
- PTT_MSG_GRAB_RAM = 0x30F0,
- PTT_MSG_GRAB_RAM_ONE_CHAIN_OBSOLETE = 0x30F1,
-
-//Phy Calibration Service
- PTT_MSG_RX_IQ_CAL = 0x3100,
- PTT_MSG_RX_DCO_CAL = 0x3101,
- PTT_MSG_TX_CARRIER_SUPPRESS_CAL = 0x3102,
- PTT_MSG_TX_IQ_CAL = 0x3103,
- PTT_MSG_EXECUTE_INITIAL_CALS = 0x3104,
- PTT_MSG_HDET_CAL = 0x3105,
- PTT_MSG_VCO_LINEARITY_CAL_OBSOLETE = 0x3106,
-
-//Phy Calibration Override Service
- PTT_MSG_SET_TX_CARRIER_SUPPRESS_CORRECT = 0x3110,
- PTT_MSG_GET_TX_CARRIER_SUPPRESS_CORRECT = 0x3111,
- PTT_MSG_SET_TX_IQ_CORRECT = 0x3112,
- PTT_MSG_GET_TX_IQ_CORRECT = 0x3113,
- PTT_MSG_SET_RX_IQ_CORRECT = 0x3114,
- PTT_MSG_GET_RX_IQ_CORRECT = 0x3115,
- PTT_MSG_SET_RX_DCO_CORRECT = 0x3116,
- PTT_MSG_GET_RX_DCO_CORRECT = 0x3117,
- PTT_MSG_SET_TX_IQ_PHASE_NV_TABLE_OBSOLETE = 0x3118,
- PTT_MSG_GET_HDET_CORRECT_OBSOLETE = 0x3119,
-
-//RF Chip Access
- PTT_MSG_GET_TEMP_ADC = 0x3202,
- PTT_MSG_READ_RF_REG = 0x3203,
- PTT_MSG_WRITE_RF_REG = 0x3204,
- PTT_MSG_GET_RF_VERSION = 0x3205,
-
-//Deep sleep support
- PTT_MSG_DEEP_SLEEP = 0x3220,
- PTT_MSG_READ_SIF_BAR4_REGISTER = 0x3221,
- PTT_MSG_WRITE_SIF_BAR4_REGISTER = 0x3222,
- PTT_MSG_ENTER_FULL_POWER = 0x3223,
-
-//Misc
- PTT_MSG_SYSTEM_RESET = 0x32A0, //is there any meaning for this in Gen6?
- PTT_MSG_LOG_DUMP = 0x32A1,
- PTT_MSG_GET_BUILD_RELEASE_NUMBER = 0x32A2,
-
-
-//Messages for Socket App
- PTT_MSG_ADAPTER_DISABLED_RSP_OBSOLETE = 0x32A3,
- PTT_MSG_ENABLE_ADAPTER = 0x32A4,
- PTT_MSG_DISABLE_ADAPTER = 0x32A5,
- PTT_MSG_PAUSE_RSP_OBSOLETE = 0x32A6,
- PTT_MSG_CONTINUE_RSP_OBSOLETE = 0x32A7,
-
- PTT_MSG_HALPHY_INIT = 0x32A8,
- PTT_MSG_TEST_RXIQ_CAL = 0x32A9,
- PTT_MSG_START_TONE_GEN = 0x32AA,
- PTT_MSG_STOP_TONE_GEN = 0x32AB,
- PTT_MSG_RX_IM2_CAL = 0x32AC,
- PTT_MSG_SET_RX_IM2_CORRECT = 0x31AD,
- PTT_MSG_GET_RX_IM2_CORRECT = 0x31AE,
- PTT_MSG_TEST_DPD_CAL = 0x32AF, // not handle
- PTT_MSG_SET_CALCONTROL_BITMAP = 0x32B0,
-
-//[RY] specific new messages for PRIMA
- PTT_MSG_START_WAVEFORM_RF = 0x32B1,
- PTT_MSG_STOP_WAVEFORM_RF = 0x32B2,
- PTT_MSG_HKDAC_TX_IQ_CAL = 0x32B3,
- PTT_MSG_SET_HKADC_TX_IQ_CORRECT = 0x32B4,
- PTT_MSG_GET_HKADC_TX_IQ_CORRECT = 0x32B5,
- PTT_MSG_SET_DPD_CORRECT = 0x32B6,
- PTT_MSG_GET_DPD_CORRECT = 0x32B7,
- PTT_MSG_SET_WAVEFORM_RF = 0x32B8,
- PTT_MSG_LNA_BAND_CAL = 0x32B9,
- PTT_MSG_GET_LNA_BAND_CORRECT = 0x32BA,
- PTT_MSG_SET_LNA_BAND_CORRECT = 0x32BB,
- PTT_MSG_DPD_CAL = 0x32BC,
-
-// Suffix'ed Message ID to differential from existing Message name.
-// ===============================================================
- PTT_MSG_GET_NV_TABLE_PRIMA_V1 = 0x32BD,
- PTT_MSG_SET_NV_TABLE_PRIMA_V1 = 0x32BE,
- PTT_MSG_RX_IQ_CAL_PRIMA_V1 = 0x32BF,
- PTT_MSG_TX_IQ_CAL_PRIMA_V1 = 0x32C0,
- PTT_MSG_SET_TX_IQ_CORRECT_PRIMA_V1 = 0x32C1,
- PTT_MSG_GET_TX_IQ_CORRECT_PRIMA_V1 = 0x32C2,
- PTT_MSG_SET_RX_IQ_CORRECT_PRIMA_V1 = 0x32C3,
- PTT_MSG_GET_RX_IQ_CORRECT_PRIMA_V1 = 0x32C4,
- PTT_MSG_START_WAVEFORM_PRIMA_V1 = 0x32C5,
- PTT_MSG_FORCE_PACKET_TX_GAIN_PRIMA_V1 = 0x32C6,
- PTT_MSG_CLPC_CAL_SETUP_PRIMA_V1 = 0x32C7,
- PTT_MSG_CLPC_CAL_RESTORE_PRIMA_V1 = 0x32C8,
- PTT_MSG_CLOSE_TPC_LOOP_PRIMA_V1 = 0x32C9,
- PTT_MSG_SW_CLPC_CAL_PRIMA_V1 = 0x32CA,
- PTT_MSG_CLPC_CAL_EXTRA_MEASUREMENT_PRIMA_V1 = 0x32CB,
- PTT_MSG_PRIMA_GENERIC_CMD = 0x32CC,
- PTT_MSG_DIGITAL_PIN_CONNECTIVITY_TEST_RES = 0X32CD,
-
- PTT_MSG_EXIT = 0x32ff,
- PTT_MAX_MSG_ID = PTT_MSG_EXIT
-} ePttMsgId;
-
-enum
-{
- PTT_MSG_PRIMA_GENERIC_CMD_FAST_SET_CHANNEL = 0x0,
-};
-
-#define PTT_MSG_TYPES_BEGIN_30 PTT_MSG_TYPES_BEGIN
-#define PTT_MSG_TYPES_BEGIN_31 PTT_MSG_TYPES_BEGIN + 0x100
-#define PTT_MSG_TYPES_BEGIN_32 PTT_MSG_TYPES_BEGIN + 0x200
-
-// for FTM PER feature
-enum {
-Legacy_FTM = 0,
-FTM_PER_TX = 1,
-FTM_PER_RX = 2,
-};
-
-#ifndef tANI_BOOLEAN
-#define tANI_BOOLEAN tANI_U8
-#endif
-
-
-
-/******************************************************************************************************************
- PTT MESSAGES
-******************************************************************************************************************/
-//Init
-typedef PACKED_PRE struct PACKED_POST {
- tPttModuleVariables ptt;
-} tMsgPttMsgInit;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 tableSize;
- tANI_U32 chunkSize;
- eNvTable nvTable;
-} tMsgPttGetNvTable;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 tableSize;
- tANI_U32 chunkSize;
- eNvTable nvTable;
-} tMsgPttSetNvTable;
-
-typedef PACKED_PRE struct PACKED_POST {
- eNvTable nvTable;
-} tMsgPttDelNvTable;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttBlankNv;
-
-typedef PACKED_PRE struct PACKED_POST {
- eNvField nvField;
- uNvFields fieldData;
-} tMsgPttGetNvField;
-
-typedef PACKED_PRE struct PACKED_POST {
- eNvField nvField;
- uNvFields fieldData;
-} tMsgPttSetNvField;
-
-typedef PACKED_PRE struct PACKED_POST {
- eNvTable nvTable;
-} tMsgPttStoreNvTable;
-
-typedef PACKED_PRE struct PACKED_POST {
- eRegDomainId regDomainId;
-} tMsgPttSetRegDomain;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 tableSize;
- tANI_U32 chunkSize;
- eNvTable nvTable;
- tANI_U8 nvData[MAX_NV_BIN_SIZE];
-} tMsgPttGetNvBin;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 tableSize;
- tANI_U32 chunkSize;
- eNvTable nvTable;
- tANI_U8 nvData[MAX_NV_BIN_SIZE];
-} tMsgPttSetNvBin;
-
-//Device Register Access
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 regAddr;
- tANI_U32 regValue;
-} tMsgPttDbgReadRegister;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 regAddr;
- tANI_U32 regValue;
-} tMsgPttDbgWriteRegister;
-
-#define PTT_READ_MEM_MAX 512
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 memAddr;
- tANI_U32 nBytes;
- tANI_U32 pMemBuf[PTT_READ_MEM_MAX]; //caller should allocate space
-} tMsgPttDbgReadMemory;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 memAddr;
- tANI_U32 nBytes;
- tANI_U32 pMemBuf[PTT_READ_MEM_MAX];
-} tMsgPttDbgWriteMemory;
-
-//Device MAC Test Setup
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 chId;
- ePhyChanBondState cbState;
-} tMsgPttSetChannel;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyChainSelect chainSelect;
-} tMsgPttEnableChains;
-
-typedef tIQSamples tWaveformSample;
-
-//Tx Waveform Gen Service
-typedef PACKED_PRE struct PACKED_POST {
- tWaveformSample waveform[MAX_TEST_WAVEFORM_SAMPLES];
- tANI_U16 numSamples;
- tANI_BOOLEAN clk80;
- tANI_U8 reserved[1];
-} tMsgPttSetWaveform;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyTxChains txChain;
- tANI_U8 gain;
-} tMsgPttSetTxWaveformGain;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyTxChains txChain;
- tANI_U32 gain;
-} tMsgPttSetTxWaveformGain_PRIMA_V1;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyRxChains rxChain;
- tANI_U8 gain;
-} tMsgPttSetRxWaveformGain;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsPowerAdcReadings txPowerAdc;
-} tMsgPttGetWaveformPowerAdc;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttStopWaveform;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttClpcCalSetup_PRIMA_V1;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U16 setup_measure;
- tANI_U16 setup_txDmdPwrOffset;
- tANI_U16 measure_totalExtraPt;
- tANI_U16 measure_currentMeasurePtIdx;
- tANI_U8 plut[256];
-} tMsgPttClpcCalExtraMeasurement_PRIMA_V1;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttClpcCalRestore_PRIMA_V1;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 startIndex;
- tANI_U32 numSamples;
-} tMsgPttStartWaveform;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 startIndex;
- tANI_U32 numSamples;
-} tMsgPttStartWaveform_PRIMA_V1;
-
-// Added for PRIMA
-typedef PACKED_PRE struct PACKED_POST {
- tWaveformSample waveform[MAX_TEST_WAVEFORM_SAMPLES];
- tANI_U16 numSamples;
- tANI_BOOLEAN clk80;
- tANI_U8 reserved[1];
-} tMsgPttSetWaveformRF;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 startIndex;
- tANI_U32 numSamples;
-} tMsgPttStartWaveformRF;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttStopWaveformRF;
-
-//Tx Frame Gen Service
-typedef PACKED_PRE struct PACKED_POST {
- sPttFrameGenParams frameParams;
-} tMsgPttConfigTxPacketGen;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_BOOLEAN startStop;
- tANI_U8 reserved[3];
-} tMsgPttStartStopTxPacketGen;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxFrameCounters numFrames;
- tANI_BOOLEAN status;
- tANI_U8 reserved[3];
-} tMsgPttQueryTxStatus;
-
-//Tx Frame Power Service
-typedef PACKED_PRE struct PACKED_POST {
- tANI_BOOLEAN tpcClose;
- tANI_U8 reserved[3];
-} tMsgPttCloseTpcLoop;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 tpcClose;
-} tMsgPttCloseTpcLoop_PRIMA_V1;
-
-
- //open loop service
-typedef PACKED_PRE struct PACKED_POST {
-
- ePhyTxChains txChain;
- tANI_U8 minIndex;
- tANI_U8 maxIndex;
- tANI_U8 reserved[2];
- tANI_U8 gainTable[TPC_MEM_GAIN_LUT_DEPTH];
-} tMsgPttSetPacketTxGainTable;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyTxChains txChain;
- tANI_U8 gainTable[TPC_MEM_GAIN_LUT_DEPTH];
-} tMsgPttGetPacketTxGainTable;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U8 index;
- tANI_U8 reserved[3];
-} tMsgPttSetPacketTxGainIndex;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyTxChains txChain;
- tANI_U8 gain;
- tANI_U8 reserved[3];
-} tMsgPttForcePacketTxGain;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyTxChains txChain;
- tANI_U32 gain;
-} tMsgPttForcePacketTxGain_PRIMA_V1;
-
-
-typedef PACKED_PRE struct PACKED_POST {
- ePowerTempIndexSource indexSource;
-} tMsgPttSetPwrIndexSource;
-
-typedef PACKED_PRE struct PACKED_POST {
- t2Decimal dbmPwr;
- tANI_U8 reserved[2];
-} tMsgPttSetTxPower;
-
-typedef tTxPowerReport tMsgPttGetTxPowerReport;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyTxChains txChain;
-
- tANI_U8 minIndex;
- tANI_U8 maxIndex;
- tANI_U8 reserved[2];
-
- tANI_U8 powerLut[TPC_MEM_POWER_LUT_DEPTH];
-} tMsgPttSetPowerLut;
-
-typedef PACKED_PRE struct PACKED_POST {
- ePhyTxChains txChain;
-
- tANI_U8 powerLut[TPC_MEM_POWER_LUT_DEPTH];
-} tMsgPttGetPowerLut;
-
-
-//Rx Gain Service
-typedef PACKED_PRE struct PACKED_POST {
- sRxChainsAgcDisable gains;
-} tMsgPttDisableAgcTables;
-
-
-typedef PACKED_PRE struct PACKED_POST {
- sRxChainsAgcEnable enables;
-} tMsgPttEnableAgcTables;
-
-typedef PACKED_PRE struct PACKED_POST {
- sRxChainsRssi rssi;
-} tMsgPttGetRxRssi;
-
-typedef PACKED_PRE struct PACKED_POST {
- sRxChainsRssi rssi;
-}tMsgPttGetUnicastMacPktRxRssi;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 conf;
-}tMsgPttGetUnicastMacPktRxRssiConf_PRIMA_V1;
-
-//Rx Frame Catcher Service
-typedef PACKED_PRE struct PACKED_POST {
- sRxTypesDisabled disabled;
-} tMsgPttSetRxDisableMode;
-
-typedef PACKED_PRE struct PACKED_POST {
- sRxFrameCounters counters;
-} tMsgPttGetRxPktCounts;
-
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttResetRxPacketStatistics;
-
-
-
-
-
-//ADC Sample Service
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 startSample; //index of first requested sample, 0 causes new capture
- tANI_U32 numSamples; //number of samples to transfer to host
- eGrabRamSampleType sampleType;
- tGrabRamSample grabRam[MAX_REQUESTED_GRAB_RAM_SAMPLES];
-} tMsgPttGrabRam;
-
-
-//Phy Calibration Service
-typedef PACKED_PRE struct PACKED_POST {
- sRxChainsIQCalValues calValues;
- eGainSteps gain;
-} tMsgPttRxIqCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- tRxChainsDcoCorrections calValues;
- tANI_U8 gain;
-} tMsgPttRxDcoCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- tRxChainsIm2Corrections calValues;
- eGainSteps gain;
- tANI_U8 im2CalOnly;
-} tMsgPttRxIm2Cal;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsLoCorrections calValues;
- tANI_U8 reserve[2];
- eGainSteps gain;
-} tMsgPttTxCarrierSuppressCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsIQCalValues calValues;
- tANI_U8 reserve[2];
- eGainSteps gain;
-} tMsgPttTxIqCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsHKIQCalValues calValues;
- eGainSteps gain;
-} tMsgPttHKdacTxIqCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 unused;
-} tMsgPttExecuteInitialCals;
-
-typedef PACKED_PRE struct PACKED_POST {
- sRfHdetCalValues hdetCalValues;
-} tMsgPttHdetCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U16 clpcMode;
- tANI_U16 txCmdPwr;
- tANI_U16 pwrMax_pwrMin;
- tANI_U16 step;
- tANI_U8 plut[256];
-} tMsgPttClpcSwCal_PRIMA_V1;
-
-
-//Phy Calibration Override Service
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsLoCorrections calValues;
- tANI_U8 reserve[2];
- eGainSteps gain;
-} tMsgPttSetTxCarrierSuppressCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsLoCorrections calValues;
- tANI_U8 reserve[2];
- eGainSteps gain;
-} tMsgPttGetTxCarrierSuppressCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsIQCalValues calValues;
- tANI_U8 reserve[2];
- eGainSteps gain;
-} tMsgPttSetTxIqCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsIQCalValues calValues;
- tANI_U8 reserve[2];
- eGainSteps gain;
-} tMsgPttGetTxIqCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsHKIQCalValues calValues;
- eGainSteps gain;
-} tMsgPttHKdacSetTxIqCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsHKIQCalValues calValues;
- eGainSteps gain;
-} tMsgPttHKdacGetTxIqCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sRxChainsIQCalValues calValues;
- eGainSteps gain;
-} tMsgPttSetRxIqCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sRxChainsIQCalValues calValues;
- eGainSteps gain;
-} tMsgPttGetRxIqCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- tRxChainsDcoCorrections calValues;
- tANI_U8 gain;
-} tMsgPttSetRxDcoCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- tRxChainsDcoCorrections calValues;
- tANI_U8 gain;
-} tMsgPttGetRxDcoCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- tRxChainsIm2Corrections calValues;
- tANI_U8 dummy;
-} tMsgPttSetRxIm2Correct;
-
-typedef PACKED_PRE struct PACKED_POST {
- tRxChainsIm2Corrections calValues;
- tANI_U8 dummy;
-} tMsgPttGetRxIm2Correct;
-
-typedef PACKED_PRE struct PACKED_POST {
- eRfTempSensor tempSensor;
- tTempADCVal tempAdc;
- tANI_U8 reserved[4 - sizeof(tTempADCVal)];
-} tMsgPttGetTempAdc;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 addr;
- tANI_U32 mask;
- tANI_U32 shift;
- tANI_U32 value;
-} tMsgPttReadRfField;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 addr;
- tANI_U32 mask;
- tANI_U32 shift;
- tANI_U32 value;
-} tMsgPttWriteRfField;
-
-//SIF bar4 Register Access
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 sifRegAddr;
- tANI_U32 sifRegValue;
-} tMsgPttReadSifBar4Register;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 sifRegAddr;
- tANI_U32 sifRegValue;
-} tMsgPttWriteSifBar4Register;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttDeepSleep;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttEnterFullPower;
-
-//Misc.
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 notUsed;
-} tMsgPttSystemReset;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 cmd;
- tANI_U32 arg1;
- tANI_U32 arg2;
- tANI_U32 arg3;
- tANI_U32 arg4;
-} tMsgPttLogDump;
-
-typedef PACKED_PRE struct PACKED_POST {
- sBuildReleaseParams relParams;
-} tMsgPttGetBuildReleaseNumber;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 revId;
-} tMsgPttGetRFVersion;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 option; //dummy variable
-} tMsgPttCalControlBitmap;
-
-//#ifdef VERIFY_HALPHY_SIMV_MODEL
-
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 option; //dummy variable
-} tMsgPttHalPhyInit;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 option; //dummy variable
-} tMsgPttRxIQTest;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsDPDCalValues calValues;
- eGainSteps gain;
-} tMsgPttDpdCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U8 lutIdx;
- tANI_U8 band;
-} tMsgPttStartToneGen;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U32 option; //dummy variable
-} tMsgPttStopToneGen;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsLnaBandCalValues calValues;
- eGainSteps gain;
-} tMsgPttLnaBandCal;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsLnaBandCalValues calValues;
- eGainSteps gain;
-} tMsgPttGetLnaBandCalCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsLnaBandCalValues calValues;
- eGainSteps gain;
-} tMsgPttSetLnaBandCalCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsDPDCalValues calValues;
- eGainSteps gain;
-}tMsgPttSetDPDCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- sTxChainsDPDCalValues calValues;
- eGainSteps gain;
-}tMsgPttGetDPDCorrect;
-
-typedef PACKED_PRE struct PACKED_POST {
- tQWPTT_U32 cmdIdx;
- tQWPTT_U32 param1;
- tQWPTT_U32 param2;
- tQWPTT_U32 param3;
- tQWPTT_U32 param4;
-} tMsgPttPrimaGenericCmd;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U16 testID;
- tANI_U16 result;
-} tMsgPttPinConnTestRes;
-//#endif
-
-/******************************************************************************************************************
- END OF PTT MESSAGES
-******************************************************************************************************************/
-
-typedef PACKED_PRE union PACKED_POST pttMsgUnion{
-//typedef union pttMsgUnion {
- tMsgPttMsgInit MsgInit;
- tMsgPttGetNvTable GetNvTable;
- tMsgPttSetNvTable SetNvTable;
- tMsgPttDelNvTable DelNvTable;
- tMsgPttBlankNv BlankNv;
- tMsgPttStoreNvTable StoreNvTable;
- tMsgPttSetRegDomain SetRegDomain;
- tMsgPttGetNvField GetNvField;
- tMsgPttSetNvField SetNvField;
- tMsgPttGetNvBin GetNvBin;
- tMsgPttSetNvBin SetNvBin;
- tMsgPttDbgReadRegister DbgReadRegister;
- tMsgPttDbgWriteRegister DbgWriteRegister;
- tMsgPttDbgReadMemory DbgReadMemory;
- tMsgPttDbgWriteMemory DbgWriteMemory;
- tMsgPttEnableChains EnableChains;
- tMsgPttSetChannel SetChannel;
- tMsgPttSetWaveform SetWaveform;
- tMsgPttSetTxWaveformGain SetTxWaveformGain;
- tMsgPttSetTxWaveformGain_PRIMA_V1 SetTxWaveformGain_PRIMA_V1;
- tMsgPttGetWaveformPowerAdc GetWaveformPowerAdc;
- tMsgPttStartWaveform StartWaveform;
- tMsgPttStartWaveform_PRIMA_V1 StartWaveform_PRIMA_V1;
- tMsgPttStopWaveform StopWaveform;
- tMsgPttSetRxWaveformGain SetRxWaveformGain;
- tMsgPttConfigTxPacketGen ConfigTxPacketGen;
- tMsgPttStartStopTxPacketGen StartStopTxPacketGen;
- tMsgPttQueryTxStatus QueryTxStatus;
- tMsgPttCloseTpcLoop CloseTpcLoop;
- tMsgPttCloseTpcLoop_PRIMA_V1 CloseTpcLoop_PRIMA_V1;
- tMsgPttSetPacketTxGainTable SetPacketTxGainTable;
- tMsgPttGetPacketTxGainTable GetPacketTxGainTable;
- tMsgPttSetPacketTxGainIndex SetPacketTxGainIndex;
- tMsgPttForcePacketTxGain ForcePacketTxGain;
- tMsgPttForcePacketTxGain_PRIMA_V1 ForcePacketTxGain_PRIMA_V1;
- tMsgPttSetPwrIndexSource SetPwrIndexSource;
- tMsgPttSetTxPower SetTxPower;
- tMsgPttGetTxPowerReport GetTxPowerReport;
- tMsgPttSetPowerLut SetPowerLut;
- tMsgPttGetPowerLut GetPowerLut;
- tMsgPttDisableAgcTables DisableAgcTables;
- tMsgPttEnableAgcTables EnableAgcTables;
- tMsgPttGetRxRssi GetRxRssi;
- tMsgPttGetUnicastMacPktRxRssi GetUnicastMacPktRxRssi;
- tMsgPttGetUnicastMacPktRxRssiConf_PRIMA_V1 GetUnicastMacPktRxRssiConf_PRIMA_V1;
- tMsgPttSetRxDisableMode SetRxDisableMode;
- tMsgPttGetRxPktCounts GetRxPktCounts;
- tMsgPttResetRxPacketStatistics ResetRxPacketStatistics;
- tMsgPttGrabRam GrabRam;
- tMsgPttRxIqCal RxIqCal;
- tMsgPttRxDcoCal RxDcoCal;
- tMsgPttRxIm2Cal RxIm2Cal;
-
- tMsgPttExecuteInitialCals ExecuteInitialCals;
- tMsgPttTxCarrierSuppressCal TxCarrierSuppressCal;
- tMsgPttTxIqCal TxIqCal;
- tMsgPttHKdacTxIqCal HKdacTxIqCal;
- tMsgPttClpcCalSetup_PRIMA_V1 ClpcCalSetup_PRIMA_V1;
- tMsgPttClpcCalRestore_PRIMA_V1 ClpcCalRestore_PRIMA_V1;
- tMsgPttHdetCal HdetCal;
- tMsgPttClpcSwCal_PRIMA_V1 ClpcSwCal_PRIMA_V1;
- tMsgPttClpcCalExtraMeasurement_PRIMA_V1 ClpcCalExtraMeasurement_PRIMA_V1;
- tMsgPttSetTxCarrierSuppressCorrect SetTxCarrierSuppressCorrect;
- tMsgPttGetTxCarrierSuppressCorrect GetTxCarrierSuppressCorrect;
- tMsgPttSetTxIqCorrect SetTxIqCorrect;
- tMsgPttGetTxIqCorrect GetTxIqCorrect;
- tMsgPttSetRxIqCorrect SetRxIqCorrect;
- tMsgPttGetRxIqCorrect GetRxIqCorrect;
- tMsgPttSetRxDcoCorrect SetRxDcoCorrect;
- tMsgPttGetRxDcoCorrect GetRxDcoCorrect;
- tMsgPttSetRxIm2Correct SetRxIm2Correct;
- tMsgPttGetRxIm2Correct GetRxIm2Correct;
- tMsgPttHKdacSetTxIqCorrect HKdacSetTxIqCorrect;
- tMsgPttHKdacGetTxIqCorrect HKdacGetTxIqCorrect;
-
- tMsgPttGetTempAdc GetTempAdc;
- tMsgPttReadRfField ReadRfField;
- tMsgPttWriteRfField WriteRfField;
- tMsgPttCalControlBitmap SetCalControlBitmap;
-
-//#ifdef VERIFY_HALPHY_SIMV_MODEL
-
- tMsgPttHalPhyInit InitOption;
- tMsgPttRxIQTest RxIQTest;
- tMsgPttDpdCal DpdCal;
- tMsgPttStartToneGen StartToneGen;
- tMsgPttStopToneGen StopToneGen;
-//#endif
- tMsgPttDeepSleep DeepSleep;
- tMsgPttReadSifBar4Register ReadSifBar4Register;
- tMsgPttWriteSifBar4Register WriteSifBar4Register;
- tMsgPttEnterFullPower EnterFullPower;
- tMsgPttSystemReset SystemReset;
- tMsgPttLogDump LogDump;
- tMsgPttGetBuildReleaseNumber GetBuildReleaseNumber;
- tMsgPttGetRFVersion GetRFVersion;
-
-//[RY] added for PRIMA
- tMsgPttSetWaveformRF SetWaveformRF;
- tMsgPttStopWaveformRF StopWaveformRF;
- tMsgPttStartWaveformRF StartWaveformRF;
- tMsgPttLnaBandCal LnaBandCal;
- tMsgPttGetLnaBandCalCorrect GetLnaBandCalCorrect;
- tMsgPttSetLnaBandCalCorrect SetLnaBandCalCorrect;
- tMsgPttGetDPDCorrect GetDPDCorrect;
- tMsgPttSetDPDCorrect SetDPDCorrect;
- tMsgPttDpdCal DPDCal;
- tMsgPttPrimaGenericCmd PrimaGenericCmd;
- tMsgPttPinConnTestRes PinConnTestRes;
-} uPttMsgs;
-
-typedef PACKED_PRE struct PACKED_POST {
- tANI_U16 msgId;
- tANI_U16 msgBodyLength; //actually, the length of all the fields in this structure
- eQWPttStatus msgResponse;
- uPttMsgs msgBody;
-} tPttMsgbuffer, *tpPttMsgbuffer;
-
-
-typedef PACKED_PRE struct PACKED_POST {
- /*
- * success or failure
- */
- tANI_U32 status;
- tPttMsgbuffer pttMsgBuffer;
-} tProcessPttRspParams, *tpProcessPttRspParams;
-
-/* End of Ptt Parameters */
-
-#endif