prima: release v3.2.1.11g

git://codeaurora.org/external/wlan/prima.git

    9aeede6 wlan: Release 3.2.1.11g
    bfacc46 Update countryInfoTable
    5cc0827 Ignore Channel 165 for country INDONESIA
    f12d310 DXE Health monitor

Signed-off-by: Iliyan Malchev <malchev@google.com>
This commit is contained in:
Iliyan Malchev 2012-11-05 12:10:17 -08:00
parent 0b16187d38
commit cb0874125a
12 changed files with 655 additions and 275 deletions

View file

@ -77,6 +77,8 @@ when who what, where, why
#define T_WLANDXE_TX_INT_ENABLE_FCOUNT 1
#define T_WLANDXE_MEMDUMP_BYTE_PER_LINE 16
#define T_WLANDXE_MAX_RX_PACKET_WAIT 6000
#define T_WLANDXE_PERIODIC_HEALTH_M_TIME 1500
#define T_WLANDXE_MAX_HW_ACCESS_WAIT 2000
#define WLANDXE_MAX_REAPED_RX_FRAMES 512
/* This is temporary fot the compile
@ -518,6 +520,302 @@ void dxeRxThreadChannelDebugHandler
return;
}
/*==========================================================================
@ Function Name
dxeRXHealthMonitor
@ Description
Monitoring RX channel healthy stataus
If detect any problem, try to recover
@ Parameters
healthMonitorMsg MSG pointer.
will have low resource TX channel context
@ Return
NONE
===========================================================================*/
void dxeRXHealthMonitor
(
wpt_msg *healthMonitorMsg
)
{
WLANDXE_ChannelCBType *channelCtrlBlk;
WLANDXE_ChannelCBType *testCHCtrlBlk;
wpt_uint32 regValue;
wpt_uint32 chStatusReg, chControlReg, chDescReg, chLDescReg;
wpt_uint32 hwWakeLoop, chLoop;
if(NULL == healthMonitorMsg)
{
return;
}
/* Make wake up HW */
dxeNotifySmsm(eWLAN_PAL_FALSE, eWLAN_PAL_TRUE);
dxeNotifySmsm(eWLAN_PAL_TRUE, eWLAN_PAL_FALSE);
for(hwWakeLoop = 0; hwWakeLoop < T_WLANDXE_MAX_HW_ACCESS_WAIT; hwWakeLoop++)
{
wpalReadRegister(WLANDXE_BMU_AVAILABLE_BD_PDU, &regValue);
if(0 != regValue)
{
break;
}
}
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"Scheduled RX, num free BD/PDU %d, loop Count %d",
regValue, hwWakeLoop, 0);
for(chLoop = WDTS_CHANNEL_RX_LOW_PRI; chLoop < WDTS_CHANNEL_MAX; chLoop++)
{
testCHCtrlBlk = &tempDxeCtrlBlk->dxeChannel[chLoop];
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXECtrlRegAddr, &chControlReg);
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXEStatusRegAddr, &chStatusReg);
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXEDesclRegAddr, &chDescReg);
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXELstDesclRegAddr, &chLDescReg);
wpalTrace(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_INFO,
"%11s : CCR 0x%x, CSR 0x%x, CDR 0x%x, CLDR 0x%x, HCBO %d, HCBDP 0x%x, HCBDC 0x%x, TCBO %d,TCBDP 0x%x, TCBDC 0x%x",
channelType[chLoop],
chControlReg, chStatusReg, chDescReg, chLDescReg,
testCHCtrlBlk->headCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->headCtrlBlk->linkedDesc->descCtrl.ctrl,
testCHCtrlBlk->tailCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDesc->descCtrl.ctrl);
if((chControlReg & WLANDXE_DESC_CTRL_VALID) &&
(chLDescReg != testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr))
{
wpalTrace(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : CCR 0x%x, CSR 0x%x, CDR 0x%x, CLDR 0x%x, "
"HCBO %d, HCBDP 0x%x, HCBDC 0x%x, TCBO %d,TCBDP 0x%x, TCBDC 0x%x",
channelType[chLoop],
chControlReg, chStatusReg, chDescReg, chLDescReg,
testCHCtrlBlk->headCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->headCtrlBlk->linkedDesc->descCtrl.ctrl,
testCHCtrlBlk->tailCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDesc->descCtrl.ctrl);
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : RX CH EN Descriptor Async, resync it", channelType[chLoop], 0, 0);
wpalWriteRegister(testCHCtrlBlk->channelRegister.chDXELstDesclRegAddr,
testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr);
}
else if(!(chControlReg & WLANDXE_DESC_CTRL_VALID) &&
(chDescReg != testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr))
{
wpalTrace(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : CCR 0x%x, CSR 0x%x, CDR 0x%x, CLDR 0x%x, "
"HCBO %d, HCBDP 0x%x, HCBDC 0x%x, TCBO %d,TCBDP 0x%x, TCBDC 0x%x",
channelType[chLoop],
chControlReg, chStatusReg, chDescReg, chLDescReg,
testCHCtrlBlk->headCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->headCtrlBlk->linkedDesc->descCtrl.ctrl,
testCHCtrlBlk->tailCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDesc->descCtrl.ctrl);
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : RX CH DIS Descriptor Async, resync it", channelType[chLoop], 0, 0);
wpalWriteRegister(testCHCtrlBlk->channelRegister.chDXEDesclRegAddr,
testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr);
}
}
channelCtrlBlk = (WLANDXE_ChannelCBType *)healthMonitorMsg->pContext;
if(channelCtrlBlk->hitLowResource)
{
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : Still Low Resource, kick DXE TX and restart timer",
channelType[channelCtrlBlk->channelType], 0, 0);
/* Still Low Resource, Kick DXE again and start timer again */
wpalTimerStart(&channelCtrlBlk->healthMonitorTimer,
T_WLANDXE_PERIODIC_HEALTH_M_TIME);
}
else
{
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : Out from Low resource condition, do nothing",
channelType[channelCtrlBlk->channelType], 0, 0);
/* Recovered from low resource condition
* Not need to do anything */
}
return;
}
/*==========================================================================
@ Function Name
dxeTXHealthMonitor
@ Description
Monitoring TX channel healthy stataus
If detect any problem, try to recover
@ Parameters
healthMonitorMsg MSG pointer.
will have low resource TX channel context
@ Return
NONE
===========================================================================*/
void dxeTXHealthMonitor
(
wpt_msg *healthMonitorMsg
)
{
WLANDXE_ChannelCBType *channelCtrlBlk;
WLANDXE_ChannelCBType *testCHCtrlBlk;
wpt_uint32 regValue;
wpt_uint32 chStatusReg, chControlReg, chDescReg, chLDescReg;
wpt_uint32 hwWakeLoop, chLoop;
wpt_status status = eWLAN_PAL_STATUS_SUCCESS;
if(NULL == healthMonitorMsg)
{
return;
}
/* First of all kick TX channel
* This will fix if there is any problem with SMSM state */
dxeNotifySmsm(eWLAN_PAL_FALSE, eWLAN_PAL_TRUE);
dxeNotifySmsm(eWLAN_PAL_TRUE, eWLAN_PAL_FALSE);
/* Wait till RIVA up */
for(hwWakeLoop = 0; hwWakeLoop < T_WLANDXE_MAX_HW_ACCESS_WAIT; hwWakeLoop++)
{
wpalReadRegister(WLANDXE_BMU_AVAILABLE_BD_PDU, &regValue);
if(0 != regValue)
{
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"num free BD/PDU %d, loop Count %d",
regValue, hwWakeLoop, 0);
break;
}
}
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"Scheduled TX, num free BD/PDU %d, loop Count %d",
regValue, hwWakeLoop, 0);
for(chLoop = 0; chLoop < WDTS_CHANNEL_RX_LOW_PRI; chLoop++)
{
testCHCtrlBlk = &tempDxeCtrlBlk->dxeChannel[chLoop];
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXECtrlRegAddr, &chControlReg);
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXEStatusRegAddr, &chStatusReg);
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXEDesclRegAddr, &chDescReg);
wpalReadRegister(testCHCtrlBlk->channelRegister.chDXELstDesclRegAddr, &chLDescReg);
wpalTrace(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_INFO,
"%11s : CCR 0x%x, CSR 0x%x, CDR 0x%x, CLDR 0x%x, HCBO %d, HCBDP 0x%x, HCBDC 0x%x, TCBO %d,TCBDP 0x%x, TCBDC 0x%x",
channelType[chLoop],
chControlReg, chStatusReg, chDescReg, chLDescReg,
testCHCtrlBlk->headCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->headCtrlBlk->linkedDesc->descCtrl.ctrl,
testCHCtrlBlk->tailCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDesc->descCtrl.ctrl);
if((chControlReg & WLANDXE_DESC_CTRL_VALID) &&
(chLDescReg != testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr))
{
wpalTrace(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : CCR 0x%x, CSR 0x%x, CDR 0x%x, CLDR 0x%x, "
"HCBO %d, HCBDP 0x%x, HCBDC 0x%x, TCBO %d,TCBDP 0x%x, TCBDC 0x%x",
channelType[chLoop],
chControlReg, chStatusReg, chDescReg, chLDescReg,
testCHCtrlBlk->headCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->headCtrlBlk->linkedDesc->descCtrl.ctrl,
testCHCtrlBlk->tailCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDesc->descCtrl.ctrl);
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : TX CH EN Descriptor Async, resync it", channelType[chLoop], 0, 0);
wpalWriteRegister(testCHCtrlBlk->channelRegister.chDXELstDesclRegAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr);
}
else if(!(chControlReg & WLANDXE_DESC_CTRL_VALID) &&
(chDescReg != testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr))
{
wpalTrace(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : CCR 0x%x, CSR 0x%x, CDR 0x%x, CLDR 0x%x, "
"HCBO %d, HCBDP 0x%x, HCBDC 0x%x, TCBO %d,TCBDP 0x%x, TCBDC 0x%x",
channelType[chLoop],
chControlReg, chStatusReg, chDescReg, chLDescReg,
testCHCtrlBlk->headCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->headCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->headCtrlBlk->linkedDesc->descCtrl.ctrl,
testCHCtrlBlk->tailCtrlBlk->ctrlBlkOrder, testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDesc->descCtrl.ctrl);
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : TX CH DIS Descriptor Async, resync it", channelType[chLoop], 0, 0);
wpalWriteRegister(testCHCtrlBlk->channelRegister.chDXEDesclRegAddr,
testCHCtrlBlk->tailCtrlBlk->linkedDescPhyAddr);
}
}
/* TX channel test done, test RX channels */
channelCtrlBlk = (WLANDXE_ChannelCBType *)healthMonitorMsg->pContext;
channelCtrlBlk->healthMonitorMsg->callback = dxeRXHealthMonitor;
status = wpalPostRxMsg(WDI_GET_PAL_CTX(),
channelCtrlBlk->healthMonitorMsg);
if (eWLAN_PAL_STATUS_SUCCESS != status)
{
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
"TX Low resource Kick DXE MSG Serialize fail",
status, 0, 0);
}
return;
}
/*==========================================================================
@ Function Name
dxeHealthMonitorTimeout
@ Description
Health Monitor timer started when TX channel low resource condition
And if reciovered from low resource condition, timer would not fired
Timer fired means during certain time, TX CH could not be recovered
@ Parameters
channelCtxt Low resource condition happen Channel context
@ Return
NONE
===========================================================================*/
void dxeHealthMonitorTimeout
(
void *channelCtxt
)
{
WLANDXE_ChannelCBType *channelCtrlBlk;
wpt_status status = eWLAN_PAL_STATUS_SUCCESS;
if(NULL == channelCtxt)
{
return;
}
/* Timeout Fired, DXE TX should kick on TX thread
* Serailize to TX Thread */
channelCtrlBlk = (WLANDXE_ChannelCBType *)channelCtxt;
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_INFO,
"%11s : Health Monitor timer expired",
channelType[channelCtrlBlk->channelType], 0, 0);
channelCtrlBlk->healthMonitorMsg->callback = dxeTXHealthMonitor;
status = wpalPostTxMsg(WDI_GET_PAL_CTX(),
channelCtrlBlk->healthMonitorMsg);
if (eWLAN_PAL_STATUS_SUCCESS != status)
{
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
"TX Low resource Kick DXE MSG Serialize fail",
status, 0, 0);
}
return;
}
/*==========================================================================
@ Function Name
dxeCtrlBlkAlloc
@ -3006,6 +3304,7 @@ static wpt_status dxeTXCompFrame
channelEntry->channelType,
eWLAN_PAL_TRUE);
channelEntry->hitLowResource = eWLAN_PAL_FALSE;
wpalTimerStop(&channelEntry->healthMonitorTimer);
}
wpalMutexRelease(&channelEntry->dxeChannelLock);
@ -3713,6 +4012,29 @@ void *WLANDXE_Open
return NULL;
}
status = wpalTimerInit(&currentChannel->healthMonitorTimer,
dxeHealthMonitorTimeout,
(void *)currentChannel);
if(eWLAN_PAL_STATUS_SUCCESS != status)
{
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"WLANDXE_Open Health Monitor timer init fail %d", idx);
WLANDXE_Close(tempDxeCtrlBlk);
return NULL;
}
currentChannel->healthMonitorMsg = (wpt_msg *)wpalMemoryAllocate(sizeof(wpt_msg));
if(NULL == currentChannel->healthMonitorMsg)
{
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"WLANDXE_Open Health Monitor MSG Alloc fail %d", idx);
WLANDXE_Close(tempDxeCtrlBlk);
return NULL;
}
wpalMemoryZero(currentChannel->healthMonitorMsg, sizeof(wpt_msg));
currentChannel->healthMonitorMsg->callback = dxeTXHealthMonitor;
currentChannel->healthMonitorMsg->pContext = (void *)currentChannel;
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"WLANDXE_Open Channel %s Open Success", channelType[idx]);
}
@ -4105,6 +4427,15 @@ wpt_status WLANDXE_TxFrame
channel,
eWLAN_PAL_FALSE);
currentChannel->hitLowResource = eWLAN_PAL_TRUE;
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"%11s : Low Resource currentChannel->numRsvdDesc %d",
channelType[currentChannel->channelType],
currentChannel->numRsvdDesc);
dxeNotifySmsm(eWLAN_PAL_FALSE, eWLAN_PAL_TRUE);
dxeNotifySmsm(eWLAN_PAL_TRUE, eWLAN_PAL_FALSE);
wpalTimerStart(&currentChannel->healthMonitorTimer,
T_WLANDXE_PERIODIC_HEALTH_M_TIME);
}
wpalMutexRelease(&currentChannel->dxeChannelLock);
@ -4162,6 +4493,8 @@ WLANDXE_CompleteTX
WDTS_CHANNEL_TX_LOW_PRI,
eWLAN_PAL_FALSE);
inLowRes = channelCb->hitLowResource = eWLAN_PAL_TRUE;
wpalTimerStart(&channelCb->healthMonitorTimer,
T_WLANDXE_PERIODIC_HEALTH_M_TIME);
}
}
@ -4200,6 +4533,8 @@ WLANDXE_CompleteTX
WDTS_CHANNEL_TX_LOW_PRI,
eWLAN_PAL_FALSE);
channelCb->hitLowResource = eWLAN_PAL_TRUE;
wpalTimerStart(&channelCb->healthMonitorTimer,
T_WLANDXE_PERIODIC_HEALTH_M_TIME);
}
}
}
@ -4310,6 +4645,11 @@ wpt_status WLANDXE_Close
for(idx = 0; idx < WDTS_CHANNEL_MAX; idx++)
{
wpalMutexDelete(&dxeCtxt->dxeChannel[idx].dxeChannelLock);
wpalTimerDelete(&dxeCtxt->dxeChannel[idx].healthMonitorTimer);
if(NULL != dxeCtxt->dxeChannel[idx].healthMonitorMsg)
{
wpalMemoryFree(dxeCtxt->dxeChannel[idx].healthMonitorMsg);
}
dxeChannelClose(dxeCtxt, &dxeCtxt->dxeChannel[idx]);
#ifdef WLANDXE_TEST_CHANNEL_ENABLE
channel = &dxeCtxt->dxeChannel[idx];
@ -4778,8 +5118,12 @@ void WLANDXE_ChannelDebug
/* Debug Type 2, toggling stall detect enable/disable */
if(enableStallDetect)
{
/* Do nothing till not
* This feature will take effect to data path, needed intensive test */
HDXE_MSG(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_WARN,
"DXE TX Stall detect",
0, 0, 0);
/* Start Stall detect timer and detect stall */
wpalTimerStart(&tempDxeCtrlBlk->dxeChannel[WDTS_CHANNEL_TX_LOW_PRI].healthMonitorTimer,
T_WLANDXE_PERIODIC_HEALTH_M_TIME);
}
return;
}

