prima: WLAN Driver Release 3.1.7.9

This is the initial release of the Prima WLAN Driver
diff --git a/CORE/SME/inc/csrSupport.h b/CORE/SME/inc/csrSupport.h
new file mode 100644
index 0000000..d7257e7
--- /dev/null
+++ b/CORE/SME/inc/csrSupport.h
@@ -0,0 +1,813 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. 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.
+ */
+
+/** ------------------------------------------------------------------------- * 
+    ------------------------------------------------------------------------- *  
+
+  
+    \file csrSupport.h
+  
+    Exports and types for the Common Scan and Roaming supporting interfaces.
+  
+   Copyright (C) 2006 Airgo Networks, Incorporated
+ 
+   ========================================================================== */
+#ifndef CSR_SUPPORT_H__
+#define CSR_SUPPORT_H__
+
+#include "csrLinkList.h"
+#include "csrApi.h"
+#include "vos_nvitem.h"
+
+#ifdef FEATURE_WLAN_WAPI
+#define CSR_WAPI_OUI_SIZE              ( 4 )
+#define CSR_WAPI_VERSION_SUPPORTED     ( 1 )
+#define CSR_WAPI_MAX_AUTH_SUITES       ( 2 )
+#define CSR_WAPI_MAX_CYPHERS           ( 5 )
+#define CSR_WAPI_MAX_UNICAST_CYPHERS   ( 5 )
+#define CSR_WAPI_MAX_MULTICAST_CYPHERS ( 1 )
+#endif /* FEATURE_WLAN_WAPI */
+
+#define CSR_RSN_OUI_SIZE              ( 4 )
+#define CSR_RSN_VERSION_SUPPORTED     ( 1 )
+#define CSR_RSN_MAX_AUTH_SUITES       ( 2 )
+#define CSR_RSN_MAX_CYPHERS           ( 5 )
+#define CSR_RSN_MAX_UNICAST_CYPHERS   ( 5 )
+#define CSR_RSN_MAX_MULTICAST_CYPHERS ( 1 )
+
+#define CSR_WPA_OUI_SIZE              ( 4 )
+#define CSR_WPA_VERSION_SUPPORTED     ( 1 )
+#define CSR_WME_OUI_SIZE ( 4 )
+#define CSR_WPA_MAX_AUTH_SUITES       ( 2 )
+#define CSR_WPA_MAX_CYPHERS           ( 5 )
+#define CSR_WPA_MAX_UNICAST_CYPHERS   ( 5 )
+#define CSR_WPA_MAX_MULTICAST_CYPHERS ( 1 )
+#define CSR_WPA_IE_MIN_SIZE           ( 6 )   // minimum size of the IE->length is the size of the Oui + Version.
+#define CSR_WPA_IE_MIN_SIZE_W_MULTICAST ( HDD_WPA_IE_MIN_SIZE + HDD_WPA_OUI_SIZE )
+#define CSR_WPA_IE_MIN_SIZE_W_UNICAST   ( HDD_WPA_IE_MIN_SIZE + HDD_WPA_OUI_SIZE + sizeof( pWpaIe->cUnicastCyphers ) )
+
+#define CSR_DOT11_SUPPORTED_RATES_MAX ( 12 )
+#define CSR_DOT11_EXTENDED_SUPPORTED_RATES_MAX ( 8 )
+
+#define CSR_DOT11_MAX_NUM_SUPPORTED_11B_RATES ( 4 )
+#define CSR_DOT11_MAX_NUM_SUPPORTED_11A_RATES ( 8 )
+#define CSR_DOT11_BASIC_RATE_MASK ( 0x80 )
+
+#define CSR_WME_INFO_IE_VERSION_SUPPORTED ( 1 )
+#define CSR_WME_PARM_IE_VERSION_SUPPORTED ( 1 )
+
+#define CSR_PASSIVE_SCAN_STARTING_CHANNEL ( 52)
+#define CSR_PASSIVE_SCAN_ENDING_CHANNEL ( 140)
+
+#define CSR_DOT11_MAX_11A_RATE ( 54 * 2 )
+#define CSR_DOT11_MIN_11A_RATE (  6 * 2 )
+#define CSR_DOT11_MAX_11B_RATE ( 11 * 2 )
+#define CSR_DOT11_MIN_11B_RATE (  1 * 2 )
+#define CSR_DOT11_MAX_11G_RATE ( 54 * 2 )
+#define CSR_DOT11_MIN_11G_RATE (  6 * 2 )
+
+//Define the frequency ranges that need to be passive scan, MHz
+#define CSR_PASSIVE_SCAN_CAT1_LOW       5250 
+#define CSR_PASSIVE_SCAN_CAT1_HIGH      5350
+#define CSR_PASSIVE_SCAN_CAT2_LOW       5470 
+#define CSR_PASSIVE_SCAN_CAT2_HIGH      5725
+#define CSR_PASSIVE_SCAN_CAT3_LOW       5500 
+#define CSR_PASSIVE_SCAN_CAT3_HIGH      5560
+
+#define CSR_OUI_USE_GROUP_CIPHER_INDEX 0x00
+#define CSR_OUI_WEP40_OR_1X_INDEX      0x01
+#define CSR_OUI_TKIP_OR_PSK_INDEX      0x02
+#define CSR_OUI_RESERVED_INDEX         0x03
+#define CSR_OUI_AES_INDEX              0x04
+#define CSR_OUI_WEP104_INDEX           0x05
+
+#ifdef FEATURE_WLAN_WAPI
+#define CSR_OUI_WAPI_RESERVED_INDEX    0x00
+#define CSR_OUI_WAPI_WAI_CERT_OR_SMS4_INDEX    0x01
+#define CSR_OUI_WAPI_WAI_PSK_INDEX     0x02
+#endif /* FEATURE_WLAN_WAPI */
+
+
+typedef enum 
+{
+    // 11b rates
+    eCsrSuppRate_1Mbps   =   1 * 2,
+    eCsrSuppRate_2Mbps   =   2 * 2,
+    eCsrSuppRate_5_5Mbps =  11,      // 5.5 * 2
+    eCsrSuppRate_11Mbps  =  11 * 2,
+
+    // 11a / 11g rates
+    eCsrSuppRate_6Mbps   =   6 * 2,
+    eCsrSuppRate_9Mbps   =   9 * 2,
+    eCsrSuppRate_12Mbps  =  12 * 2,
+    eCsrSuppRate_18Mbps  =  18 * 2,
+    eCsrSuppRate_24Mbps  =  24 * 2,
+    eCsrSuppRate_36Mbps  =  36 * 2,
+    eCsrSuppRate_48Mbps  =  48 * 2,
+    eCsrSuppRate_54Mbps  =  54 * 2,
+
+    // airgo proprietary rates
+    eCsrSuppRate_10Mbps  =  10 * 2,
+    eCsrSuppRate_10_5Mbps=  21,     // 10.5 * 2
+    eCsrSuppRate_20Mbps  =  20 * 2,
+    eCsrSuppRate_21Mbps  =  21 * 2,
+    eCsrSuppRate_40Mbps  =  40 * 2,
+    eCsrSuppRate_42Mbps  =  42 * 2,
+    eCsrSuppRate_60Mbps  =  60 * 2,
+    eCsrSuppRate_63Mbps  =  63 * 2,
+    eCsrSuppRate_72Mbps  =  72 * 2,
+    eCsrSuppRate_80Mbps  =  80 * 2,
+    eCsrSuppRate_84Mbps  =  84 * 2,
+    eCsrSuppRate_96Mbps  =  96 * 2,
+    eCsrSuppRate_108Mbps = 108 * 2,
+    eCsrSuppRate_120Mbps = 120 * 2,
+    eCsrSuppRate_126Mbps = 126 * 2,
+    eCsrSuppRate_144Mbps = 144 * 2,
+    eCsrSuppRate_160Mbps = 160 * 2,
+    eCsrSuppRate_168Mbps = 168 * 2,
+    eCsrSuppRate_192Mbps = 192 * 2,
+    eCsrSuppRate_216Mbps = 216 * 2,
+    eCsrSuppRate_240Mbps = 240 * 2
+}eCsrSupportedRates;
+
+typedef enum
+{
+    eCsrPassiveScanNot,     //can be scanned actively on the whole 5GHz band
+    eCsrPassiveScanCat1,    //always passive scan from 5250 to 5350MHz
+    eCsrPassiveScanCat2,    //always passive scan from 5250 to 5350MHz, and from 5470 to 5725MHz
+    eCsrPassiveScanCat3,    //always passive scan from 5250 to 5350MHz, from 5470 to 5725MHz, and from 5500 to 5560MHz
+}eCsrPassiveScanCat;
+
+
+//Please donot insert in the middle of the enum here because they tie to the indiex
+typedef enum
+{
+    eCSR_COUNTRY_INDEX_US = 0,  //Always set US as index 0
+    eCSR_COUNTRY_INDEX_ANDORRA,
+    eCSR_COUNTRY_INDEX_UAE,     //United Arab Emirates
+    eCSR_COUNTRY_INDEX_AFGHANISTAN,
+    eCSR_COUNTRY_INDEX_ANTIGUA_AND_BARBUDA,
+    eCSR_COUNTRY_INDEX_ANGUILLA,
+    eCSR_COUNTRY_INDEX_ALBANIA,
+    eCSR_COUNTRY_INDEX_ARMENIA,
+    eCSR_COUNTRY_INDEX_NETHERLANDS_ANTILLES,
+    eCSR_COUNTRY_INDEX_ANGOLA,
+    eCSR_COUNTRY_INDEX_ANTARCTICA,
+    eCSR_COUNTRY_INDEX_ARGENTINA,
+    eCSR_COUNTRY_INDEX_AMERICAN_SAMOA,
+    eCSR_COUNTRY_INDEX_AUSTRIA,
+    eCSR_COUNTRY_INDEX_AUSTRALIA,
+    eCSR_COUNTRY_INDEX_ARUBA,
+    eCSR_COUNTRY_INDEX_ALAND_ISLANDS,
+    eCSR_COUNTRY_INDEX_AZERBAIJAN,
+    eCSR_COUNTRY_INDEX_BOSNIA_AND_HERZEGOVINA,
+    eCSR_COUNTRY_INDEX_BARBADOS,
+    eCSR_COUNTRY_INDEX_BANGLADESH,
+    eCSR_COUNTRY_INDEX_BELGIUM,
+    eCSR_COUNTRY_INDEX_BURKINA_FASO,
+    eCSR_COUNTRY_INDEX_BULGARIA,
+    eCSR_COUNTRY_INDEX_BAHRAIN,
+    eCSR_COUNTRY_INDEX_BURUNDI,
+    eCSR_COUNTRY_INDEX_BENIN,
+    eCSR_COUNTRY_INDEX_SAINT_BARTHELEMY,
+    eCSR_COUNTRY_INDEX_BERMUDA,
+    eCSR_COUNTRY_INDEX_BRUNEI_DARUSSALAM,
+    eCSR_COUNTRY_INDEX_BOLVIA,
+    eCSR_COUNTRY_INDEX_BRAZIL,
+    eCSR_COUNTRY_INDEX_BAHAMAS,
+    eCSR_COUNTRY_INDEX_BHUTAN,
+    eCSR_COUNTRY_INDEX_BOUVET_ISLAND,
+    eCSR_COUNTRY_INDEX_BOTSWANA,
+    eCSR_COUNTRY_INDEX_BELARUS,
+    eCSR_COUNTRY_INDEX_BELIZE,
+    eCSR_COUNTRY_INDEX_CANADA,      
+    eCSR_COUNTRY_INDEX_COCOS_KEELING_ISLANDS,
+    eCSR_COUNTRY_INDEX_CONGO_REP,
+    eCSR_COUNTRY_INDEX_CENTRAL_AFRICAN,
+    eCSR_COUNTRY_INDEX_CONGO,
+    eCSR_COUNTRY_INDEX_SWITZERLAND,
+    eCSR_COUNTRY_INDEX_COTE_DIVOIRE,
+    eCSR_COUNTRY_INDEX_COOK_ISLANDS,
+    eCSR_COUNTRY_INDEX_CHILE,
+    eCSR_COUNTRY_INDEX_CAMEROON,
+    eCSR_COUNTRY_INDEX_CHINA,
+    eCSR_COUNTRY_INDEX_COLUMBIA,
+    eCSR_COUNTRY_INDEX_COSTA_RICA,
+    eCSR_COUNTRY_INDEX_CUBA,
+    eCSR_COUNTRY_INDEX_CAPE_VERDE,
+    eCSR_COUNTRY_INDEX_CHRISTMAS_ISLAND,
+    eCSR_COUNTRY_INDEX_CYPRUS,
+    eCSR_COUNTRY_INDEX_CZECH,
+    eCSR_COUNTRY_INDEX_GERMANY,
+    eCSR_COUNTRY_INDEX_DJIBOUTI,
+    eCSR_COUNTRY_INDEX_DENMARK,
+    eCSR_COUNTRY_INDEX_DOMINICA,
+    eCSR_COUNTRY_INDEX_DOMINICAN_REP,
+    eCSR_COUNTRY_INDEX_ALGERIA,
+    eCSR_COUNTRY_INDEX_ECUADOR,
+    eCSR_COUNTRY_INDEX_ESTONIA,
+    eCSR_COUNTRY_INDEX_EGYPT,
+    eCSR_COUNTRY_INDEX_WESTERN_SAHARA,
+    eCSR_COUNTRY_INDEX_ERITREA,
+    eCSR_COUNTRY_INDEX_SPAIN,
+    eCSR_COUNTRY_INDEX_ETHIOPIA,
+    eCSR_COUNTRY_INDEX_FINLAND,
+    eCSR_COUNTRY_INDEX_FIJI,
+    eCSR_COUNTRY_INDEX_FALKLAND_ISLANDS,
+    eCSR_COUNTRY_INDEX_MICRONESIA,
+    eCSR_COUNTRY_INDEX_FAROE_ISLANDS,
+    eCSR_COUNTRY_INDEX_FRANCE,
+    eCSR_COUNTRY_INDEX_GABON,
+    eCSR_COUNTRY_INDEX_UNITED_KINGDOM,
+    eCSR_COUNTRY_INDEX_GRENADA,
+    eCSR_COUNTRY_INDEX_GEORGIA,
+    eCSR_COUNTRY_INDEX_FRENCH_GUIANA,
+    eCSR_COUNTRY_INDEX_GUERNSEY,
+    eCSR_COUNTRY_INDEX_GHANA,
+    eCSR_COUNTRY_INDEX_GIBRALTAR,
+    eCSR_COUNTRY_INDEX_GREENLAND,
+    eCSR_COUNTRY_INDEX_GAMBIA,
+    eCSR_COUNTRY_INDEX_GUINEA,
+    eCSR_COUNTRY_INDEX_GUADELOUPE,
+    eCSR_COUNTRY_INDEX_EQUATORIAL_GUINEA,
+    eCSR_COUNTRY_INDEX_GREECE,
+    eCSR_COUNTRY_INDEX_SOUTH_GEORGIA,
+    eCSR_COUNTRY_INDEX_GUATEMALA,
+    eCSR_COUNTRY_INDEX_GUAM,
+    eCSR_COUNTRY_INDEX_GUINEA_BISSAU,
+    eCSR_COUNTRY_INDEX_GUYANA,
+    eCSR_COUNTRY_INDEX_HONGKONG,
+    eCSR_COUNTRY_INDEX_HEARD_ISLAND,
+    eCSR_COUNTRY_INDEX_HONDURAS,
+    eCSR_COUNTRY_INDEX_CROATIA,
+    eCSR_COUNTRY_INDEX_HAITI,
+    eCSR_COUNTRY_INDEX_HUNGARY,
+    eCSR_COUNTRY_INDEX_INDONESIA,
+    eCSR_COUNTRY_INDEX_IRELAND,
+    eCSR_COUNTRY_INDEX_ISRAEL,
+    eCSR_COUNTRY_INDEX_ISLE_OF_MAN,
+    eCSR_COUNTRY_INDEX_INDIA,
+    eCSR_COUNTRY_INDEX_BRITISH_INDIAN,
+    eCSR_COUNTRY_INDEX_IRAQ,
+    eCSR_COUNTRY_INDEX_IRAN,
+    eCSR_COUNTRY_INDEX_ICELAND,
+    eCSR_COUNTRY_INDEX_ITALY,
+    eCSR_COUNTRY_INDEX_JERSEY,
+    eCSR_COUNTRY_INDEX_JAMAICA,
+    eCSR_COUNTRY_INDEX_JORDAN,
+    eCSR_COUNTRY_INDEX_JAPAN,
+    eCSR_COUNTRY_INDEX_KENYA,
+    eCSR_COUNTRY_INDEX_KYRGYZSTAN,
+    eCSR_COUNTRY_INDEX_CAMBODIA,
+    eCSR_COUNTRY_INDEX_KIRIBATI,
+    eCSR_COUNTRY_INDEX_COMOROS,
+    eCSR_COUNTRY_INDEX_SAINT_KITTS_AND_NEVIS,
+    eCSR_COUNTRY_INDEX_KOREA_NORTH,
+    eCSR_COUNTRY_INDEX_KOREA_SOUTH,
+    eCSR_COUNTRY_INDEX_KUWAIT,
+    eCSR_COUNTRY_INDEX_CAYMAN_ISLANDS,
+    eCSR_COUNTRY_INDEX_KAZAKHSTAN,
+    eCSR_COUNTRY_INDEX_LAO,
+    eCSR_COUNTRY_INDEX_LEBANON,
+    eCSR_COUNTRY_INDEX_SAINT_LUCIA,
+    eCSR_COUNTRY_INDEX_LIECHTENSTEIN,
+    eCSR_COUNTRY_INDEX_SRI_LANKA,
+    eCSR_COUNTRY_INDEX_LIBERIA,
+    eCSR_COUNTRY_INDEX_LESOTHO,
+    eCSR_COUNTRY_INDEX_LITHUANIA,
+    eCSR_COUNTRY_INDEX_LUXEMBOURG,
+    eCSR_COUNTRY_INDEX_LATVIA,
+    eCSR_COUNTRY_INDEX_LIBYAN_ARAB_JAMAHIRIYA,
+    eCSR_COUNTRY_INDEX_MOROCCO,
+    eCSR_COUNTRY_INDEX_MONACO,
+    eCSR_COUNTRY_INDEX_MOLDOVA,
+    eCSR_COUNTRY_INDEX_MONTENEGRO,
+    eCSR_COUNTRY_INDEX_MADAGASCAR,
+    eCSR_COUNTRY_INDEX_MARSHALL_ISLANDS,
+    eCSR_COUNTRY_INDEX_MACEDONIA,
+    eCSR_COUNTRY_INDEX_MALI,
+    eCSR_COUNTRY_INDEX_MYANMAR,
+    eCSR_COUNTRY_INDEX_MONGOLIA,
+    eCSR_COUNTRY_INDEX_MACAO,
+    eCSR_COUNTRY_INDEX_NORTHERN_MARIANA_ISLANDS,
+    eCSR_COUNTRY_INDEX_MARTINIQUE,
+    eCSR_COUNTRY_INDEX_MAURITANIA,
+    eCSR_COUNTRY_INDEX_MONTSERRAT,
+    eCSR_COUNTRY_INDEX_MALTA,
+    eCSR_COUNTRY_INDEX_MAURITIUS,
+    eCSR_COUNTRY_INDEX_MALDIVES,
+    eCSR_COUNTRY_INDEX_MALAWI,
+    eCSR_COUNTRY_INDEX_MEXICO,
+    eCSR_COUNTRY_INDEX_MALAYSIA,
+    eCSR_COUNTRY_INDEX_MOZAMBIQUE,
+    eCSR_COUNTRY_INDEX_NAMIBIA,
+    eCSR_COUNTRY_INDEX_NEW_CALENDONIA,
+    eCSR_COUNTRY_INDEX_NIGER,
+    eCSR_COUNTRY_INDEX_NORFOLK_ISLAND,
+    eCSR_COUNTRY_INDEX_NIGERIA,
+    eCSR_COUNTRY_INDEX_NICARAGUA,
+    eCSR_COUNTRY_INDEX_NETHERLANDS,
+    eCSR_COUNTRY_INDEX_NORWAY,
+    eCSR_COUNTRY_INDEX_NEPAL,
+    eCSR_COUNTRY_INDEX_NAURU,
+    eCSR_COUNTRY_INDEX_NIUE,
+    eCSR_COUNTRY_INDEX_NEW_ZEALAND,
+    eCSR_COUNTRY_INDEX_OMAN,
+    eCSR_COUNTRY_INDEX_PANAMA,
+    eCSR_COUNTRY_INDEX_PERU,
+    eCSR_COUNTRY_INDEX_FRENCH_POLYNESIA,
+    eCSR_COUNTRY_INDEX_PAPUA_NEW_HUINEA,
+    eCSR_COUNTRY_INDEX_PHILIPPINES,
+    eCSR_COUNTRY_INDEX_PAKISTAN,
+    eCSR_COUNTRY_INDEX_POLAND,
+    eCSR_COUNTRY_INDEX_SAINT_PIERRE_AND_MIQUELON,
+    eCSR_COUNTRY_INDEX_PITCAIRN,
+    eCSR_COUNTRY_INDEX_PUERTO_RICO,
+    eCSR_COUNTRY_INDEX_PALESTINIAN_TERRITOTY_OCCUPIED,
+    eCSR_COUNTRY_INDEX_PORTUGAL,
+    eCSR_COUNTRY_INDEX_PALAU,
+    eCSR_COUNTRY_INDEX_PARAGUAY,
+    eCSR_COUNTRY_INDEX_QATAR,
+    eCSR_COUNTRY_INDEX_REUNION,
+    eCSR_COUNTRY_INDEX_ROMANIA,
+    eCSR_COUNTRY_INDEX_SERBIA,
+    eCSR_COUNTRY_INDEX_RUSSIAN,
+    eCSR_COUNTRY_INDEX_RWANDA,
+    eCSR_COUNTRY_INDEX_SAUDI_ARABIA,
+    eCSR_COUNTRY_INDEX_SOLOMON_ISLANDS,
+    eCSR_COUNTRY_INDEX_SEYCHELLES,
+    eCSR_COUNTRY_INDEX_SUDAN,
+    eCSR_COUNTRY_INDEX_SWEDEN,
+    eCSR_COUNTRY_INDEX_SINGAPORE,
+    eCSR_COUNTRY_INDEX_SAINT_HELENA,
+    eCSR_COUNTRY_INDEX_SLOVENIA,
+    eCSR_COUNTRY_INDEX_SVALBARD_AND_JAN_MAYEN,
+    eCSR_COUNTRY_INDEX_SLOVAKIA,
+    eCSR_COUNTRY_INDEX_SIERRA_LEONE,
+    eCSR_COUNTRY_INDEX_SAN_MARINO,
+    eCSR_COUNTRY_INDEX_SENEGAL,
+    eCSR_COUNTRY_INDEX_SOMOLIA,
+    eCSR_COUNTRY_INDEX_SURINAME,
+    eCSR_COUNTRY_INDEX_SAO_TOME_AND_PRINCIPE,
+    eCSR_COUNTRY_INDEX_EL_SALVADOR,
+    eCSR_COUNTRY_INDEX_SYRIAN_REP,
+    eCSR_COUNTRY_INDEX_SWAZILAND,
+    eCSR_COUNTRY_INDEX_TURKS_AND_CAICOS_ISLANDS,
+    eCSR_COUNTRY_INDEX_CHAD,
+    eCSR_COUNTRY_INDEX_FRENCH_SOUTHERN_TERRRTORY,
+    eCSR_COUNTRY_INDEX_TOGO,
+    eCSR_COUNTRY_INDEX_THAILAND,
+    eCSR_COUNTRY_INDEX_TAJIKSTAN,
+    eCSR_COUNTRY_INDEX_TOKELAU,
+    eCSR_COUNTRY_INDEX_TIMOR_LESTE,
+    eCSR_COUNTRY_INDEX_TURKMENISTAN,
+    eCSR_COUNTRY_INDEX_TUNISIA,
+    eCSR_COUNTRY_INDEX_TONGA,
+    eCSR_COUNTRY_INDEX_TURKEY,
+    eCSR_COUNTRY_INDEX_TRINIDAD_AND_TOBAGO,
+    eCSR_COUNTRY_INDEX_TUVALU,
+    eCSR_COUNTRY_INDEX_TAIWAN,
+    eCSR_COUNTRY_INDEX_TANZANIA,
+    eCSR_COUNTRY_INDEX_UKRAINE,
+    eCSR_COUNTRY_INDEX_UGANDA,
+    eCSR_COUNTRY_INDEX_US_MINOR_OUTLYING_ISLANDS,
+    eCSR_COUNTRY_INDEX_URUGUAY,
+    eCSR_COUNTRY_INDEX_UZBEKISTAN,
+    eCSR_COUNTRY_INDEX_HOLY_SEE,
+    eCSR_COUNTRY_INDEX_SAINT_VINCENT_AND_THE_GRENADINES,
+    eCSR_COUNTRY_INDEX_VENESUELA,
+    eCSR_COUNTRY_INDEX_VIRGIN_ISLANDS_BRITISH,
+    eCSR_COUNTRY_INDEX_VIRGIN_ISLANDS_US,
+    eCSR_COUNTRY_INDEX_VIET_NAM,
+    eCSR_COUNTRY_INDEX_VANUATU,
+    eCSR_COUNTRY_INDEX_WALLIS_AND_FUTUNA,
+    eCSR_COUNTRY_INDEX_SAMOA,
+    eCSR_COUNTRY_INDEX_YEMEN,
+    eCSR_COUNTRY_INDEX_MAYOTTE,
+    eCSR_COUNTRY_INDEX_SOTHER_AFRICA,
+    eCSR_COUNTRY_INDEX_ZAMBIA,
+    eCSR_COUNTRY_INDEX_ZIMBABWE,
+
+    eCSR_COUNTRY_INDEX_KOREA_1,
+    eCSR_COUNTRY_INDEX_KOREA_2,
+    eCSR_COUNTRY_INDEX_KOREA_3,
+    eCSR_COUNTRY_INDEX_KOREA_4,
+
+    eCSR_NUM_COUNTRY_INDEX,     
+}eCsrCountryIndex;
+//Please donot insert in the middle of the enum above because they tie to the indiex
+
+
+typedef struct tagCsrSirMBMsgHdr 
+{
+    tANI_U16 type;
+    tANI_U16 msgLen;
+
+}tCsrSirMBMsgHdr;
+
+typedef struct tagCsrCfgMsgTlvHdr 
+{
+    tANI_U32 type;
+    tANI_U32 length;    
+
+}tCsrCfgMsgTlvHdr;
+
+
+
+typedef struct tagCsrCfgMsgTlv
+{
+    tCsrCfgMsgTlvHdr Hdr;
+    tANI_U32 variable[ 1 ];    // placeholder for the data
+    
+}tCsrCfgMsgTlv;
+
+typedef struct tagCsrCfgGetRsp 
+{
+  tCsrSirMBMsgHdr hdr;
+  tANI_U32    respStatus;
+  tANI_U32    paramId;
+  tANI_U32    attribLen;
+  tANI_U32    attribVal[1];
+}tCsrCfgGetRsp;
+
+typedef struct tagCsrCfgSetRsp 
+{
+  
+  tCsrSirMBMsgHdr hdr;
+  tANI_U32    respStatus;
+  tANI_U32    paramId;
+}tCsrCfgSetRsp;
+
+
+typedef struct tagCsrDomainChnScanInfo
+{
+    tANI_U8 chnId;
+    tSirScanType scanType;  //whether this channel must be scan passively
+}tCsrDomainChnScanInfo;
+
+
+#if defined(__ANI_COMPILER_PRAGMA_PACK_STACK)
+#pragma pack( push )
+#pragma pack( 1 )
+#elif defined(__ANI_COMPILER_PRAGMA_PACK)
+#pragma pack( 1 )
+#endif
+
+// Generic Information Element Structure
+typedef __ani_attr_pre_packed struct sDot11IEHeader 
+{
+    tANI_U8 ElementID;
+    tANI_U8 Length;
+}__ani_attr_packed tDot11IEHeader;
+
+typedef __ani_attr_pre_packed struct tagCsrWmeInfoIe
+{
+    tDot11IEHeader IeHeader;
+    tANI_U8    Oui[ CSR_WME_OUI_SIZE ];  // includes the 3 byte OUI + 1 byte Type
+    tANI_U8    Subtype;
+    tANI_U8    Version;
+    tANI_U8    QoSInfo;
+    
+} __ani_attr_packed tCsrWmeInfoIe;
+
+typedef __ani_attr_pre_packed struct tagCsrWmeAcParms
+{
+    tANI_U8  AciAifsn;
+    tANI_U8  EcwMinEcwMax;
+    tANI_U16 TxOpLimit;
+    
+} __ani_attr_packed tCsrWmeAcParms;
+
+typedef __ani_attr_pre_packed struct tagCsrWmeParmIe
+{
+    tDot11IEHeader IeHeader;
+    tANI_U8    Oui[ CSR_WME_OUI_SIZE ];  // includes the 3 byte OUI + 1 byte Type
+    tANI_U8    Subtype;
+    tANI_U8    Version;
+    tANI_U8    QoSInfo;
+    tANI_U8    Reserved;
+    tCsrWmeAcParms   BestEffort;
+    tCsrWmeAcParms   Background;
+    tCsrWmeAcParms   Video;
+    tCsrWmeAcParms   Voice;
+        
+} __ani_attr_packed tCsrWmeParmIe;
+
+typedef __ani_attr_pre_packed struct tagCsrWpaIe 
+{
+    tDot11IEHeader IeHeader;
+    tANI_U8    Oui[ CSR_WPA_OUI_SIZE ];
+    tANI_U16   Version;
+    tANI_U8    MulticastOui[ CSR_WPA_OUI_SIZE ];
+    tANI_U16   cUnicastCyphers;
+    
+    __ani_attr_pre_packed struct {
+    
+        tANI_U8 Oui[ CSR_WPA_OUI_SIZE ];
+        
+    } __ani_attr_packed UnicastOui[ 1 ];
+    
+} __ani_attr_packed tCsrWpaIe;
+
+typedef __ani_attr_pre_packed struct tagCsrWpaAuthIe 
+{
+
+    tANI_U16 cAuthenticationSuites;
+    
+    __ani_attr_pre_packed struct {
+    
+        tANI_U8 Oui[ CSR_WPA_OUI_SIZE ];
+    
+    } __ani_attr_packed AuthOui[ 1 ];
+
+} __ani_attr_packed tCsrWpaAuthIe;
+
+
+typedef __ani_attr_pre_packed struct tagCsrRSNIe 
+{
+    tDot11IEHeader IeHeader;
+    tANI_U16   Version;
+    tANI_U8    MulticastOui[ CSR_RSN_OUI_SIZE ];
+    tANI_U16   cUnicastCyphers;
+    
+    __ani_attr_pre_packed struct {
+    
+        tANI_U8 Oui[ CSR_RSN_OUI_SIZE ];
+        
+    } __ani_attr_packed UnicastOui[ 1 ];
+    
+} __ani_attr_packed tCsrRSNIe;
+
+typedef __ani_attr_pre_packed struct tagCsrRSNAuthIe 
+{
+    tANI_U16 cAuthenticationSuites;
+    __ani_attr_pre_packed struct {
+    
+        tANI_U8 Oui[ CSR_RSN_OUI_SIZE ];
+    
+    } __ani_attr_packed AuthOui[ 1 ];
+
+} __ani_attr_packed tCsrRSNAuthIe;
+
+typedef __ani_attr_pre_packed struct tagCsrRSNCapabilities 
+{
+    tANI_U16 PreAuthSupported:1;
+    tANI_U16 NoPairwise:1;
+    tANI_U16 PTKSAReplayCounter:2;
+    tANI_U16 GTKSAReplayCounter:2;
+    tANI_U16 Reserved:10;
+} __ani_attr_packed tCsrRSNCapabilities;
+
+typedef __ani_attr_pre_packed struct tagCsrRSNPMKIe 
+{
+    tANI_U16 cPMKIDs;
+    
+    __ani_attr_pre_packed struct {
+    
+        tANI_U8 PMKID[ CSR_RSN_PMKID_SIZE ];
+    
+    } __ani_attr_packed PMKIDList[ 1 ];
+
+
+} __ani_attr_packed tCsrRSNPMKIe;
+
+typedef __ani_attr_pre_packed struct tCsrIELenInfo
+{
+    tANI_U8 min;
+    tANI_U8 max;
+} __ani_attr_packed tCsrIELenInfo;
+
+#ifdef FEATURE_WLAN_WAPI
+typedef __ani_attr_pre_packed struct tagCsrWapiIe 
+{
+    tDot11IEHeader IeHeader;
+    tANI_U16   Version;
+
+    tANI_U16 cAuthenticationSuites;
+    __ani_attr_pre_packed struct {
+
+        tANI_U8 Oui[ CSR_WAPI_OUI_SIZE ];
+
+    } __ani_attr_packed AuthOui[ 1 ];
+
+    tANI_U16   cUnicastCyphers;
+    __ani_attr_pre_packed struct {
+
+        tANI_U8 Oui[ CSR_WAPI_OUI_SIZE ];
+
+    } __ani_attr_packed UnicastOui[ 1 ];
+
+    tANI_U8    MulticastOui[ CSR_WAPI_OUI_SIZE ];    
+
+    __ani_attr_pre_packed struct {
+       tANI_U16 PreAuthSupported:1;
+       tANI_U16 Reserved:15;
+    } __ani_attr_packed tCsrWapiCapabilities;
+
+
+} __ani_attr_packed tCsrWapiIe;
+
+typedef __ani_attr_pre_packed struct tagCsrWAPIBKIe 
+{
+    tANI_U16 cBKIDs;
+    __ani_attr_pre_packed struct {
+
+        tANI_U8 BKID[ CSR_WAPI_BKID_SIZE ];
+
+    } __ani_attr_packed BKIDList[ 1 ];
+
+
+} __ani_attr_packed tCsrWAPIBKIe;
+#endif /* FEATURE_WLAN_WAPI */
+
+#if defined(__ANI_COMPILER_PRAGMA_PACK_STACK)
+#pragma pack( pop )
+#endif
+
+// Structure used to describe a group of continuous channels and hook it into the 
+// corresponding channel list
+typedef struct tagCsrChannelSet 
+{
+  tListElem      channelListLink;
+  tANI_U8   firstChannel;
+  tANI_U8   interChannelOffset;
+  tANI_U8   numChannels;
+  tANI_U8   txPower;
+}tCsrChannelSet;
+
+
+typedef struct sDot11InfoIBSSParmSet 
+{
+    tDot11IEHeader dot11IEHeader;
+    tANI_U8 ATIMWindow;
+}tDot11InfoIBSSParmSet;
+
+
+typedef struct sDot11IECountry 
+{
+    tDot11IEHeader dot11IEHeader;
+    tANI_U8 countryString[3];
+    tSirMacChanInfo chanInfo[1];
+}tDot11IECountry;
+
+
+typedef struct sDot11IEExtenedSupportedRates 
+{
+    tDot11IEHeader dot11IEHeader;
+    tANI_U8 ExtendedSupportedRates[ CSR_DOT11_EXTENDED_SUPPORTED_RATES_MAX ];
+}tDot11IEExtenedSupportedRates;
+
+#define CSR_DOT11_AP_NAME_MAX_LENGTH ( 32 )
+
+typedef struct tagDot11IEAPName
+{
+    tDot11IEHeader dot11IEHeader;
+    tANI_U8 ApName[ CSR_DOT11_AP_NAME_MAX_LENGTH ];
+}tDot11IEAPName;
+
+typedef struct tagDot11IE11HLocalPowerConstraint
+{
+    tDot11IEHeader dot11IEHeader;
+    tANI_U8 localPowerConstraint;
+
+}tDot11IE11HLocalPowerConstraint;
+
+typedef struct tagRoamingTimerInfo
+{
+    tpAniSirGlobal pMac;
+    tANI_U8 sessionId;
+} tCsrTimerInfo;
+
+
+#define CSR_IS_11A_BSS(pBssDesc)    ( eSIR_11A_NW_TYPE == (pBssDesc)->nwType )
+#define CSR_IS_BASIC_RATE(rate)     ((rate) & CSR_DOT11_BASIC_RATE_MASK)
+#define CSR_IS_QOS_BSS(pIes)  ( (pIes)->WMMParams.present || (pIes)->WMMInfoAp.present )
+
+#define CSR_IS_UAPSD_BSS(pIes) \
+    ( ((pIes)->WMMParams.present && ((pIes)->WMMParams.qosInfo & SME_QOS_AP_SUPPORTS_APSD)) || \
+               ((pIes)->WMMInfoAp.present && (pIes)->WMMInfoAp.uapsd) )
+
+//This macro returns the total length needed of Tlv with with len bytes of data
+#define GET_TLV_MSG_LEN(len)    GET_ROUND_UP((sizeof(tCsrCfgMsgTlvHdr) + (len)), sizeof(tANI_U32))
+
+tANI_BOOLEAN csrGetBssIdBssDesc( tHalHandle hHal, tSirBssDescription *pSirBssDesc, tCsrBssid *pBssId ); 
+tANI_BOOLEAN csrIsBssIdEqual( tHalHandle hHal, tSirBssDescription *pSirBssDesc1, tSirBssDescription *pSirBssDesc2 );
+
+eCsrMediaAccessType csrGetQoSFromBssDesc( tHalHandle hHal, tSirBssDescription *pSirBssDesc,
+                                          tDot11fBeaconIEs *pIes);
+tANI_BOOLEAN csrIsNULLSSID( tANI_U8 *pBssSsid, tANI_U8 len );
+tANI_BOOLEAN csrIsInfraBssDesc( tSirBssDescription *pSirBssDesc ); 
+tANI_BOOLEAN csrIsIbssBssDesc( tSirBssDescription *pSirBssDesc ); 
+tANI_BOOLEAN csrIsPrivacy( tSirBssDescription *pSirBssDesc );
+tSirResultCodes csrGetDisassocRspStatusCode( tSirSmeDisassocRsp *pSmeDisassocRsp );
+tSirResultCodes csrGetDeAuthRspStatusCode( tSirSmeDeauthRsp *pSmeRsp );
+tANI_U32 csrGetFragThresh( tHalHandle hHal );
+tANI_U32 csrGetRTSThresh( tHalHandle hHal );
+eCsrPhyMode csrGetPhyModeFromBssDesc( tSirBssDescription *pSirBssDesc );
+tANI_U32 csrGet11hPowerConstraint( tHalHandle hHal, tDot11fIEPowerConstraints *pPowerConstraint );
+tANI_U8 csrConstructRSNIe( tHalHandle hHal, tANI_U32 sessionId, tCsrRoamProfile *pProfile, 
+                            tSirBssDescription *pSirBssDesc, tDot11fBeaconIEs *pIes, tCsrRSNIe *pRSNIe );
+tANI_U8 csrConstructWpaIe( tHalHandle hHal, tCsrRoamProfile *pProfile, tSirBssDescription *pSirBssDesc, 
+                           tDot11fBeaconIEs *pIes, tCsrWpaIe *pWpaIe );
+#ifdef FEATURE_WLAN_WAPI
+
+tANI_BOOLEAN csrIsProfileWapi( tCsrRoamProfile *pProfile );
+#endif /* FEATURE_WLAN_WAPI */
+//If a WPAIE exists in the profile, just use it. Or else construct one from the BSS
+//Caller allocated memory for pWpaIe and guarrantee it can contain a max length WPA IE
+tANI_U8 csrRetrieveWpaIe( tHalHandle hHal, tCsrRoamProfile *pProfile, tSirBssDescription *pSirBssDesc, 
+                          tDot11fBeaconIEs *pIes, tCsrWpaIe *pWpaIe );
+tANI_BOOLEAN csrIsSsidEqual( tHalHandle hHal, tSirBssDescription *pSirBssDesc1, 
+                             tSirBssDescription *pSirBssDesc2, tDot11fBeaconIEs *pIes2 );
+//Null ssid means match
+tANI_BOOLEAN csrIsSsidInList( tHalHandle hHal, tSirMacSSid *pSsid, tCsrSSIDs *pSsidList );
+tANI_BOOLEAN csrIsProfileWpa( tCsrRoamProfile *pProfile );
+tANI_BOOLEAN csrIsProfileRSN( tCsrRoamProfile *pProfile );
+//This function returns the raw byte array of WPA and/or RSN IE
+tANI_BOOLEAN csrGetWpaRsnIe( tHalHandle hHal, tANI_U8 *pIes, tANI_U32 len,
+                             tANI_U8 *pWpaIe, tANI_U8 *pcbWpaIe, tANI_U8 *pRSNIe, tANI_U8 *pcbRSNIe);
+//If a RSNIE exists in the profile, just use it. Or else construct one from the BSS
+//Caller allocated memory for pWpaIe and guarrantee it can contain a max length WPA IE
+tANI_U8 csrRetrieveRsnIe( tHalHandle hHal, tANI_U32 sessionId, tCsrRoamProfile *pProfile, tSirBssDescription *pSirBssDesc, 
+                          tDot11fBeaconIEs *pIes, tCsrRSNIe *pRsnIe );
+#ifdef FEATURE_WLAN_WAPI
+//If a WAPI IE exists in the profile, just use it. Or else construct one from the BSS
+//Caller allocated memory for pWapiIe and guarrantee it can contain a max length WAPI IE
+tANI_U8 csrRetrieveWapiIe( tHalHandle hHal, tANI_U32 sessionId, tCsrRoamProfile *pProfile, tSirBssDescription *pSirBssDesc, 
+                          tDot11fBeaconIEs *pIes, tCsrWapiIe *pWapiIe );
+#endif /* FEATURE_WLAN_WAPI */
+tANI_BOOLEAN csrSearchChannelListForTxPower(tHalHandle hHal, tSirBssDescription *pBssDescription, tCsrChannelSet *returnChannelGroup);
+tANI_BOOLEAN csrRatesIsDot11Rate11bSupportedRate( tANI_U8 dot11Rate );
+tANI_BOOLEAN csrRatesIsDot11Rate11aSupportedRate( tANI_U8 dot11Rate );
+tAniEdType csrTranslateEncryptTypeToEdType( eCsrEncryptionType EncryptType ); 
+//pIes shall contain IEs from pSirBssDesc. It shall be returned from function csrGetParsedBssDescriptionIEs 
+tANI_BOOLEAN csrIsSecurityMatch( tHalHandle hHal, tCsrAuthList *authType, tCsrEncryptionList *pUCEncryptionType, tCsrEncryptionList *pMCEncryptionType,
+                                 tSirBssDescription *pSirBssDesc, tDot11fBeaconIEs *pIes, 
+                                 eCsrAuthType *negotiatedAuthtype, eCsrEncryptionType *negotiatedUCCipher, eCsrEncryptionType *negotiatedMCCipher );
+tANI_BOOLEAN csrIsBSSTypeMatch(eCsrRoamBssType bssType1, eCsrRoamBssType bssType2);
+tANI_BOOLEAN csrIsBssTypeIBSS(eCsrRoamBssType bssType);
+tANI_BOOLEAN csrIsBssTypeWDS(eCsrRoamBssType bssType);
+//ppIes can be NULL. If caller want to get the *ppIes allocated by this function, pass in *ppIes = NULL
+//Caller needs to free the memory in this case
+tANI_BOOLEAN csrMatchBSS( tHalHandle hHal, tSirBssDescription *pBssDesc, tCsrScanResultFilter *pFilter, 
+                          eCsrAuthType *pNegAuth, eCsrEncryptionType *pNegUc, eCsrEncryptionType *pNegMc,
+                          tDot11fBeaconIEs **ppIes);
+
+tANI_BOOLEAN csrIsBssidMatch( tHalHandle hHal, tCsrBssid *pProfBssid, tCsrBssid *BssBssid );
+tANI_BOOLEAN csrMatchBSSToConnectProfile( tHalHandle hHal, tCsrRoamConnectedProfile *pProfile,
+                                          tSirBssDescription *pBssDesc, tDot11fBeaconIEs *pIes );
+tANI_BOOLEAN csrRatesIsDot11RateSupported( tHalHandle hHal, tANI_U8 rate );
+tANI_U16 csrRatesFindBestRate( tSirMacRateSet *pSuppRates, tSirMacRateSet *pExtRates, tSirMacPropRateSet *pPropRates );
+tSirBssType csrTranslateBsstypeToMacType(eCsrRoamBssType csrtype);
+                            
+//Caller allocates memory for pIEStruct
+eHalStatus csrParseBssDescriptionIEs(tHalHandle hHal, tSirBssDescription *pBssDesc, tDot11fBeaconIEs *pIEStruct);
+//This function will allocate memory for the parsed IEs to the caller. Caller must free the memory
+//after it is done with the data only if this function succeeds
+eHalStatus csrGetParsedBssDescriptionIEs(tHalHandle hHal, tSirBssDescription *pBssDesc, tDot11fBeaconIEs **ppIEStruct);
+
+tANI_BOOLEAN csrValidateCountryString( tHalHandle hHal, tANI_U8 *pCountryString );
+tSirScanType csrGetScanType(tpAniSirGlobal pMac, tANI_U8 chnId);
+
+tANI_U8 csrToUpper( tANI_U8 ch );
+eHalStatus csrGetPhyModeFromBss(tpAniSirGlobal pMac, tSirBssDescription *pBSSDescription, 
+                                eCsrPhyMode *pPhyMode, tDot11fBeaconIEs *pIes);
+
+//fForce -- force reassoc regardless of whether there is any change
+//The reason is that for UAPSD-bypass, the code underneath this call determine whether
+//to allow UAPSD. The information in pModProfileFields reflects what the user wants.
+//There may be discrepency in it. UAPSD-bypass logic should decide if it needs to reassoc
+eHalStatus csrReassoc(tpAniSirGlobal pMac, tANI_U32 sessionId,
+                      tCsrRoamModifyProfileFields *pModProfileFields,
+                      tANI_U32 *pRoamId, v_BOOL_t fForce);
+
+#ifdef WLAN_FEATURE_VOWIFI_11R
+tANI_BOOLEAN csrIsProfile11r( tCsrRoamProfile *pProfile );
+tANI_BOOLEAN csrIsAuthType11r( eCsrAuthType AuthType );
+#endif
+
+#ifdef FEATURE_WLAN_CCX
+tANI_BOOLEAN csrIsAuthTypeCCX( eCsrAuthType AuthType );
+tANI_BOOLEAN csrIsProfileCCX( tCsrRoamProfile *pProfile );
+#endif
+
+#endif
+