rlm_domain.h 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561
  1. /*
  2. ** Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/mgmt/rlm_domain.h#1
  3. */
  4. /*! \file "rlm_domain.h"
  5. \brief
  6. */
  7. /*
  8. ** Log: rlm_domain.h
  9. **
  10. ** 01 23 2013 eason.tsai
  11. ** [BORA00002255] [MT6630 Wi-Fi][Driver] develop
  12. ** Rollback //BORA/DEV/MT6630WIFI_DRV/include/mgmt/rlm_domain.h to revision 1
  13. **
  14. ** 09 17 2012 cm.chang
  15. ** [BORA00002149] [MT6630 Wi-Fi] Initial software development
  16. ** Duplicate source from MT6620 v2.3 driver branch
  17. ** (Davinci label: MT6620_WIFI_Driver_V2_3_120913_1942_As_MT6630_Base)
  18. *
  19. * 09 29 2011 cm.chang
  20. * NULL
  21. * Change the function prototype of rlmDomainGetChnlList()
  22. *
  23. * 09 08 2011 cm.chang
  24. * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
  25. * Use new fields ucChannelListMap and ucChannelListIndex in NVRAM
  26. *
  27. * 08 31 2011 cm.chang
  28. * [WCXRP00000969] [MT6620 Wi-Fi][Driver][FW] Channel list for 5G band based on country code
  29. * .
  30. *
  31. * 06 01 2011 cm.chang
  32. * [WCXRP00000756] [MT6620 Wi-Fi][Driver] 1. AIS follow channel of BOW 2. Provide legal channel function
  33. * Provide legal channel function based on domain
  34. *
  35. * 12 07 2010 cm.chang
  36. * [WCXRP00000238] MT6620 Wi-Fi][Driver][FW] Support regulation domain setting from NVRAM and supplicant
  37. * 1. Country code is from NVRAM or supplicant
  38. * 2. Change band definition in CMD/EVENT.
  39. *
  40. * 07 08 2010 cp.wu
  41. *
  42. * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
  43. *
  44. * 06 28 2010 cm.chang
  45. * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver
  46. * 1st draft code for RLM module
  47. *
  48. * 02 23 2010 kevin.huang
  49. * [BORA00000603][WIFISYS] [New Feature] AAA Module Support
  50. * Add support scan channel 1~14 and update scan result's frequency infou1rwduu`wvpghlqg|n`slk+mpdkb
  51. *
  52. * 01 13 2010 cm.chang
  53. * [BORA00000018]Integrate WIFI part into BORA for the 1st time
  54. * Provide query function about full channel list.
  55. *
  56. * Dec 1 2009 mtk01104
  57. * [BORA00000018] Integrate WIFI part into BORA for the 1st time
  58. * Declare public rDomainInfo
  59. *
  60. **
  61. */
  62. #ifndef _RLM_DOMAIN_H
  63. #define _RLM_DOMAIN_H
  64. /*******************************************************************************
  65. * C O M P I L E R F L A G S
  66. ********************************************************************************
  67. */
  68. /*******************************************************************************
  69. * E X T E R N A L R E F E R E N C E S
  70. ********************************************************************************
  71. */
  72. /*******************************************************************************
  73. * C O N S T A N T S
  74. ********************************************************************************
  75. */
  76. #define MAX_SUBBAND_NUM 6
  77. #define MAX_SUBBAND_NUM_5G 8
  78. #define COUNTRY_CODE_NULL ((UINT_16)0x0)
  79. /* ISO/IEC 3166-1 two-character country codes */
  80. #define COUNTRY_CODE_AD (((UINT_16) 'A' << 8) | (UINT_16) 'D') /* Andorra */
  81. #define COUNTRY_CODE_AE (((UINT_16) 'A' << 8) | (UINT_16) 'E') /* UAE */
  82. #define COUNTRY_CODE_AF (((UINT_16) 'A' << 8) | (UINT_16) 'F') /* Afghanistan */
  83. #define COUNTRY_CODE_AG (((UINT_16) 'A' << 8) | (UINT_16) 'G') /* Antigua & Barbuda */
  84. #define COUNTRY_CODE_AI (((UINT_16) 'A' << 8) | (UINT_16) 'I') /* Anguilla */
  85. #define COUNTRY_CODE_AL (((UINT_16) 'A' << 8) | (UINT_16) 'L') /* Albania */
  86. #define COUNTRY_CODE_AM (((UINT_16) 'A' << 8) | (UINT_16) 'M') /* Armenia */
  87. #define COUNTRY_CODE_AN (((UINT_16) 'A' << 8) | (UINT_16) 'N') /* Netherlands Antilles */
  88. #define COUNTRY_CODE_AO (((UINT_16) 'A' << 8) | (UINT_16) 'O') /* Angola */
  89. #define COUNTRY_CODE_AR (((UINT_16) 'A' << 8) | (UINT_16) 'R') /* Argentina */
  90. #define COUNTRY_CODE_AS (((UINT_16) 'A' << 8) | (UINT_16) 'S') /* American Samoa (USA) */
  91. #define COUNTRY_CODE_AT (((UINT_16) 'A' << 8) | (UINT_16) 'T') /* Austria */
  92. #define COUNTRY_CODE_AU (((UINT_16) 'A' << 8) | (UINT_16) 'U') /* Australia */
  93. #define COUNTRY_CODE_AW (((UINT_16) 'A' << 8) | (UINT_16) 'W') /* Aruba */
  94. #define COUNTRY_CODE_AZ (((UINT_16) 'A' << 8) | (UINT_16) 'Z') /* Azerbaijan */
  95. #define COUNTRY_CODE_BA (((UINT_16) 'B' << 8) | (UINT_16) 'A') /* Bosnia and Herzegovina */
  96. #define COUNTRY_CODE_BB (((UINT_16) 'B' << 8) | (UINT_16) 'B') /* Barbados */
  97. #define COUNTRY_CODE_BD (((UINT_16) 'B' << 8) | (UINT_16) 'D') /* Bangladesh */
  98. #define COUNTRY_CODE_BE (((UINT_16) 'B' << 8) | (UINT_16) 'E') /* Belgium */
  99. #define COUNTRY_CODE_BF (((UINT_16) 'B' << 8) | (UINT_16) 'F') /* Burkina Faso */
  100. #define COUNTRY_CODE_BG (((UINT_16) 'B' << 8) | (UINT_16) 'G') /* Bulgaria */
  101. #define COUNTRY_CODE_BH (((UINT_16) 'B' << 8) | (UINT_16) 'H') /* Bahrain */
  102. #define COUNTRY_CODE_BI (((UINT_16) 'B' << 8) | (UINT_16) 'I') /* Burundi */
  103. #define COUNTRY_CODE_BJ (((UINT_16) 'B' << 8) | (UINT_16) 'J') /* Benin */
  104. #define COUNTRY_CODE_BM (((UINT_16) 'B' << 8) | (UINT_16) 'M') /* Bermuda */
  105. #define COUNTRY_CODE_BN (((UINT_16) 'B' << 8) | (UINT_16) 'N') /* Brunei */
  106. #define COUNTRY_CODE_BO (((UINT_16) 'B' << 8) | (UINT_16) 'O') /* Bolivia */
  107. #define COUNTRY_CODE_BR (((UINT_16) 'B' << 8) | (UINT_16) 'R') /* Brazil */
  108. #define COUNTRY_CODE_BS (((UINT_16) 'B' << 8) | (UINT_16) 'S') /* Bahamas */
  109. #define COUNTRY_CODE_BT (((UINT_16) 'B' << 8) | (UINT_16) 'T') /* Bhutan */
  110. #define COUNTRY_CODE_BW (((UINT_16) 'B' << 8) | (UINT_16) 'W') /* Botswana */
  111. #define COUNTRY_CODE_BY (((UINT_16) 'B' << 8) | (UINT_16) 'Y') /* Belarus */
  112. #define COUNTRY_CODE_BZ (((UINT_16) 'B' << 8) | (UINT_16) 'Z') /* Belize */
  113. #define COUNTRY_CODE_CA (((UINT_16) 'C' << 8) | (UINT_16) 'A') /* Canada */
  114. #define COUNTRY_CODE_CD (((UINT_16) 'C' << 8) | (UINT_16) 'D') /* Congo. Democratic Republic of the */
  115. #define COUNTRY_CODE_CF (((UINT_16) 'C' << 8) | (UINT_16) 'F') /* Central African Republic */
  116. #define COUNTRY_CODE_CG (((UINT_16) 'C' << 8) | (UINT_16) 'G') /* Congo. Republic of the */
  117. #define COUNTRY_CODE_CH (((UINT_16) 'C' << 8) | (UINT_16) 'H') /* Switzerland */
  118. #define COUNTRY_CODE_CI (((UINT_16) 'C' << 8) | (UINT_16) 'I') /* Cote d'lvoire */
  119. #define COUNTRY_CODE_CK (((UINT_16) 'C' << 8) | (UINT_16) 'K') /* Cook Island */
  120. #define COUNTRY_CODE_CL (((UINT_16) 'C' << 8) | (UINT_16) 'L') /* Chile */
  121. #define COUNTRY_CODE_CM (((UINT_16) 'C' << 8) | (UINT_16) 'M') /* Cameroon */
  122. #define COUNTRY_CODE_CN (((UINT_16) 'C' << 8) | (UINT_16) 'N') /* China */
  123. #define COUNTRY_CODE_CO (((UINT_16) 'C' << 8) | (UINT_16) 'O') /* Columbia */
  124. #define COUNTRY_CODE_CR (((UINT_16) 'C' << 8) | (UINT_16) 'R') /* Costa Rica */
  125. #define COUNTRY_CODE_CU (((UINT_16) 'C' << 8) | (UINT_16) 'U') /* Cuba */
  126. #define COUNTRY_CODE_CV (((UINT_16) 'C' << 8) | (UINT_16) 'V') /* Cape Verde */
  127. #define COUNTRY_CODE_CX (((UINT_16) 'C' << 8) | (UINT_16) 'X') /* "Christmas Island(Australia) */
  128. #define COUNTRY_CODE_CY (((UINT_16) 'C' << 8) | (UINT_16) 'Y') /* Cyprus */
  129. #define COUNTRY_CODE_CZ (((UINT_16) 'C' << 8) | (UINT_16) 'Z') /* Czech */
  130. #define COUNTRY_CODE_DE (((UINT_16) 'D' << 8) | (UINT_16) 'E') /* Germany */
  131. #define COUNTRY_CODE_DJ (((UINT_16) 'D' << 8) | (UINT_16) 'J') /* Djibouti */
  132. #define COUNTRY_CODE_DK (((UINT_16) 'D' << 8) | (UINT_16) 'K') /* Denmark */
  133. #define COUNTRY_CODE_DM (((UINT_16) 'D' << 8) | (UINT_16) 'M') /* Dominica */
  134. #define COUNTRY_CODE_DO (((UINT_16) 'D' << 8) | (UINT_16) 'O') /* Dominican Republic */
  135. #define COUNTRY_CODE_DZ (((UINT_16) 'D' << 8) | (UINT_16) 'Z') /* Algeria */
  136. #define COUNTRY_CODE_EC (((UINT_16) 'E' << 8) | (UINT_16) 'C') /* Ecuador */
  137. #define COUNTRY_CODE_EE (((UINT_16) 'E' << 8) | (UINT_16) 'E') /* Estonia */
  138. #define COUNTRY_CODE_EG (((UINT_16) 'E' << 8) | (UINT_16) 'G') /* Egypt */
  139. #define COUNTRY_CODE_EH (((UINT_16) 'E' << 8) | (UINT_16) 'H') /* Western Sahara (Morocco) */
  140. #define COUNTRY_CODE_ER (((UINT_16) 'E' << 8) | (UINT_16) 'R') /* Eritrea */
  141. #define COUNTRY_CODE_ES (((UINT_16) 'E' << 8) | (UINT_16) 'S') /* Spain */
  142. #define COUNTRY_CODE_ET (((UINT_16) 'E' << 8) | (UINT_16) 'T') /* Ethiopia */
  143. #define COUNTRY_CODE_EU (((UINT_16) 'E' << 8) | (UINT_16) 'U') /* Europe */
  144. #define COUNTRY_CODE_FI (((UINT_16) 'F' << 8) | (UINT_16) 'I') /* Finland */
  145. #define COUNTRY_CODE_FJ (((UINT_16) 'F' << 8) | (UINT_16) 'J') /* Fiji */
  146. #define COUNTRY_CODE_FK (((UINT_16) 'F' << 8) | (UINT_16) 'K') /* Falkland Island */
  147. #define COUNTRY_CODE_FM (((UINT_16) 'F' << 8) | (UINT_16) 'M') /* Micronesia */
  148. #define COUNTRY_CODE_FO (((UINT_16) 'F' << 8) | (UINT_16) 'O') /* Faroe Island */
  149. #define COUNTRY_CODE_FR (((UINT_16) 'F' << 8) | (UINT_16) 'R') /* France */
  150. #define COUNTRY_CODE_FR (((UINT_16) 'F' << 8) | (UINT_16) 'R') /* Wallis and Futuna (France) */
  151. #define COUNTRY_CODE_GA (((UINT_16) 'G' << 8) | (UINT_16) 'A') /* Gabon */
  152. #define COUNTRY_CODE_GB (((UINT_16) 'G' << 8) | (UINT_16) 'B') /* United Kingdom */
  153. #define COUNTRY_CODE_GD (((UINT_16) 'G' << 8) | (UINT_16) 'D') /* Grenada */
  154. #define COUNTRY_CODE_GE (((UINT_16) 'G' << 8) | (UINT_16) 'E') /* Georgia */
  155. #define COUNTRY_CODE_GF (((UINT_16) 'G' << 8) | (UINT_16) 'F') /* French Guiana */
  156. #define COUNTRY_CODE_GG (((UINT_16) 'G' << 8) | (UINT_16) 'G') /* Guernsey */
  157. #define COUNTRY_CODE_GH (((UINT_16) 'G' << 8) | (UINT_16) 'H') /* Ghana */
  158. #define COUNTRY_CODE_GI (((UINT_16) 'G' << 8) | (UINT_16) 'I') /* Gibraltar */
  159. #define COUNTRY_CODE_GM (((UINT_16) 'G' << 8) | (UINT_16) 'M') /* Gambia */
  160. #define COUNTRY_CODE_GN (((UINT_16) 'G' << 8) | (UINT_16) 'N') /* Guinea */
  161. #define COUNTRY_CODE_GP (((UINT_16) 'G' << 8) | (UINT_16) 'P') /* Guadeloupe */
  162. #define COUNTRY_CODE_GQ (((UINT_16) 'G' << 8) | (UINT_16) 'Q') /* Equatorial Guinea */
  163. #define COUNTRY_CODE_GR (((UINT_16) 'G' << 8) | (UINT_16) 'R') /* Greece */
  164. #define COUNTRY_CODE_GT (((UINT_16) 'G' << 8) | (UINT_16) 'T') /* Guatemala */
  165. #define COUNTRY_CODE_GU (((UINT_16) 'G' << 8) | (UINT_16) 'U') /* Guam */
  166. #define COUNTRY_CODE_GW (((UINT_16) 'G' << 8) | (UINT_16) 'W') /* Guinea-Bissau */
  167. #define COUNTRY_CODE_GY (((UINT_16) 'G' << 8) | (UINT_16) 'Y') /* Guyana */
  168. #define COUNTRY_CODE_HK (((UINT_16) 'H' << 8) | (UINT_16) 'K') /* Hong Kong */
  169. #define COUNTRY_CODE_HN (((UINT_16) 'H' << 8) | (UINT_16) 'N') /* Honduras */
  170. #define COUNTRY_CODE_HR (((UINT_16) 'H' << 8) | (UINT_16) 'R') /* Croatia */
  171. #define COUNTRY_CODE_HT (((UINT_16) 'H' << 8) | (UINT_16) 'T') /* Haiti */
  172. #define COUNTRY_CODE_HU (((UINT_16) 'H' << 8) | (UINT_16) 'U') /* Hungary */
  173. #define COUNTRY_CODE_ID (((UINT_16) 'I' << 8) | (UINT_16) 'D') /* Indonesia */
  174. #define COUNTRY_CODE_IE (((UINT_16) 'I' << 8) | (UINT_16) 'E') /* Ireland */
  175. #define COUNTRY_CODE_IL (((UINT_16) 'I' << 8) | (UINT_16) 'L') /* Israel */
  176. #define COUNTRY_CODE_IM (((UINT_16) 'I' << 8) | (UINT_16) 'M') /* Isle of Man */
  177. #define COUNTRY_CODE_IN (((UINT_16) 'I' << 8) | (UINT_16) 'N') /* India */
  178. #define COUNTRY_CODE_IQ (((UINT_16) 'I' << 8) | (UINT_16) 'Q') /* Iraq */
  179. #define COUNTRY_CODE_IR (((UINT_16) 'I' << 8) | (UINT_16) 'R') /* Iran */
  180. #define COUNTRY_CODE_IS (((UINT_16) 'I' << 8) | (UINT_16) 'S') /* Iceland */
  181. #define COUNTRY_CODE_IT (((UINT_16) 'I' << 8) | (UINT_16) 'T') /* Italy */
  182. #define COUNTRY_CODE_JE (((UINT_16) 'J' << 8) | (UINT_16) 'E') /* Jersey */
  183. #define COUNTRY_CODE_JM (((UINT_16) 'J' << 8) | (UINT_16) 'M') /* Jameica */
  184. #define COUNTRY_CODE_JO (((UINT_16) 'J' << 8) | (UINT_16) 'O') /* Jordan */
  185. #define COUNTRY_CODE_JP (((UINT_16) 'J' << 8) | (UINT_16) 'P') /* Japan */
  186. #define COUNTRY_CODE_KE (((UINT_16) 'K' << 8) | (UINT_16) 'E') /* Kenya */
  187. #define COUNTRY_CODE_KG (((UINT_16) 'K' << 8) | (UINT_16) 'G') /* Kyrgyzstan */
  188. #define COUNTRY_CODE_KH (((UINT_16) 'K' << 8) | (UINT_16) 'H') /* Cambodia */
  189. #define COUNTRY_CODE_KI (((UINT_16) 'K' << 8) | (UINT_16) 'I') /* Kiribati */
  190. #define COUNTRY_CODE_KM (((UINT_16) 'K' << 8) | (UINT_16) 'M') /* Comoros */
  191. #define COUNTRY_CODE_KN (((UINT_16) 'K' << 8) | (UINT_16) 'N') /* Saint Kitts and Nevis */
  192. #define COUNTRY_CODE_KP (((UINT_16) 'K' << 8) | (UINT_16) 'P') /* North Korea */
  193. #define COUNTRY_CODE_KR (((UINT_16) 'K' << 8) | (UINT_16) 'R') /* South Korea */
  194. #define COUNTRY_CODE_KW (((UINT_16) 'K' << 8) | (UINT_16) 'W') /* Kuwait */
  195. #define COUNTRY_CODE_KY (((UINT_16) 'K' << 8) | (UINT_16) 'Y') /* Cayman Islands */
  196. #define COUNTRY_CODE_KZ (((UINT_16) 'K' << 8) | (UINT_16) 'Z') /* Kazakhstan */
  197. #define COUNTRY_CODE_LA (((UINT_16) 'L' << 8) | (UINT_16) 'A') /* Laos */
  198. #define COUNTRY_CODE_LB (((UINT_16) 'L' << 8) | (UINT_16) 'B') /* Lebanon */
  199. #define COUNTRY_CODE_LC (((UINT_16) 'L' << 8) | (UINT_16) 'C') /* Saint Lucia */
  200. #define COUNTRY_CODE_LI (((UINT_16) 'L' << 8) | (UINT_16) 'I') /* Liechtenstein */
  201. #define COUNTRY_CODE_LK (((UINT_16) 'L' << 8) | (UINT_16) 'K') /* Sri Lanka */
  202. #define COUNTRY_CODE_LR (((UINT_16) 'L' << 8) | (UINT_16) 'R') /* Liberia */
  203. #define COUNTRY_CODE_LS (((UINT_16) 'L' << 8) | (UINT_16) 'S') /* Lesotho */
  204. #define COUNTRY_CODE_LT (((UINT_16) 'L' << 8) | (UINT_16) 'T') /* Lithuania */
  205. #define COUNTRY_CODE_LU (((UINT_16) 'L' << 8) | (UINT_16) 'U') /* Luxemburg */
  206. #define COUNTRY_CODE_LV (((UINT_16) 'L' << 8) | (UINT_16) 'V') /* Latvia */
  207. #define COUNTRY_CODE_LY (((UINT_16) 'L' << 8) | (UINT_16) 'Y') /* Libya */
  208. #define COUNTRY_CODE_MA (((UINT_16) 'M' << 8) | (UINT_16) 'A') /* Morocco */
  209. #define COUNTRY_CODE_MC (((UINT_16) 'M' << 8) | (UINT_16) 'C') /* Monaco */
  210. #define COUNTRY_CODE_MD (((UINT_16) 'M' << 8) | (UINT_16) 'D') /* Moldova */
  211. #define COUNTRY_CODE_ME (((UINT_16) 'M' << 8) | (UINT_16) 'E') /* Montenegro */
  212. #define COUNTRY_CODE_MF (((UINT_16) 'M' << 8) | (UINT_16) 'F') /* Saint Martin / Sint Marteen
  213. (Added on window's list) */
  214. #define COUNTRY_CODE_MG (((UINT_16) 'M' << 8) | (UINT_16) 'G') /* Madagascar */
  215. #define COUNTRY_CODE_MH (((UINT_16) 'M' << 8) | (UINT_16) 'H') /* Marshall Islands */
  216. #define COUNTRY_CODE_MK (((UINT_16) 'M' << 8) | (UINT_16) 'K') /* Macedonia */
  217. #define COUNTRY_CODE_ML (((UINT_16) 'M' << 8) | (UINT_16) 'L') /* Mali */
  218. #define COUNTRY_CODE_MM (((UINT_16) 'M' << 8) | (UINT_16) 'M') /* Myanmar */
  219. #define COUNTRY_CODE_MN (((UINT_16) 'M' << 8) | (UINT_16) 'N') /* Mongolia */
  220. #define COUNTRY_CODE_MO (((UINT_16) 'M' << 8) | (UINT_16) 'O') /* Macao */
  221. #define COUNTRY_CODE_MP (((UINT_16) 'M' << 8) | (UINT_16) 'P') /* Northern Mariana Islands (Rota Island.
  222. Saipan and Tinian Island) */
  223. #define COUNTRY_CODE_MQ (((UINT_16) 'M' << 8) | (UINT_16) 'Q') /* Martinique (France) */
  224. #define COUNTRY_CODE_MR (((UINT_16) 'M' << 8) | (UINT_16) 'R') /* Mauritania */
  225. #define COUNTRY_CODE_MS (((UINT_16) 'M' << 8) | (UINT_16) 'S') /* Montserrat (UK) */
  226. #define COUNTRY_CODE_MT (((UINT_16) 'M' << 8) | (UINT_16) 'T') /* Malta */
  227. #define COUNTRY_CODE_MU (((UINT_16) 'M' << 8) | (UINT_16) 'U') /* Mauritius */
  228. #define COUNTRY_CODE_MV (((UINT_16) 'M' << 8) | (UINT_16) 'V') /* Maldives */
  229. #define COUNTRY_CODE_MW (((UINT_16) 'M' << 8) | (UINT_16) 'W') /* Malawi */
  230. #define COUNTRY_CODE_MX (((UINT_16) 'M' << 8) | (UINT_16) 'X') /* Mexico */
  231. #define COUNTRY_CODE_MY (((UINT_16) 'M' << 8) | (UINT_16) 'Y') /* Malaysia */
  232. #define COUNTRY_CODE_MZ (((UINT_16) 'M' << 8) | (UINT_16) 'Z') /* Mozambique */
  233. #define COUNTRY_CODE_NA (((UINT_16) 'N' << 8) | (UINT_16) 'A') /* Namibia */
  234. #define COUNTRY_CODE_NC (((UINT_16) 'N' << 8) | (UINT_16) 'C') /* New Caledonia */
  235. #define COUNTRY_CODE_NE (((UINT_16) 'N' << 8) | (UINT_16) 'E') /* Niger */
  236. #define COUNTRY_CODE_NF (((UINT_16) 'N' << 8) | (UINT_16) 'F') /* Norfolk Island */
  237. #define COUNTRY_CODE_NG (((UINT_16) 'N' << 8) | (UINT_16) 'G') /* Nigeria */
  238. #define COUNTRY_CODE_NI (((UINT_16) 'N' << 8) | (UINT_16) 'I') /* Nicaragua */
  239. #define COUNTRY_CODE_NL (((UINT_16) 'N' << 8) | (UINT_16) 'L') /* Netherlands */
  240. #define COUNTRY_CODE_NO (((UINT_16) 'N' << 8) | (UINT_16) 'O') /* Norway */
  241. #define COUNTRY_CODE_NP (((UINT_16) 'N' << 8) | (UINT_16) 'P') /* Nepal */
  242. #define COUNTRY_CODE_NR (((UINT_16) 'N' << 8) | (UINT_16) 'R') /* Nauru */
  243. #define COUNTRY_CODE_NU (((UINT_16) 'N' << 8) | (UINT_16) 'U') /* Niue */
  244. #define COUNTRY_CODE_NZ (((UINT_16) 'N' << 8) | (UINT_16) 'Z') /* New Zealand */
  245. #define COUNTRY_CODE_OM (((UINT_16) 'O' << 8) | (UINT_16) 'M') /* Oman */
  246. #define COUNTRY_CODE_PA (((UINT_16) 'P' << 8) | (UINT_16) 'A') /* Panama */
  247. #define COUNTRY_CODE_PE (((UINT_16) 'P' << 8) | (UINT_16) 'E') /* Peru */
  248. #define COUNTRY_CODE_PF (((UINT_16) 'P' << 8) | (UINT_16) 'F') /* "French Polynesia */
  249. #define COUNTRY_CODE_PG (((UINT_16) 'P' << 8) | (UINT_16) 'G') /* Papua New Guinea */
  250. #define COUNTRY_CODE_PH (((UINT_16) 'P' << 8) | (UINT_16) 'H') /* Philippines */
  251. #define COUNTRY_CODE_PK (((UINT_16) 'P' << 8) | (UINT_16) 'K') /* Pakistan */
  252. #define COUNTRY_CODE_PL (((UINT_16) 'P' << 8) | (UINT_16) 'L') /* Poland */
  253. #define COUNTRY_CODE_PM (((UINT_16) 'P' << 8) | (UINT_16) 'M') /* Saint Pierre and Miquelon */
  254. #define COUNTRY_CODE_PN (((UINT_16) 'P' << 8) | (UINT_16) 'N') /* Pitcairn Islands */
  255. #define COUNTRY_CODE_PR (((UINT_16) 'P' << 8) | (UINT_16) 'R') /* Puerto Rico (USA) */
  256. #define COUNTRY_CODE_PS (((UINT_16) 'P' << 8) | (UINT_16) 'S') /* Palestinian Authority */
  257. #define COUNTRY_CODE_PT (((UINT_16) 'P' << 8) | (UINT_16) 'T') /* Portugal */
  258. #define COUNTRY_CODE_PW (((UINT_16) 'P' << 8) | (UINT_16) 'W') /* Palau */
  259. #define COUNTRY_CODE_PY (((UINT_16) 'P' << 8) | (UINT_16) 'Y') /* Paraguay */
  260. #define COUNTRY_CODE_QA (((UINT_16) 'Q' << 8) | (UINT_16) 'A') /* Qatar */
  261. #define COUNTRY_CODE_RE (((UINT_16) 'R' << 8) | (UINT_16) 'E') /* Reunion (France) */
  262. #define COUNTRY_CODE_RKS (((UINT_16) 'R' << 8) | (UINT_16) 'K') /* Kosvo (Added on window's list) */
  263. #define COUNTRY_CODE_RO (((UINT_16) 'R' << 8) | (UINT_16) 'O') /* Romania */
  264. #define COUNTRY_CODE_RS (((UINT_16) 'R' << 8) | (UINT_16) 'S') /* Serbia */
  265. #define COUNTRY_CODE_RU (((UINT_16) 'R' << 8) | (UINT_16) 'U') /* Russia */
  266. #define COUNTRY_CODE_RW (((UINT_16) 'R' << 8) | (UINT_16) 'W') /* Rwanda */
  267. #define COUNTRY_CODE_SA (((UINT_16) 'S' << 8) | (UINT_16) 'A') /* Saudi Arabia */
  268. #define COUNTRY_CODE_SB (((UINT_16) 'S' << 8) | (UINT_16) 'B') /* Solomon Islands */
  269. #define COUNTRY_CODE_SC (((UINT_16) 'S' << 8) | (UINT_16) 'C') /* Seychelles */
  270. #define COUNTRY_CODE_SD (((UINT_16) 'S' << 8) | (UINT_16) 'D') /* Sudan */
  271. #define COUNTRY_CODE_SE (((UINT_16) 'S' << 8) | (UINT_16) 'E') /* Sweden */
  272. #define COUNTRY_CODE_SG (((UINT_16) 'S' << 8) | (UINT_16) 'G') /* Singapole */
  273. #define COUNTRY_CODE_SI (((UINT_16) 'S' << 8) | (UINT_16) 'I') /* Slovenia */
  274. #define COUNTRY_CODE_SK (((UINT_16) 'S' << 8) | (UINT_16) 'K') /* Slovakia */
  275. #define COUNTRY_CODE_SL (((UINT_16) 'S' << 8) | (UINT_16) 'L') /* Sierra Leone */
  276. #define COUNTRY_CODE_SM (((UINT_16) 'S' << 8) | (UINT_16) 'M') /* San Marino */
  277. #define COUNTRY_CODE_SN (((UINT_16) 'S' << 8) | (UINT_16) 'N') /* Senegal */
  278. #define COUNTRY_CODE_SO (((UINT_16) 'S' << 8) | (UINT_16) 'O') /* Somalia */
  279. #define COUNTRY_CODE_SR (((UINT_16) 'S' << 8) | (UINT_16) 'R') /* Suriname */
  280. #define COUNTRY_CODE_SS (((UINT_16) 'S' << 8) | (UINT_16) 'S') /* South_Sudan */
  281. #define COUNTRY_CODE_ST (((UINT_16) 'S' << 8) | (UINT_16) 'T') /* Sao Tome and Principe */
  282. #define COUNTRY_CODE_SV (((UINT_16) 'S' << 8) | (UINT_16) 'V') /* El Salvador */
  283. #define COUNTRY_CODE_SY (((UINT_16) 'S' << 8) | (UINT_16) 'Y') /* Syria */
  284. #define COUNTRY_CODE_SZ (((UINT_16) 'S' << 8) | (UINT_16) 'Z') /* Swaziland */
  285. #define COUNTRY_CODE_TC (((UINT_16) 'T' << 8) | (UINT_16) 'C') /* Turks and Caicos Islands (UK) */
  286. #define COUNTRY_CODE_TD (((UINT_16) 'T' << 8) | (UINT_16) 'D') /* Chad */
  287. #define COUNTRY_CODE_TF (((UINT_16) 'T' << 8) | (UINT_16) 'F') /* French Southern and Antarctic Lands */
  288. #define COUNTRY_CODE_TG (((UINT_16) 'T' << 8) | (UINT_16) 'G') /* Togo */
  289. #define COUNTRY_CODE_TH (((UINT_16) 'T' << 8) | (UINT_16) 'H') /* Thailand */
  290. #define COUNTRY_CODE_TJ (((UINT_16) 'T' << 8) | (UINT_16) 'J') /* Tajikistan */
  291. #define COUNTRY_CODE_TL (((UINT_16) 'T' << 8) | (UINT_16) 'L') /* East Timor */
  292. #define COUNTRY_CODE_TM (((UINT_16) 'T' << 8) | (UINT_16) 'M') /* Turkmenistan */
  293. #define COUNTRY_CODE_TN (((UINT_16) 'T' << 8) | (UINT_16) 'N') /* Tunisia */
  294. #define COUNTRY_CODE_TO (((UINT_16) 'T' << 8) | (UINT_16) 'O') /* Tonga */
  295. #define COUNTRY_CODE_TR (((UINT_16) 'T' << 8) | (UINT_16) 'R') /* Turkey */
  296. #define COUNTRY_CODE_TT (((UINT_16) 'T' << 8) | (UINT_16) 'T') /* Trinidad and Tobago */
  297. #define COUNTRY_CODE_TV (((UINT_16) 'T' << 8) | (UINT_16) 'V') /* Tuvalu */
  298. #define COUNTRY_CODE_TW (((UINT_16) 'T' << 8) | (UINT_16) 'W') /* Taiwan */
  299. #define COUNTRY_CODE_TZ (((UINT_16) 'T' << 8) | (UINT_16) 'Z') /* Tanzania */
  300. #define COUNTRY_CODE_UA (((UINT_16) 'U' << 8) | (UINT_16) 'A') /* Ukraine */
  301. #define COUNTRY_CODE_UG (((UINT_16) 'U' << 8) | (UINT_16) 'G') /* Ugnada */
  302. #define COUNTRY_CODE_US (((UINT_16) 'U' << 8) | (UINT_16) 'S') /* US */
  303. #define COUNTRY_CODE_UY (((UINT_16) 'U' << 8) | (UINT_16) 'Y') /* Uruguay */
  304. #define COUNTRY_CODE_UZ (((UINT_16) 'U' << 8) | (UINT_16) 'Z') /* Uzbekistan */
  305. #define COUNTRY_CODE_VA (((UINT_16) 'V' << 8) | (UINT_16) 'A') /* Vatican (Holy See) */
  306. #define COUNTRY_CODE_VC (((UINT_16) 'V' << 8) | (UINT_16) 'C') /* Saint Vincent and the Grenadines */
  307. #define COUNTRY_CODE_VE (((UINT_16) 'V' << 8) | (UINT_16) 'E') /* Venezuela */
  308. #define COUNTRY_CODE_VG (((UINT_16) 'V' << 8) | (UINT_16) 'G') /* British Virgin Islands */
  309. #define COUNTRY_CODE_VI (((UINT_16) 'V' << 8) | (UINT_16) 'I') /* US Virgin Islands */
  310. #define COUNTRY_CODE_VN (((UINT_16) 'V' << 8) | (UINT_16) 'N') /* Vietnam */
  311. #define COUNTRY_CODE_VU (((UINT_16) 'V' << 8) | (UINT_16) 'U') /* Vanuatu */
  312. #define COUNTRY_CODE_WS (((UINT_16) 'W' << 8) | (UINT_16) 'S') /* Samoa */
  313. #define COUNTRY_CODE_YE (((UINT_16) 'Y' << 8) | (UINT_16) 'E') /* Yemen */
  314. #define COUNTRY_CODE_YT (((UINT_16) 'Y' << 8) | (UINT_16) 'T') /* Mayotte (France) */
  315. #define COUNTRY_CODE_ZA (((UINT_16) 'Z' << 8) | (UINT_16) 'A') /* South Africa */
  316. #define COUNTRY_CODE_ZM (((UINT_16) 'Z' << 8) | (UINT_16) 'M') /* Zambia */
  317. #define COUNTRY_CODE_ZW (((UINT_16) 'Z' << 8) | (UINT_16) 'W') /* Zimbabwe */
  318. #define COUNTRY_CODE_DF (((UINT_16) 'D' << 8) | (UINT_16) 'F') /* Default country domain */
  319. /* dot11RegDomainsSupportValue */
  320. #define MIB_REG_DOMAIN_FCC 0x10 /* FCC (US) */
  321. #define MIB_REG_DOMAIN_IC 0x20 /* IC or DOC (Canada) */
  322. #define MIB_REG_DOMAIN_ETSI 0x30 /* ETSI (Europe) */
  323. #define MIB_REG_DOMAIN_SPAIN 0x31 /* Spain */
  324. #define MIB_REG_DOMAIN_FRANCE 0x32 /* France */
  325. #define MIB_REG_DOMAIN_JAPAN 0x40 /* MPHPT (Japan) */
  326. #define MIB_REG_DOMAIN_OTHER 0x00 /* other */
  327. /*2.4G*/
  328. #define BAND_2G4_LOWER_BOUND 1
  329. #define BAND_2G4_UPPER_BOUND 14
  330. /*5G SubBand FCC spec*/
  331. #define UNII1_LOWER_BOUND 36
  332. #define UNII1_UPPER_BOUND 48
  333. #define UNII2A_LOWER_BOUND 52
  334. #define UNII2A_UPPER_BOUND 64
  335. #define UNII2C_LOWER_BOUND 100
  336. #define UNII2C_UPPER_BOUND 144
  337. #define UNII3_LOWER_BOUND 149
  338. #define UNII3_UPPER_BOUND 173
  339. #if CFG_SUPPORT_PWR_LIMIT_COUNTRY
  340. #define POWER_LIMIT_TABLE_NULL 0xFFFF
  341. #define MAX_TX_POWER 63
  342. #define MIN_TX_POWER -64
  343. #define MAX_CMD_SUPPORT_CHANNEL_NUM 64
  344. #endif
  345. /*******************************************************************************
  346. * D A T A T Y P E S
  347. ********************************************************************************
  348. */
  349. #if CFG_SUPPORT_PWR_LIMIT_COUNTRY
  350. typedef enum _ENUM_POWER_LIMIT_T {
  351. PWR_LIMIT_CCK,
  352. PWR_LIMIT_20M,
  353. PWR_LIMIT_40M,
  354. PWR_LIMIT_80M,
  355. PWR_LIMIT_160M,
  356. PWR_LIMIT_NUM
  357. } ENUM_POWER_LIMIT_T, *P_ENUM_POWER_LIMIT_T;
  358. #endif
  359. typedef enum _ENUM_POWER_LIMIT_SUBBAND_T {
  360. POWER_LIMIT_2G4,
  361. POWER_LIMIT_UNII1,
  362. POWER_LIMIT_UNII2A,
  363. POWER_LIMIT_UNII2C,
  364. POWER_LIMIT_UNII3,
  365. POWER_LIMIT_SUBAND_NUM
  366. } ENUM_POWER_LIMIT_SUBBAND_T, *P_ENUM_POWER_LIMIT_SUBBAND_T;
  367. /* Define channel offset in unit of 5MHz bandwidth */
  368. typedef enum _ENUM_CHNL_SPAN_T {
  369. CHNL_SPAN_5 = 1,
  370. CHNL_SPAN_10 = 2,
  371. CHNL_SPAN_20 = 4,
  372. CHNL_SPAN_40 = 8
  373. } ENUM_CHNL_SPAN_T, *P_ENUM_CHNL_SPAN_T;
  374. /* Define BSS operating bandwidth */
  375. typedef enum _ENUM_CHNL_BW_T {
  376. CHNL_BW_20,
  377. CHNL_BW_20_40,
  378. CHNL_BW_10,
  379. CHNL_BW_5
  380. } ENUM_CHNL_BW_T, *P_ENUM_CHNL_BW_T;
  381. /* In all bands, the first channel will be SCA and the second channel is SCB,
  382. * then iteratively.
  383. * Note the final channel will not be SCA.
  384. */
  385. typedef struct _DOMAIN_SUBBAND_INFO {
  386. /* Note1: regulation class depends on operation bandwidth and RF band.
  387. * For example: 2.4GHz, 1~13, 20MHz ==> regulation class = 81
  388. * 2.4GHz, 1~13, SCA ==> regulation class = 83
  389. * 2.4GHz, 1~13, SCB ==> regulation class = 84
  390. * Note2: TX power limit is not specified here because path loss is unknown
  391. */
  392. UINT_8 ucRegClass; /* Regulation class for 20MHz */
  393. UINT_8 ucBand; /* Type: ENUM_BAND_T */
  394. UINT_8 ucChannelSpan; /* Type: ENUM_CHNL_SPAN_T */
  395. UINT_8 ucFirstChannelNum;
  396. UINT_8 ucNumChannels;
  397. UINT_8 fgDfs; /* Type: BOOLEAN */
  398. } DOMAIN_SUBBAND_INFO, *P_DOMAIN_SUBBAND_INFO;
  399. /* Use it as all available channel list for STA */
  400. typedef struct _DOMAIN_INFO_ENTRY {
  401. PUINT_16 pu2CountryGroup;
  402. UINT_32 u4CountryNum;
  403. /* If different attributes, put them into different rSubBands.
  404. * For example, DFS shall be used or not.
  405. */
  406. DOMAIN_SUBBAND_INFO rSubBand[MAX_SUBBAND_NUM];
  407. } DOMAIN_INFO_ENTRY, *P_DOMAIN_INFO_ENTRY;
  408. #if CFG_SUPPORT_PWR_LIMIT_COUNTRY
  409. typedef struct _CHANNEL_POWER_LIMIT {
  410. UINT_8 ucCentralCh;
  411. INT_8 cPwrLimitCCK;
  412. INT_8 cPwrLimit20;
  413. INT_8 cPwrLimit40;
  414. INT_8 cPwrLimit80;
  415. INT_8 cPwrLimit160;
  416. UINT_8 ucFlag;
  417. UINT_8 aucReserved[1];
  418. } CHANNEL_POWER_LIMIT, *P_CHANNEL_POWER_LIMIT;
  419. typedef struct _COUNTRY_CHANNEL_POWER_LIMIT {
  420. UINT_8 aucCountryCode[2];
  421. UINT_8 ucCountryFlag;
  422. UINT_8 ucChannelNum;
  423. UINT_8 aucReserved[4];
  424. CHANNEL_POWER_LIMIT rChannelPowerLimit[80];
  425. } COUNTRY_CHANNEL_POWER_LIMIT, *P_COUNTRY_CHANNEL_POWER_LIMIT;
  426. #define CHANNEL_PWR_LIMIT(_channel, _pwrLimit_cck, _pwrLimit_bw20, \
  427. _pwrLimit_bw40, _pwrLimit_bw80, _pwrLimit_bw160, _ucFlag) \
  428. { \
  429. .ucCentralCh = (_channel), \
  430. .cPwrLimitCCK = (_pwrLimit_cck), \
  431. .cPwrLimit20 = (_pwrLimit_bw20), \
  432. .cPwrLimit40 = (_pwrLimit_bw40), \
  433. .cPwrLimit80 = (_pwrLimit_bw80), \
  434. .cPwrLimit160 = (_pwrLimit_bw160), \
  435. .ucFlag = (_ucFlag), \
  436. .aucReserved = {0} \
  437. }
  438. typedef struct _COUNTRY_POWER_LIMIT_TABLE_DEFAULT {
  439. UINT_8 aucCountryCode[2];
  440. /* 0: ch 1 ~14 , 1: ch 36 ~48, 2: ch 52 ~64, 3: ch 100 ~144, 4: ch 149 ~165 */
  441. INT_8 aucPwrLimitSubBand[POWER_LIMIT_SUBAND_NUM];
  442. /* bit0: cPwrLimit2G4, bit1: cPwrLimitUnii1; bit2: cPwrLimitUnii2A;
  443. * bit3: cPwrLimitUnii2C; bit4: cPwrLimitUnii3; mW: 0, mW\MHz : 1 */
  444. UINT_8 ucPwrUnit;
  445. } COUNTRY_POWER_LIMIT_TABLE_DEFAULT, *P_COUNTRY_POWER_LIMIT_TABLE_DEFAULT;
  446. typedef struct _COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION {
  447. UINT_8 aucCountryCode[2];
  448. UINT_8 ucCentralCh;
  449. INT_8 aucPwrLimit[PWR_LIMIT_NUM];
  450. } COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION, *P_COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION;
  451. typedef struct _SUBBAND_CHANNEL_T {
  452. UINT_8 ucStartCh;
  453. UINT_8 ucEndCh;
  454. UINT_8 ucInterval;
  455. UINT_8 ucReserved;
  456. } SUBBAND_CHANNEL_T, *P_SUBBAND_CHANNEL_T;
  457. #endif
  458. /*******************************************************************************
  459. * P U B L I C D A T A
  460. ********************************************************************************
  461. */
  462. /*******************************************************************************
  463. * P R I V A T E D A T A
  464. ********************************************************************************
  465. */
  466. /*******************************************************************************
  467. * M A C R O S
  468. ********************************************************************************
  469. */
  470. #define CAL_CH_OFFSET_80M(_PRIMARY_CH, _CENTRAL_CH) \
  471. (((_PRIMARY_CH - _CENTRAL_CH) + 6) >> 2)
  472. #define CAL_CH_OFFSET_160M(_PRIMARY_CH, _CENTRAL_CH) \
  473. (((_PRIMARY_CH - _CENTRAL_CH) + 14) >> 2)
  474. /*******************************************************************************
  475. * F U N C T I O N D E C L A R A T I O N S
  476. ********************************************************************************
  477. */
  478. P_DOMAIN_INFO_ENTRY rlmDomainGetDomainInfo(P_ADAPTER_T prAdapter);
  479. VOID
  480. rlmDomainGetChnlList(P_ADAPTER_T prAdapter,
  481. ENUM_BAND_T eSpecificBand, BOOLEAN fgNoDfs,
  482. UINT_8 ucMaxChannelNum, PUINT_8 pucNumOfChannel, P_RF_CHANNEL_INFO_T paucChannelList);
  483. VOID rlmDomainSendCmd(P_ADAPTER_T prAdapter, BOOLEAN fgIsOid);
  484. VOID rlmDomainSendDomainInfoCmd(P_ADAPTER_T prAdapter, BOOLEAN fgIsOid);
  485. VOID rlmDomainSendPassiveScanInfoCmd(P_ADAPTER_T prAdapter, BOOLEAN fgIsOid);
  486. BOOLEAN rlmDomainIsLegalChannel(P_ADAPTER_T prAdapter, ENUM_BAND_T eBand, UINT_8 ucChannel);
  487. UINT_32 rlmDomainSupOperatingClassIeFill(PUINT_8 pBuf);
  488. BOOLEAN rlmDomainCheckChannelEntryValid(P_ADAPTER_T prAdapter, UINT_8 ucCentralCh);
  489. UINT_8 rlmDomainGetCenterChannel(ENUM_BAND_T eBand, UINT_8 ucPriChannel, ENUM_CHNL_EXT_T eExtend);
  490. BOOLEAN rlmDomainIsValidRfSetting(P_ADAPTER_T prAdapter, ENUM_BAND_T eBand,
  491. UINT_8 ucPriChannel, ENUM_CHNL_EXT_T eExtend,
  492. ENUM_CHANNEL_WIDTH_T eChannelWidth, UINT_8 ucChannelS1, UINT_8 ucChannelS2);
  493. #if CFG_SUPPORT_PWR_LIMIT_COUNTRY
  494. BOOLEAN
  495. rlmDomainCheckPowerLimitValid(P_ADAPTER_T prAdapter,
  496. COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION rPowerLimitTableConfiguration,
  497. UINT_8 ucPwrLimitNum);
  498. VOID rlmDomainCheckCountryPowerLimitTable(P_ADAPTER_T prAdapter);
  499. UINT_16 rlmDomainPwrLimitDefaultTableDecision(P_ADAPTER_T prAdapter, UINT_16 u2CountryCode);
  500. VOID rlmDomainSendPwrLimitCmd(P_ADAPTER_T prAdapter);
  501. #endif
  502. /*******************************************************************************
  503. * F U N C T I O N S
  504. ********************************************************************************
  505. */
  506. #endif /* _RLM_DOMAIN_H */