View file

@ -63,6 +63,7 @@ when who what, where, why
* -------------------------------------------------------------------------*/
#include "wlan_qct_dxe.h"
#include "wlan_qct_pal_trace.h"
#include "wlan_qct_pal_timer.h"
#include "vos_trace.h"
/*----------------------------------------------------------------------------
* Preprocessor Definitions and Constants
@ -580,6 +581,8 @@ typedef struct
WLANDXE_ChannelExConfigType extraConfig;
WLANDXE_DMAChannelType assignedDMAChannel;
wpt_uint64 rxDoneHistogram;
wpt_timer healthMonitorTimer;
wpt_msg *healthMonitorMsg;
} WLANDXE_ChannelCBType;
typedef struct

View file

@ -1123,6 +1123,11 @@ typedef enum
#define CFG_ENABLE_DFS_CHNL_SCAN_MAX ( 1 )
#define CFG_ENABLE_DFS_CHNL_SCAN_DEFAULT ( 1 )
#define CFG_ENABLE_IGNORE_CHAN165 "gIgnore_Chan165"
#define CFG_ENABLE_IGNORE_CHAN165_MIN ( 0 )
#define CFG_ENABLE_IGNORE_CHAN165_MAX ( 1 )
#define CFG_ENABLE_IGNORE_CHAN165_DEFAULT ( 0 )
typedef enum
{
eHDD_LINK_SPEED_REPORT_ACTUAL = 0,
@ -1626,6 +1631,7 @@ typedef struct
v_BOOL_t enableFirstScan2GOnly;
v_BOOL_t skipDfsChnlInP2pSearch;
v_BOOL_t ignoreDynamicDtimInP2pMode;
v_U8_t ignore_chan165;
} hdd_config_t;
/*---------------------------------------------------------------------------
Function declarations and documenation

View file

@ -1621,6 +1621,13 @@ REG_VARIABLE( CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_NAME, WLAN_PARAM_Integer,
CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MIN,
CFG_IGNORE_DYNAMIC_DTIM_IN_P2P_MODE_MAX ),
REG_VARIABLE( CFG_ENABLE_IGNORE_CHAN165, WLAN_PARAM_Integer,
hdd_config_t, ignore_chan165,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
CFG_ENABLE_IGNORE_CHAN165_DEFAULT,
CFG_ENABLE_IGNORE_CHAN165_MIN,
CFG_ENABLE_IGNORE_CHAN165_MAX ),
};
/*
@ -1990,6 +1997,7 @@ static void print_hdd_cfg(hdd_context_t *pHddCtx)
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [enableFirstScan2GOnly] Value = [%u] ",pHddCtx->cfg_ini->enableFirstScan2GOnly);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [skipDfsChnlInP2pSearch] Value = [%u] ",pHddCtx->cfg_ini->skipDfsChnlInP2pSearch);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [ignoreDynamicDtimInP2pMode] Value = [%u] ",pHddCtx->cfg_ini->ignoreDynamicDtimInP2pMode);
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO_HIGH, "Name = [gIgnore_Chan165] Value = [%u] ",pHddCtx->cfg_ini->ignore_chan165);
}
@ -3074,6 +3082,7 @@ VOS_STATUS hdd_set_sme_config( hdd_context_t *pHddCtx )
smeConfig.csrConfig.nTxPowerCap = pConfig->nTxPowerCap;
smeConfig.csrConfig.fEnableBypass11d = pConfig->enableBypass11d;
smeConfig.csrConfig.fEnableDFSChnlScan = pConfig->enableDFSChnlScan;
smeConfig.csrConfig.fIgnore_chan165 = pConfig->ignore_chan165;
smeConfig.csrConfig.fFirstScanOnly2GChnl = pConfig->enableFirstScan2GOnly;
//FIXME 11d config is hardcoded

View file

@ -656,6 +656,9 @@ void hdd_tx_timeout(struct net_device *dev)
//disabled either because of disassociation or low resource scenarios. In
//case of disassociation it is ok to ignore this. But if associated, we have
//do possible recovery here
//testing underlying data path stall
sme_transportDebug(0, 1);
}

View file

@ -39,8 +39,8 @@ BRIEF DESCRIPTION:
#define QWLAN_VERSION_MAJOR 3
#define QWLAN_VERSION_MINOR 2
#define QWLAN_VERSION_PATCH 1
#define QWLAN_VERSION_EXTRA "f"
#define QWLAN_VERSION_EXTRA "g"
#define QWLAN_VERSION_BUILD 11
#define QWLAN_VERSIONSTR "3.2.1.11f"
#define QWLAN_VERSIONSTR "3.2.1.11g"
#endif /* QWLAN_VERSION_H */

View file

@ -1008,6 +1008,8 @@ typedef struct tagCsrConfigParam
*/
tANI_BOOLEAN fFirstScanOnly2GChnl;
tANI_BOOLEAN fIgnore_chan165;
}tCsrConfigParam;
//Tush

View file

@ -689,6 +689,8 @@ typedef struct tagCsrScanStruct
tDblLinkList scanCmdPendingList;
#endif
tCsrChannel occupiedChannels; //This includes all channels on which candidate APs are found
tANI_BOOLEAN fIgnore_chan165;
}tCsrScanStruct;

View file

@ -327,7 +327,7 @@ eHalStatus csrOpen(tpAniSirGlobal pMac)
pMac->scan.countryCodeDefault[1] = 'S';
pMac->scan.countryCodeDefault[2] = 'I';
//status = eHAL_STATUS_SUCCESS;
}
}
smsLog( pMac, LOGE, FL(" country Code from nvRam %s\n"), pMac->scan.countryCodeDefault );
csrGetRegulatoryDomainForCountry(pMac, pMac->scan.countryCodeDefault, &regId);
WDA_SetRegDomain(pMac, regId);
@ -1280,6 +1280,7 @@ eHalStatus csrChangeDefaultConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pPa
#ifdef WLAN_FEATURE_11AC
pMac->roam.configParam.nVhtChannelWidth = pParam->nVhtChannelWidth;
#endif
pMac->scan.fIgnore_chan165 = pParam->fIgnore_chan165;
}
return status;
@ -1338,6 +1339,7 @@ eHalStatus csrGetConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
pParam->fValidateList = pMac->roam.configParam.fValidateList;
pParam->fEnableBypass11d = pMac->scan.fEnableBypass11d;
pParam->fEnableDFSChnlScan = pMac->scan.fEnableDFSChnlScan;
pParam->fIgnore_chan165= pMac->scan.fIgnore_chan165;
pParam->fScanTwice = pMac->roam.configParam.fScanTwice;
pParam->fFirstScanOnly2GChnl = pMac->scan.fFirstScanOnly2GChnl;

View file

@ -2849,29 +2849,35 @@ void csrApplyChannelPowerCountryInfo( tpAniSirGlobal pMac, tCsrChannel *pChannel
tempNumChannels = CSR_MIN(pChannelList->numChannels, WNI_CFG_VALID_CHANNEL_LIST_LEN);
/* If user doesn't want to scan the DFS channels lets trim them from
the valid channel list*/
if(FALSE == pMac->scan.fEnableDFSChnlScan)
for(i = 0; i< tempNumChannels; i++)
{
for(i = 0; i< tempNumChannels; i++)
{
if(FALSE == pMac->scan.fEnableDFSChnlScan)
{
channelEnabledType =
vos_nv_getChannelEnabledState(pChannelList->channelList[i]);
if( NV_CHANNEL_ENABLE == channelEnabledType)
}
else
{
channelEnabledType = NV_CHANNEL_ENABLE;
}
if( NV_CHANNEL_ENABLE == channelEnabledType)
{
// Ignore the channel 165 for the country INDONESIA
if ( vos_mem_compare(countryCode, "ID", VOS_COUNTRY_CODE_LEN )
&& ( pChannelList->channelList[i] == 165 )
&& ( pMac->scan.fIgnore_chan165 == VOS_TRUE ))
{
ChannelList.channelList[numChannels] =
pChannelList->channelList[i];
continue;
}
else
{
ChannelList.channelList[numChannels] = pChannelList->channelList[i];
numChannels++;
}
}
ChannelList.numChannels = numChannels;
}
}
else
{
ChannelList.numChannels = tempNumChannels;
vos_mem_copy(ChannelList.channelList,
pChannelList->channelList,
ChannelList.numChannels);
}
ChannelList.numChannels = numChannels;
csrSetCfgValidChannelList(pMac, ChannelList.channelList, ChannelList.numChannels);
// extend scan capability
csrSetCfgScanControlList(pMac, countryCode, &ChannelList); // build a scan list based on the channel list : channel# + active/passive scan

View file

@ -87,260 +87,260 @@ static CountryInfoTable_t countryInfoTable =
{
254,
{
{ REGDOMAIN_FCC, {'U', 'S'}}, // USA - must be the first country code
{ REGDOMAIN_WORLD, {'A', 'D'}}, //ANDORRA
{ REGDOMAIN_WORLD,{'A', 'E'}}, //UAE
{ REGDOMAIN_WORLD, {'A', 'F'}}, //AFGHANISTAN
{ REGDOMAIN_NO_5GHZ, {'A', 'G'}}, //ANTIGUA AND BARBUDA
{ REGDOMAIN_NO_5GHZ, {'A', 'I'}}, //ANGUILLA
{ REGDOMAIN_WORLD, {'A', 'L'}}, //ALBANIA
{ REGDOMAIN_NO_5GHZ, {'A', 'M'}}, //ARMENIA
{ REGDOMAIN_WORLD, { 'A', 'N'}}, //NETHERLANDS ANTILLES
{ REGDOMAIN_NO_5GHZ, { 'A', 'O'}}, //ANGOLA
{ REGDOMAIN_WORLD, { 'A', 'Q'}}, //ANTARCTICA
{ REGDOMAIN_HI_5GHZ,{ 'A', 'R'}}, //ARGENTINA
{ REGDOMAIN_FCC, { 'A', 'S'}}, //AMERICAN SOMOA
{ REGDOMAIN_ETSI, { 'A', 'T'}}, //AUSTRIA
{ REGDOMAIN_APAC, { 'A', 'U'}}, //AUSTRALIA
{ REGDOMAIN_NO_5GHZ, { 'A', 'W'}}, //ARUBA
{ REGDOMAIN_WORLD, { 'A', 'X'}}, //ALAND ISLANDS
{ REGDOMAIN_NO_5GHZ, { 'A', 'Z'}}, //AZERBAIJAN
{ REGDOMAIN_WORLD, { 'B', 'A'}}, //BOSNIA AND HERZEGOVINA
{ REGDOMAIN_WORLD, { 'B', 'B'}}, //BARBADOS
{ REGDOMAIN_WORLD, { 'B', 'D'}}, //BANGLADESH
{ REGDOMAIN_ETSI, {'B', 'E'}}, //BELGIUM
{ REGDOMAIN_WORLD, { 'B', 'F'}}, //BURKINA FASO
{ REGDOMAIN_HI_5GHZ, {'B', 'G'}}, //BULGARIA
{ REGDOMAIN_WORLD, { 'B', 'H'}}, //BAHRAIN
{ REGDOMAIN_WORLD, { 'B', 'I'}}, //BURUNDI
{ REGDOMAIN_WORLD, { 'B', 'J'}}, //BENIN
{ REGDOMAIN_ETSI, { 'B', 'M'}}, //BERMUDA
{ REGDOMAIN_WORLD, { 'B', 'N'}}, //BRUNEI DARUSSALAM
{ REGDOMAIN_WORLD,{ 'B', 'O'}}, //BOLIVIA
{ REGDOMAIN_WORLD, {'B', 'R'}}, //BRAZIL
{ REGDOMAIN_WORLD, { 'B', 'S'}}, //BAHAMAS
{ REGDOMAIN_WORLD, { 'B', 'T'}}, //BHUTAN
{ REGDOMAIN_WORLD, { 'B', 'V'}}, //BOUVET ISLAND
{ REGDOMAIN_WORLD, { 'B', 'W'}}, //BOTSWANA
{ REGDOMAIN_WORLD, { 'B', 'Y'}}, //BELARUS
{ REGDOMAIN_WORLD, { 'B', 'Z'}}, //BELIZE
{ REGDOMAIN_FCC, {'C', 'A'}}, //CANADA
{ REGDOMAIN_WORLD, { 'C', 'C'}}, //COCOS (KEELING) ISLANDS
{ REGDOMAIN_WORLD, { 'C', 'D'}}, //CONGO, THE DEMOCRATIC REPUBLIC OF THE
{ REGDOMAIN_WORLD, { 'C', 'F'}}, //CENTRAL AFRICAN REPUBLIC
{ REGDOMAIN_WORLD, { 'C', 'G'}}, //CONGO
{ REGDOMAIN_ETSI, {'C', 'H'}}, //SWITZERLAND
{ REGDOMAIN_WORLD, { 'C', 'I'}}, //COTE D'IVOIRE
{ REGDOMAIN_WORLD, { 'C', 'K'}}, //COOK ISLANDS
{ REGDOMAIN_WORLD, {'C', 'L'}}, //CHILE
{ REGDOMAIN_WORLD, { 'C', 'M'}}, //CAMEROON
{ REGDOMAIN_HI_5GHZ, {'C', 'N'}}, //CHINA
{ REGDOMAIN_WORLD, {'C', 'O'}}, //COLOMBIA
{ REGDOMAIN_WORLD, {'C', 'R'}}, //COSTA RICA
{ REGDOMAIN_WORLD, { 'C', 'U'}}, //CUBA
{ REGDOMAIN_WORLD, { 'C', 'V'}}, //CAPE VERDE
{ REGDOMAIN_WORLD, { 'C', 'X'}}, //CHRISTMAS ISLAND
{ REGDOMAIN_WORLD, {'C', 'Y'}}, //CYPRUS
{ REGDOMAIN_HI_5GHZ, {'C', 'Z'}}, //CZECH REPUBLIC
{ REGDOMAIN_ETSI, {'D', 'E'}}, //GERMANY
{ REGDOMAIN_WORLD, { 'D', 'J'}}, //DJIBOUTI
{ REGDOMAIN_ETSI, {'D', 'K'}}, //DENMARK
{ REGDOMAIN_WORLD, { 'D', 'M'}}, //DOMINICA
{ REGDOMAIN_NO_5GHZ,{ 'D', 'O'}}, //DOMINICAN REPUBLIC
{ REGDOMAIN_WORLD, { 'D', 'Z'}}, //ALGERIA
{ REGDOMAIN_WORLD,{ 'E', 'C'}}, //ECUADOR
{ REGDOMAIN_HI_5GHZ, {'E', 'E'}}, //ESTONIA
{ REGDOMAIN_WORLD, { 'E', 'G'}}, //EGYPT
{ REGDOMAIN_WORLD, { 'E', 'H'}}, //WESTERN SAHARA
{ REGDOMAIN_WORLD, { 'E', 'R'}}, //ERITREA
{ REGDOMAIN_ETSI, {'E', 'S'}}, //SPAIN
{ REGDOMAIN_WORLD, { 'E', 'T'}}, //ETHIOPIA
{ REGDOMAIN_WORLD, {'F', 'I'}}, //FINLAND
{ REGDOMAIN_WORLD, { 'F', 'J'}}, //FIJI
{ REGDOMAIN_WORLD, { 'F', 'K'}}, //FALKLAND ISLANDS (MALVINAS)
{ REGDOMAIN_WORLD, { 'F', 'M'}}, //MICRONESIA, FEDERATED STATES OF
{ REGDOMAIN_WORLD, { 'F', 'O'}}, //FAROE ISLANDS
{ REGDOMAIN_ETSI, {'F', 'R'}}, //FRANCE
{ REGDOMAIN_WORLD, { 'G', 'A'}}, //GABON
{ REGDOMAIN_ETSI, {'G', 'B'}}, //UNITED KINGDOM
{ REGDOMAIN_WORLD, { 'G', 'D'}}, //GRENADA
{ REGDOMAIN_HI_5GHZ, { 'G', 'E'}}, //GEORGIA
{ REGDOMAIN_WORLD, { 'G', 'F'}}, //FRENCH GUIANA
{ REGDOMAIN_ETSI, {'G', 'G'}}, //GUERNSEY
{ REGDOMAIN_WORLD, { 'G', 'H'}}, //GHANA
{ REGDOMAIN_WORLD, {'G', 'I'}}, //GIBRALTAR
{ REGDOMAIN_WORLD, { 'G', 'L'}}, //GREENLAND
{ REGDOMAIN_WORLD, { 'G', 'M'}}, //GAMBIA
{ REGDOMAIN_WORLD, { 'G', 'N'}}, //GUINEA
{ REGDOMAIN_WORLD, { 'G', 'P'}}, //GUADELOUPE
{ REGDOMAIN_WORLD, { 'G', 'Q'}}, //EQUATORIAL GUINEA
{ REGDOMAIN_ETSI, {'G', 'R'}}, //GREECE
{ REGDOMAIN_WORLD, { 'G', 'S'}}, //SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS
{ REGDOMAIN_WORLD,{ 'G', 'T'}}, //GUATEMALA
{ REGDOMAIN_WORLD, { 'G', 'U'}}, //GUAM
{ REGDOMAIN_WORLD, { 'G', 'W'}}, //GUINEA-BISSAU
{ REGDOMAIN_WORLD, { 'G', 'Y'}}, //GUYANA
{ REGDOMAIN_WORLD, {'H', 'K'}}, //HONGKONG
{ REGDOMAIN_WORLD, { 'H', 'M'}}, //HEARD ISLAND AND MCDONALD ISLANDS
{ REGDOMAIN_WORLD,{'H', 'N'}}, //HONDURAS
{ REGDOMAIN_HI_5GHZ, {'H', 'R'}}, //CROATIA
{ REGDOMAIN_WORLD, { 'H', 'T'}}, //HAITI
{ REGDOMAIN_HI_5GHZ, {'H', 'U'}}, //HUNGARY
{ REGDOMAIN_APAC, { 'I', 'D'}}, //INDONESIA
{ REGDOMAIN_ETSI, {'I', 'E'}}, //IRELAND
{ REGDOMAIN_WORLD, {'I', 'L'}}, //ISREAL
{ REGDOMAIN_ETSI, {'I', 'M'}}, //ISLE OF MAN
{ REGDOMAIN_APAC, {'I', 'N'}}, //INDIA
{ REGDOMAIN_ETSI, { 'I', 'O'}}, //BRITISH INDIAN OCEAN TERRITORY
{ REGDOMAIN_WORLD, { 'I', 'Q'}}, //IRAQ
{ REGDOMAIN_WORLD, { 'I', 'R'}}, //IRAN, ISLAMIC REPUBLIC OF
{ REGDOMAIN_WORLD, {'I', 'S'}}, //ICELAND
{ REGDOMAIN_ETSI, {'I', 'T'}}, //ITALY
{ REGDOMAIN_ETSI, {'J', 'E'}}, //JERSEY
{ REGDOMAIN_WORLD, { 'J', 'M'}}, //JAMAICA
{ REGDOMAIN_WORLD, { 'J', 'O'}}, //JORDAN
{ REGDOMAIN_JAPAN, {'J', 'P'}}, //JAPAN
{ REGDOMAIN_WORLD, { 'K', 'E'}}, //KENYA
{ REGDOMAIN_WORLD, { 'K', 'G'}}, //KYRGYZSTAN
{ REGDOMAIN_WORLD, { 'K', 'H'}}, //CAMBODIA
{ REGDOMAIN_WORLD, { 'K', 'I'}}, //KIRIBATI
{ REGDOMAIN_WORLD, { 'K', 'M'}}, //COMOROS
{ REGDOMAIN_WORLD, { 'K', 'N'}}, //SAINT KITTS AND NEVIS
{ REGDOMAIN_KOREA, { 'K', 'P'}}, //KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF
{ REGDOMAIN_KOREA, {'K', 'R'}}, //KOREA, REPUBLIC OF
{ REGDOMAIN_WORLD, { 'K', 'W'}}, //KUWAIT
{ REGDOMAIN_WORLD, { 'K', 'Y'}}, //CAYMAN ISLANDS
{ REGDOMAIN_WORLD, { 'K', 'Z'}}, //KAZAKHSTAN
{ REGDOMAIN_WORLD, { 'L', 'A'}}, //LAO PEOPLE'S DEMOCRATIC REPUBLIC
{ REGDOMAIN_WORLD, { 'L', 'B'}}, //LEBANON
{ REGDOMAIN_WORLD, { 'L', 'C'}}, //SAINT LUCIA
{ REGDOMAIN_ETSI, {'L', 'I'}}, //LIECHTENSTEIN
{ REGDOMAIN_WORLD, { 'L', 'K'}}, //SRI LANKA
{ REGDOMAIN_WORLD, { 'L', 'R'}}, //LIBERIA
{ REGDOMAIN_WORLD, { 'L', 'S'}}, //LESOTHO
{ REGDOMAIN_HI_5GHZ, {'L', 'T'}}, //LITHUANIA
{ REGDOMAIN_ETSI, {'L', 'U'}}, //LUXEMBOURG
{ REGDOMAIN_HI_5GHZ, {'L', 'V'}}, //LATVIA
{ REGDOMAIN_WORLD, { 'L', 'Y'}}, //LIBYAN ARAB JAMAHIRIYA
{ REGDOMAIN_WORLD, { 'M', 'A'}}, //MOROCCO
{ REGDOMAIN_ETSI, {'M', 'C'}}, //MONACO
{ REGDOMAIN_WORLD, { 'M', 'D'}}, //MOLDOVA, REPUBLIC OF
{ REGDOMAIN_WORLD, { 'M', 'E'}}, //MONTENEGRO
{ REGDOMAIN_WORLD, { 'M', 'G'}}, //MADAGASCAR
{ REGDOMAIN_WORLD, { 'M', 'H'}}, //MARSHALL ISLANDS
{ REGDOMAIN_WORLD, { 'M', 'K'}}, //MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF
{ REGDOMAIN_WORLD, { 'M', 'L'}}, //MALI
{ REGDOMAIN_WORLD, { 'M', 'M'}}, //MYANMAR
{ REGDOMAIN_HI_5GHZ, { 'M', 'N'}}, //MONGOLIA
{ REGDOMAIN_WORLD, { 'M', 'O'}}, //MACAO
{ REGDOMAIN_WORLD, { 'M', 'P'}}, //NORTHERN MARIANA ISLANDS
{ REGDOMAIN_WORLD, { 'M', 'Q'}}, //MARTINIQUE
{ REGDOMAIN_WORLD, { 'M', 'R'}}, //MAURITANIA
{ REGDOMAIN_WORLD, { 'M', 'S'}}, //MONTSERRAT
{ REGDOMAIN_WORLD, {'M', 'T'}}, //MALTA
{ REGDOMAIN_WORLD, { 'M', 'U'}}, //MAURITIUS
{ REGDOMAIN_WORLD, { 'M', 'V'}}, //MALDIVES
{ REGDOMAIN_WORLD, { 'M', 'W'}}, //MALAWI
{ REGDOMAIN_WORLD, {'M', 'X'}}, //MEXICO
{ REGDOMAIN_HI_5GHZ,{ 'M', 'Y'}}, //MALAYSIA
{ REGDOMAIN_WORLD, { 'M', 'Z'}}, //MOZAMBIQUE
{ REGDOMAIN_WORLD, { 'N', 'A'}}, //NAMIBIA
{ REGDOMAIN_WORLD, { 'N', 'C'}}, //NEW CALEDONIA
{ REGDOMAIN_WORLD, { 'N', 'E'}}, //NIGER
{ REGDOMAIN_WORLD, { 'N', 'F'}}, //NORFOLD ISLAND
{ REGDOMAIN_WORLD, { 'N', 'G'}}, //NIGERIA
{ REGDOMAIN_WORLD,{ 'N', 'I'}}, //NICARAGUA
{ REGDOMAIN_ETSI, {'N', 'L'}}, //NETHERLANDS
{ REGDOMAIN_WORLD, {'N', 'O'}}, //NORWAY
{ REGDOMAIN_WORLD, { 'N', 'P'}}, //NEPAL
{ REGDOMAIN_WORLD, { 'N', 'R'}}, //NAURU
{ REGDOMAIN_WORLD, { 'N', 'U'}}, //NIUE
{ REGDOMAIN_ETSI, {'N', 'Z'}}, //NEW ZEALAND
{ REGDOMAIN_WORLD, { 'O', 'M'}}, //OMAN
{ REGDOMAIN_WORLD, {'P', 'A'}}, //PANAMA
{ REGDOMAIN_WORLD,{ 'P', 'E'}}, //PERU
{ REGDOMAIN_WORLD, { 'P', 'F'}}, //FRENCH POLYNESIA
{ REGDOMAIN_WORLD, { 'P', 'G'}}, //PAPUA NEW GUINEA
{ REGDOMAIN_WORLD, {'P', 'H'}}, //PHILIPPINES
{ REGDOMAIN_WORLD, { 'P', 'K'}}, //PAKISTAN
{ REGDOMAIN_ETSI, {'P', 'L'}}, //POLAND
{ REGDOMAIN_WORLD, { 'P', 'M'}}, //SAINT PIERRE AND MIQUELON
{ REGDOMAIN_WORLD, { 'P', 'N'}}, //WORLDPITCAIRN
{ REGDOMAIN_FCC, {'P', 'R'}}, //PUERTO RICO
{ REGDOMAIN_WORLD, {'P', 'S'}}, //PALESTINIAN TERRITORY, OCCUPIED
{ REGDOMAIN_ETSI, {'P', 'T'}}, //PORTUGAL
{ REGDOMAIN_WORLD, { 'P', 'W'}}, //PALAU
{ REGDOMAIN_WORLD, { 'P', 'Y'}}, //PARAGUAY
{ REGDOMAIN_WORLD, { 'Q', 'A'}}, //QATAR
{ REGDOMAIN_WORLD, { 'R', 'E'}}, //REUNION
{ REGDOMAIN_HI_5GHZ, {'R', 'O'}}, //ROMANIA
{ REGDOMAIN_HI_5GHZ, {'R', 'S'}}, //SERBIA
{ REGDOMAIN_WORLD, {'R', 'U'}}, //RUSSIA
{ REGDOMAIN_WORLD, { 'R', 'W'}}, //RWANDA
{ REGDOMAIN_WORLD, {'S', 'A'}}, //SAUDI ARABIA
{ REGDOMAIN_WORLD, { 'S', 'B'}}, //SOLOMON ISLANDS
{ REGDOMAIN_ETSI, {'S', 'C'}}, //SEYCHELLES
{ REGDOMAIN_WORLD, { 'S', 'D'}}, //SUDAN
{ REGDOMAIN_ETSI, {'S', 'E'}}, //SWEDEN
{ REGDOMAIN_APAC, {'S', 'G'}}, //SINGAPORE
{ REGDOMAIN_WORLD, { 'S', 'H'}}, //SAINT HELENA
{ REGDOMAIN_HI_5GHZ, {'S', 'I'}}, //SLOVENNIA
{ REGDOMAIN_WORLD, { 'S', 'J'}}, //SVALBARD AND JAN MAYEN
{ REGDOMAIN_ETSI, {'S', 'K'}}, //SLOVAKIA
{ REGDOMAIN_WORLD, { 'S', 'L'}}, //SIERRA LEONE
{ REGDOMAIN_WORLD, { 'S', 'M'}}, //SAN MARINO
{ REGDOMAIN_WORLD, { 'S', 'N'}}, //SENEGAL
{ REGDOMAIN_WORLD, { 'S', 'O'}}, //SOMALIA
{ REGDOMAIN_WORLD, { 'S', 'R'}}, //SURINAME
{ REGDOMAIN_WORLD, { 'S', 'T'}}, //SAO TOME AND PRINCIPE
{ REGDOMAIN_WORLD, {'S', 'V'}}, //EL SALVADOR
{ REGDOMAIN_WORLD, { 'S', 'Y'}}, //SYRIAN ARAB REPUBLIC
{ REGDOMAIN_WORLD, { 'S', 'Z'}}, //SWAZILAND
{ REGDOMAIN_WORLD, { 'T', 'C'}}, //TURKS AND CAICOS ISLANDS
{ REGDOMAIN_WORLD, { 'T', 'D'}}, //CHAD
{ REGDOMAIN_WORLD, { 'T', 'F'}}, //FRENCH SOUTHERN TERRITORIES
{ REGDOMAIN_WORLD, { 'T', 'G'}}, //TOGO
{ REGDOMAIN_WORLD,{ 'T', 'H'}}, //THAILAND
{ REGDOMAIN_WORLD, { 'T', 'J'}}, //TAJIKISTAN
{ REGDOMAIN_WORLD, { 'T', 'K'}}, //TOKELAU
{ REGDOMAIN_WORLD, { 'T', 'L'}}, //TIMOR-LESTE
{ REGDOMAIN_WORLD, { 'T', 'M'}}, //TURKMENISTAN
{ REGDOMAIN_WORLD, { 'T', 'N'}}, //TUNISIA
{ REGDOMAIN_WORLD, { 'T', 'O'}}, //TONGA
{ REGDOMAIN_WORLD, {'T', 'R'}}, //TURKEY
{ REGDOMAIN_WORLD, { 'T', 'T'}}, //TRINIDAD AND TOBAGO
{ REGDOMAIN_WORLD, { 'T', 'V'}}, //TUVALU
{ REGDOMAIN_HI_5GHZ,{ 'T', 'W'}}, //TAIWAN, PROVINCE OF CHINA
{ REGDOMAIN_WORLD, { 'T', 'Z'}}, //TANZANIA, UNITED REPUBLIC OF
{ REGDOMAIN_HI_5GHZ,{ 'U', 'A'}}, //UKRAINE
{ REGDOMAIN_WORLD, { 'U', 'G'}}, //UGANDA
{ REGDOMAIN_FCC, {'U', 'M'}}, //UNITED STATES MINOR OUTLYING ISLANDS
{ REGDOMAIN_WORLD,{ 'U', 'Y'}}, //URUGUAY
{ REGDOMAIN_HI_5GHZ, { 'U', 'Z'}}, //UZBEKISTAN
{ REGDOMAIN_ETSI, {'V', 'A'}}, //HOLY SEE (VATICAN CITY STATE)
{ REGDOMAIN_WORLD, { 'V', 'C'}}, //SAINT VINCENT AND THE GRENADINES
{ REGDOMAIN_HI_5GHZ,{ 'V', 'E'}}, //VENEZUELA
{ REGDOMAIN_ETSI, {'V', 'G'}}, //VIRGIN ISLANDS, BRITISH
{ REGDOMAIN_FCC, {'V', 'I'}}, //VIRGIN ISLANDS, US
{ REGDOMAIN_WORLD, {'V', 'N'}}, //VIET NAM
{ REGDOMAIN_WORLD, { 'V', 'U'}}, //VANUATU
{ REGDOMAIN_WORLD, { 'W', 'F'}}, //WALLIS AND FUTUNA
{ REGDOMAIN_WORLD, { 'W', 'S'}}, //SOMOA
{ REGDOMAIN_WORLD, { 'Y', 'E'}}, //YEMEN
{ REGDOMAIN_WORLD, { 'Y', 'T'}}, //MAYOTTE
{ REGDOMAIN_WORLD, {'Z', 'A'}}, //SOUTH AFRICA
{ REGDOMAIN_WORLD, { 'Z', 'M'}}, //ZAMBIA
{ REGDOMAIN_WORLD, { 'Z', 'W'}}, //ZIMBABWE
{ REGDOMAIN_KOREA, {'K', '1'}}, //Korea alternate 1
{ REGDOMAIN_KOREA, {'K', '2'}}, //Korea alternate 2
{ REGDOMAIN_KOREA, {'K', '3'}}, //Korea alternate 3
{ REGDOMAIN_KOREA, {'K', '4'}}, //Korea alternate 4
{ REGDOMAIN_ETSI, {'E', 'U'}}, //Europe (SSGFI)
{ REGDOMAIN_JAPAN, {'J', '1'}}, //Japan alternate 1
{ REGDOMAIN_JAPAN, {'J', '2'}}, //Japan alternate 2
{ REGDOMAIN_JAPAN, {'J', '3'}}, //Japan alternate 3
{ REGDOMAIN_JAPAN, {'J', '4'}}, //Japan alternate 4
{ REGDOMAIN_JAPAN, {'J', '5'}} //Japan alternate 5
{ REGDOMAIN_FCC, {'U', 'S'}}, //USA - must be the first country code
{ REGDOMAIN_ETSI, {'A', 'D'}}, //ANDORRA
{ REGDOMAIN_ETSI, {'A', 'E'}}, //UAE
{ REGDOMAIN_N_AMER_EXC_FCC, {'A', 'F'}}, //AFGHANISTAN
{ REGDOMAIN_WORLD, {'A', 'G'}}, //ANTIGUA AND BARBUDA
{ REGDOMAIN_FCC, {'A', 'I'}}, //ANGUILLA
{ REGDOMAIN_NO_5GHZ, {'A', 'L'}}, //ALBANIA
{ REGDOMAIN_N_AMER_EXC_FCC, {'A', 'M'}}, //ARMENIA
{ REGDOMAIN_ETSI, {'A', 'N'}}, //NETHERLANDS ANTILLES
{ REGDOMAIN_NO_5GHZ, {'A', 'O'}}, //ANGOLA
{ REGDOMAIN_WORLD, {'A', 'Q'}}, //ANTARCTICA
{ REGDOMAIN_WORLD, {'A', 'R'}}, //ARGENTINA
{ REGDOMAIN_FCC, {'A', 'S'}}, //AMERICAN SOMOA
{ REGDOMAIN_ETSI, {'A', 'T'}}, //AUSTRIA
{ REGDOMAIN_APAC, {'A', 'U'}}, //AUSTRALIA
{ REGDOMAIN_ETSI, {'A', 'W'}}, //ARUBA
{ REGDOMAIN_WORLD, {'A', 'X'}}, //ALAND ISLANDS
{ REGDOMAIN_N_AMER_EXC_FCC, {'A', 'Z'}}, //AZERBAIJAN
{ REGDOMAIN_ETSI, {'B', 'A'}}, //BOSNIA AND HERZEGOVINA
{ REGDOMAIN_APAC, {'B', 'B'}}, //BARBADOS
{ REGDOMAIN_NO_5GHZ, {'B', 'D'}}, //BANGLADESH
{ REGDOMAIN_ETSI, {'B', 'E'}}, //BELGIUM
{ REGDOMAIN_HI_5GHZ, {'B', 'F'}}, //BURKINA FASO
{ REGDOMAIN_ETSI, {'B', 'G'}}, //BULGARIA
{ REGDOMAIN_APAC, {'B', 'H'}}, //BAHRAIN
{ REGDOMAIN_NO_5GHZ, {'B', 'I'}}, //BURUNDI
{ REGDOMAIN_NO_5GHZ, {'B', 'J'}}, //BENIN
{ REGDOMAIN_FCC, {'B', 'M'}}, //BERMUDA
{ REGDOMAIN_APAC, {'B', 'N'}}, //BRUNEI DARUSSALAM
{ REGDOMAIN_HI_5GHZ, {'B', 'O'}}, //BOLIVIA
{ REGDOMAIN_WORLD, {'B', 'R'}}, //BRAZIL
{ REGDOMAIN_APAC, {'B', 'S'}}, //BAHAMAS
{ REGDOMAIN_NO_5GHZ, {'B', 'T'}}, //BHUTAN
{ REGDOMAIN_WORLD, {'B', 'V'}}, //BOUVET ISLAND
{ REGDOMAIN_ETSI, {'B', 'W'}}, //BOTSWANA
{ REGDOMAIN_ETSI, {'B', 'Y'}}, //BELARUS
{ REGDOMAIN_HI_5GHZ, {'B', 'Z'}}, //BELIZE
{ REGDOMAIN_FCC, {'C', 'A'}}, //CANADA
{ REGDOMAIN_WORLD, {'C', 'C'}}, //COCOS (KEELING) ISLANDS
{ REGDOMAIN_NO_5GHZ, {'C', 'D'}}, //CONGO, THE DEMOCRATIC REPUBLIC OF THE
{ REGDOMAIN_NO_5GHZ, {'C', 'F'}}, //CENTRAL AFRICAN REPUBLIC
{ REGDOMAIN_NO_5GHZ, {'C', 'G'}}, //CONGO
{ REGDOMAIN_ETSI, {'C', 'H'}}, //SWITZERLAND
{ REGDOMAIN_NO_5GHZ, {'C', 'I'}}, //COTE D'IVOIRE
{ REGDOMAIN_WORLD, {'C', 'K'}}, //COOK ISLANDS
{ REGDOMAIN_APAC, {'C', 'L'}}, //CHILE
{ REGDOMAIN_NO_5GHZ, {'C', 'M'}}, //CAMEROON
{ REGDOMAIN_HI_5GHZ, {'C', 'N'}}, //CHINA
{ REGDOMAIN_APAC, {'C', 'O'}}, //COLOMBIA
{ REGDOMAIN_APAC, {'C', 'R'}}, //COSTA RICA
{ REGDOMAIN_NO_5GHZ, {'C', 'U'}}, //CUBA
{ REGDOMAIN_ETSI, {'C', 'V'}}, //CAPE VERDE
{ REGDOMAIN_WORLD, {'C', 'X'}}, //CHRISTMAS ISLAND
{ REGDOMAIN_ETSI, {'C', 'Y'}}, //CYPRUS
{ REGDOMAIN_ETSI, {'C', 'Z'}}, //CZECH REPUBLIC
{ REGDOMAIN_ETSI, {'D', 'E'}}, //GERMANY
{ REGDOMAIN_NO_5GHZ, {'D', 'J'}}, //DJIBOUTI
{ REGDOMAIN_ETSI, {'D', 'K'}}, //DENMARK
{ REGDOMAIN_WORLD, {'D', 'M'}}, //DOMINICA
{ REGDOMAIN_APAC, {'D', 'O'}}, //DOMINICAN REPUBLIC
{ REGDOMAIN_NO_5GHZ, {'D', 'Z'}}, //ALGERIA
{ REGDOMAIN_APAC, {'E', 'C'}}, //ECUADOR
{ REGDOMAIN_ETSI, {'E', 'E'}}, //ESTONIA
{ REGDOMAIN_N_AMER_EXC_FCC, {'E', 'G'}}, //EGYPT
{ REGDOMAIN_WORLD, {'E', 'H'}}, //WESTERN SAHARA
{ REGDOMAIN_NO_5GHZ, {'E', 'R'}}, //ERITREA
{ REGDOMAIN_ETSI, {'E', 'S'}}, //SPAIN
{ REGDOMAIN_ETSI, {'E', 'T'}}, //ETHIOPIA
{ REGDOMAIN_ETSI, {'E', 'U'}}, //Europe (SSGFI)
{ REGDOMAIN_ETSI, {'F', 'I'}}, //FINLAND
{ REGDOMAIN_NO_5GHZ, {'F', 'J'}}, //FIJI
{ REGDOMAIN_WORLD, {'F', 'K'}}, //FALKLAND ISLANDS (MALVINAS)
{ REGDOMAIN_WORLD, {'F', 'M'}}, //MICRONESIA, FEDERATED STATES OF
{ REGDOMAIN_WORLD, {'F', 'O'}}, //FAROE ISLANDS
{ REGDOMAIN_ETSI, {'F', 'R'}}, //FRANCE
{ REGDOMAIN_NO_5GHZ, {'G', 'A'}}, //GABON
{ REGDOMAIN_ETSI, {'G', 'B'}}, //UNITED KINGDOM
{ REGDOMAIN_WORLD, {'G', 'D'}}, //GRENADA
{ REGDOMAIN_ETSI, {'G', 'E'}}, //GEORGIA
{ REGDOMAIN_ETSI, {'G', 'F'}}, //FRENCH GUIANA
{ REGDOMAIN_WORLD, {'G', 'G'}}, //GUERNSEY
{ REGDOMAIN_WORLD, {'G', 'H'}}, //GHANA
{ REGDOMAIN_WORLD, {'G', 'I'}}, //GIBRALTAR
{ REGDOMAIN_ETSI, {'G', 'L'}}, //GREENLAND
{ REGDOMAIN_NO_5GHZ, {'G', 'M'}}, //GAMBIA
{ REGDOMAIN_NO_5GHZ, {'G', 'N'}}, //GUINEA
{ REGDOMAIN_ETSI, {'G', 'P'}}, //GUADELOUPE
{ REGDOMAIN_NO_5GHZ, {'G', 'Q'}}, //EQUATORIAL GUINEA
{ REGDOMAIN_ETSI, {'G', 'R'}}, //GREECE
{ REGDOMAIN_WORLD, {'G', 'S'}}, //SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS
{ REGDOMAIN_APAC, {'G', 'T'}}, //GUATEMALA
{ REGDOMAIN_APAC, {'G', 'U'}}, //GUAM
{ REGDOMAIN_NO_5GHZ, {'G', 'W'}}, //GUINEA-BISSAU
{ REGDOMAIN_HI_5GHZ, {'G', 'Y'}}, //GUYANA
{ REGDOMAIN_WORLD, {'H', 'K'}}, //HONGKONG
{ REGDOMAIN_WORLD, {'H', 'M'}}, //HEARD ISLAND AND MCDONALD ISLANDS
{ REGDOMAIN_WORLD, {'H', 'N'}}, //HONDURAS
{ REGDOMAIN_ETSI, {'H', 'R'}}, //CROATIA
{ REGDOMAIN_ETSI, {'H', 'T'}}, //HAITI
{ REGDOMAIN_ETSI, {'H', 'U'}}, //HUNGARY
{ REGDOMAIN_HI_5GHZ, {'I', 'D'}}, //INDONESIA
{ REGDOMAIN_ETSI, {'I', 'E'}}, //IRELAND
{ REGDOMAIN_NO_5GHZ, {'I', 'L'}}, //ISRAEL
{ REGDOMAIN_WORLD, {'I', 'M'}}, //ISLE OF MAN
{ REGDOMAIN_APAC, {'I', 'N'}}, //INDIA
{ REGDOMAIN_WORLD, {'I', 'O'}}, //BRITISH INDIAN OCEAN TERRITORY
{ REGDOMAIN_NO_5GHZ, {'I', 'Q'}}, //IRAQ
{ REGDOMAIN_HI_5GHZ, {'I', 'R'}}, //IRAN, ISLAMIC REPUBLIC OF
{ REGDOMAIN_ETSI, {'I', 'S'}}, //ICELAND
{ REGDOMAIN_ETSI, {'I', 'T'}}, //ITALY
{ REGDOMAIN_JAPAN, {'J', '1'}}, //Japan alternate 1
{ REGDOMAIN_JAPAN, {'J', '2'}}, //Japan alternate 2
{ REGDOMAIN_JAPAN, {'J', '3'}}, //Japan alternate 3
{ REGDOMAIN_JAPAN, {'J', '4'}}, //Japan alternate 4
{ REGDOMAIN_JAPAN, {'J', '5'}}, //Japan alternate 5
{ REGDOMAIN_WORLD, {'J', 'E'}}, //JERSEY
{ REGDOMAIN_WORLD, {'J', 'M'}}, //JAMAICA
{ REGDOMAIN_WORLD, {'J', 'O'}}, //JORDAN
{ REGDOMAIN_JAPAN, {'J', 'P'}}, //JAPAN
{ REGDOMAIN_KOREA, {'K', '1'}}, //Korea alternate 1
{ REGDOMAIN_KOREA, {'K', '2'}}, //Korea alternate 2
{ REGDOMAIN_KOREA, {'K', '3'}}, //Korea alternate 3
{ REGDOMAIN_KOREA, {'K', '4'}}, //Korea alternate 4
{ REGDOMAIN_HI_5GHZ, {'K', 'E'}}, //KENYA
{ REGDOMAIN_NO_5GHZ, {'K', 'G'}}, //KYRGYZSTAN
{ REGDOMAIN_ETSI, {'K', 'H'}}, //CAMBODIA
{ REGDOMAIN_WORLD, {'K', 'I'}}, //KIRIBATI
{ REGDOMAIN_NO_5GHZ, {'K', 'M'}}, //COMOROS
{ REGDOMAIN_WORLD, {'K', 'N'}}, //SAINT KITTS AND NEVIS
{ REGDOMAIN_WORLD, {'K', 'P'}}, //KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF
{ REGDOMAIN_KOREA, {'K', 'R'}}, //KOREA, REPUBLIC OF
{ REGDOMAIN_N_AMER_EXC_FCC, {'K', 'W'}}, //KUWAIT
{ REGDOMAIN_FCC, {'K', 'Y'}}, //CAYMAN ISLANDS
{ REGDOMAIN_NO_5GHZ, {'K', 'Z'}}, //KAZAKHSTAN
{ REGDOMAIN_WORLD, {'L', 'A'}}, //LAO PEOPLE'S DEMOCRATIC REPUBLIC
{ REGDOMAIN_HI_5GHZ, {'L', 'B'}}, //LEBANON
{ REGDOMAIN_WORLD, {'L', 'C'}}, //SAINT LUCIA
{ REGDOMAIN_ETSI, {'L', 'I'}}, //LIECHTENSTEIN
{ REGDOMAIN_WORLD, {'L', 'K'}}, //SRI LANKA
{ REGDOMAIN_WORLD, {'L', 'R'}}, //LIBERIA
{ REGDOMAIN_ETSI, {'L', 'S'}}, //LESOTHO
{ REGDOMAIN_ETSI, {'L', 'T'}}, //LITHUANIA
{ REGDOMAIN_ETSI, {'L', 'U'}}, //LUXEMBOURG
{ REGDOMAIN_ETSI, {'L', 'V'}}, //LATVIA
{ REGDOMAIN_NO_5GHZ, {'L', 'Y'}}, //LIBYAN ARAB JAMAHIRIYA
{ REGDOMAIN_NO_5GHZ, {'M', 'A'}}, //MOROCCO
{ REGDOMAIN_N_AMER_EXC_FCC, {'M', 'C'}}, //MONACO
{ REGDOMAIN_ETSI, {'M', 'D'}}, //MOLDOVA, REPUBLIC OF
{ REGDOMAIN_ETSI, {'M', 'E'}}, //MONTENEGRO
{ REGDOMAIN_NO_5GHZ, {'M', 'G'}}, //MADAGASCAR
{ REGDOMAIN_WORLD, {'M', 'H'}}, //MARSHALL ISLANDS
{ REGDOMAIN_ETSI, {'M', 'K'}}, //MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF
{ REGDOMAIN_NO_5GHZ, {'M', 'L'}}, //MALI
{ REGDOMAIN_WORLD, {'M', 'M'}}, //MYANMAR
{ REGDOMAIN_NO_5GHZ, {'M', 'N'}}, //MONGOLIA
{ REGDOMAIN_APAC, {'M', 'O'}}, //MACAO
{ REGDOMAIN_FCC, {'M', 'P'}}, //NORTHERN MARIANA ISLANDS
{ REGDOMAIN_ETSI, {'M', 'Q'}}, //MARTINIQUE
{ REGDOMAIN_ETSI, {'M', 'R'}}, //MAURITANIA
{ REGDOMAIN_ETSI, {'M', 'S'}}, //MONTSERRAT
{ REGDOMAIN_ETSI, {'M', 'T'}}, //MALTA
{ REGDOMAIN_ETSI, {'M', 'U'}}, //MAURITIUS
{ REGDOMAIN_APAC, {'M', 'V'}}, //MALDIVES
{ REGDOMAIN_HI_5GHZ, {'M', 'W'}}, //MALAWI
{ REGDOMAIN_APAC, {'M', 'X'}}, //MEXICO
{ REGDOMAIN_APAC, {'M', 'Y'}}, //MALAYSIA
{ REGDOMAIN_WORLD, {'M', 'Z'}}, //MOZAMBIQUE
{ REGDOMAIN_WORLD, {'N', 'A'}}, //NAMIBIA
{ REGDOMAIN_NO_5GHZ, {'N', 'C'}}, //NEW CALEDONIA
{ REGDOMAIN_WORLD, {'N', 'E'}}, //NIGER
{ REGDOMAIN_WORLD, {'N', 'F'}}, //NORFOLD ISLAND
{ REGDOMAIN_WORLD, {'N', 'G'}}, //NIGERIA
{ REGDOMAIN_WORLD, {'N', 'I'}}, //NICARAGUA
{ REGDOMAIN_ETSI, {'N', 'L'}}, //NETHERLANDS
{ REGDOMAIN_ETSI, {'N', 'O'}}, //NORWAY
{ REGDOMAIN_HI_5GHZ, {'N', 'P'}}, //NEPAL
{ REGDOMAIN_NO_5GHZ, {'N', 'R'}}, //NAURU
{ REGDOMAIN_WORLD, {'N', 'U'}}, //NIUE
{ REGDOMAIN_APAC, {'N', 'Z'}}, //NEW ZEALAND
{ REGDOMAIN_WORLD, {'O', 'M'}}, //OMAN
{ REGDOMAIN_APAC, {'P', 'A'}}, //PANAMA
{ REGDOMAIN_HI_5GHZ, {'P', 'E'}}, //PERU
{ REGDOMAIN_ETSI, {'P', 'F'}}, //FRENCH POLYNESIA
{ REGDOMAIN_APAC, {'P', 'G'}}, //PAPUA NEW GUINEA
{ REGDOMAIN_HI_5GHZ, {'P', 'H'}}, //PHILIPPINES
{ REGDOMAIN_HI_5GHZ, {'P', 'K'}}, //PAKISTAN
{ REGDOMAIN_ETSI, {'P', 'L'}}, //POLAND
{ REGDOMAIN_WORLD, {'P', 'M'}}, //SAINT PIERRE AND MIQUELON
{ REGDOMAIN_WORLD, {'P', 'N'}}, //WORLDPITCAIRN
{ REGDOMAIN_FCC, {'P', 'R'}}, //PUERTO RICO
{ REGDOMAIN_WORLD, {'P', 'S'}}, //PALESTINIAN TERRITORY, OCCUPIED
{ REGDOMAIN_ETSI, {'P', 'T'}}, //PORTUGAL
{ REGDOMAIN_WORLD, {'P', 'W'}}, //PALAU
{ REGDOMAIN_WORLD, {'P', 'Y'}}, //PARAGUAY
{ REGDOMAIN_HI_5GHZ, {'Q', 'A'}}, //QATAR
{ REGDOMAIN_ETSI, {'R', 'E'}}, //REUNION
{ REGDOMAIN_ETSI, {'R', 'O'}}, //ROMANIA
{ REGDOMAIN_ETSI, {'R', 'S'}}, //SERBIA
{ REGDOMAIN_HI_5GHZ, {'R', 'U'}}, //RUSSIA
{ REGDOMAIN_HI_5GHZ, {'R', 'W'}}, //RWANDA
{ REGDOMAIN_APAC, {'S', 'A'}}, //SAUDI ARABIA
{ REGDOMAIN_NO_5GHZ, {'S', 'B'}}, //SOLOMON ISLANDS
{ REGDOMAIN_NO_5GHZ, {'S', 'C'}}, //SEYCHELLES
{ REGDOMAIN_WORLD, {'S', 'D'}}, //SUDAN
{ REGDOMAIN_ETSI, {'S', 'E'}}, //SWEDEN
{ REGDOMAIN_APAC, {'S', 'G'}}, //SINGAPORE
{ REGDOMAIN_WORLD, {'S', 'H'}}, //SAINT HELENA
{ REGDOMAIN_ETSI, {'S', 'I'}}, //SLOVENNIA
{ REGDOMAIN_WORLD, {'S', 'J'}}, //SVALBARD AND JAN MAYEN
{ REGDOMAIN_ETSI, {'S', 'K'}}, //SLOVAKIA
{ REGDOMAIN_WORLD, {'S', 'L'}}, //SIERRA LEONE
{ REGDOMAIN_ETSI, {'S', 'M'}}, //SAN MARINO
{ REGDOMAIN_ETSI, {'S', 'N'}}, //SENEGAL
{ REGDOMAIN_NO_5GHZ, {'S', 'O'}}, //SOMALIA
{ REGDOMAIN_NO_5GHZ, {'S', 'R'}}, //SURINAME
{ REGDOMAIN_WORLD, {'S', 'T'}}, //SAO TOME AND PRINCIPE
{ REGDOMAIN_APAC, {'S', 'V'}}, //EL SALVADOR
{ REGDOMAIN_NO_5GHZ, {'S', 'Y'}}, //SYRIAN ARAB REPUBLIC
{ REGDOMAIN_NO_5GHZ, {'S', 'Z'}}, //SWAZILAND
{ REGDOMAIN_ETSI, {'T', 'C'}}, //TURKS AND CAICOS ISLANDS
{ REGDOMAIN_NO_5GHZ, {'T', 'D'}}, //CHAD
{ REGDOMAIN_ETSI, {'T', 'F'}}, //FRENCH SOUTHERN TERRITORIES
{ REGDOMAIN_NO_5GHZ, {'T', 'G'}}, //TOGO
{ REGDOMAIN_WORLD, {'T', 'H'}}, //THAILAND
{ REGDOMAIN_NO_5GHZ, {'T', 'J'}}, //TAJIKISTAN
{ REGDOMAIN_WORLD, {'T', 'K'}}, //TOKELAU
{ REGDOMAIN_WORLD, {'T', 'L'}}, //TIMOR-LESTE
{ REGDOMAIN_NO_5GHZ, {'T', 'M'}}, //TURKMENISTAN
{ REGDOMAIN_N_AMER_EXC_FCC, {'T', 'N'}}, //TUNISIA
{ REGDOMAIN_NO_5GHZ, {'T', 'O'}}, //TONGA
{ REGDOMAIN_N_AMER_EXC_FCC, {'T', 'R'}}, //TURKEY
{ REGDOMAIN_WORLD, {'T', 'T'}}, //TRINIDAD AND TOBAGO
{ REGDOMAIN_NO_5GHZ, {'T', 'V'}}, //TUVALU
{ REGDOMAIN_WORLD, {'T', 'W'}}, //TAIWAN, PROVINCE OF CHINA
{ REGDOMAIN_HI_5GHZ, {'T', 'Z'}}, //TANZANIA, UNITED REPUBLIC OF
{ REGDOMAIN_NO_5GHZ, {'U', 'A'}}, //UKRAINE
{ REGDOMAIN_WORLD, {'U', 'G'}}, //UGANDA
{ REGDOMAIN_FCC, {'U', 'M'}}, //UNITED STATES MINOR OUTLYING ISLANDS
{ REGDOMAIN_WORLD, {'U', 'Y'}}, //URUGUAY
{ REGDOMAIN_WORLD, {'U', 'Z'}}, //UZBEKISTAN
{ REGDOMAIN_ETSI, {'V', 'A'}}, //HOLY SEE (VATICAN CITY STATE)
{ REGDOMAIN_WORLD, {'V', 'C'}}, //SAINT VINCENT AND THE GRENADINES
{ REGDOMAIN_HI_5GHZ, {'V', 'E'}}, //VENEZUELA
{ REGDOMAIN_ETSI, {'V', 'G'}}, //VIRGIN ISLANDS, BRITISH
{ REGDOMAIN_FCC, {'V', 'I'}}, //VIRGIN ISLANDS, US
{ REGDOMAIN_N_AMER_EXC_FCC, {'V', 'N'}}, //VIET NAM
{ REGDOMAIN_NO_5GHZ, {'V', 'U'}}, //VANUATU
{ REGDOMAIN_WORLD, {'W', 'F'}}, //WALLIS AND FUTUNA
{ REGDOMAIN_N_AMER_EXC_FCC, {'W', 'S'}}, //SOMOA
{ REGDOMAIN_NO_5GHZ, {'Y', 'E'}}, //YEMEN
{ REGDOMAIN_ETSI, {'Y', 'T'}}, //MAYOTTE
{ REGDOMAIN_WORLD, {'Z', 'A'}}, //SOUTH AFRICA
{ REGDOMAIN_APAC, {'Z', 'M'}}, //ZAMBIA
{ REGDOMAIN_NO_5GHZ, {'Z', 'W'}}, //ZIMBABWE
}
};
typedef struct nvEFSTable_s

View file

@ -8976,6 +8976,9 @@ VOS_STATUS WDA_TxPacket(tWDA_CbContext *pWDA,
pWDA->pTxCbFunc = NULL; /*To stop the limTxComplete being called again ,
after the packet gets completed(packet freed once)*/
/* TX MGMT fail with COMP timeout, try to detect DXE stall */
WDA_TransportChannelDebug(0, 1);
/*Tag Frame as timed out for later deletion*/
vos_pkt_set_user_data_ptr( (vos_pkt_t *)pFrmBuf, VOS_PKT_USER_DATA_ID_WDA,
(v_PVOID_t)WDA_TL_TX_MGMT_TIMED_OUT);