odm.h 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of version 2 of the GNU General Public License as
  7. * published by the Free Software Foundation.
  8. *
  9. * This program is distributed in the hope that it will be useful, but WITHOUT
  10. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12. * more details.
  13. *
  14. * You should have received a copy of the GNU General Public License along with
  15. * this program; if not, write to the Free Software Foundation, Inc.,
  16. * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
  17. *
  18. *
  19. ******************************************************************************/
  20. #ifndef __HALDMOUTSRC_H__
  21. #define __HALDMOUTSRC_H__
  22. /* Definition */
  23. /* Define all team support ability. */
  24. /* Define for all teams. Please Define the constant in your precomp header. */
  25. /* define DM_ODM_SUPPORT_AP 0 */
  26. /* define DM_ODM_SUPPORT_ADSL 0 */
  27. /* define DM_ODM_SUPPORT_CE 0 */
  28. /* define DM_ODM_SUPPORT_MP 1 */
  29. /* Define ODM SW team support flag. */
  30. /* Antenna Switch Relative Definition. */
  31. /* Add new function SwAntDivCheck8192C(). */
  32. /* This is the main function of Antenna diversity function before link. */
  33. /* Mainly, it just retains last scan result and scan again. */
  34. /* After that, it compares the scan result to see which one gets better
  35. * RSSI. It selects antenna with better receiving power and returns better
  36. * scan result. */
  37. #define TP_MODE 0
  38. #define RSSI_MODE 1
  39. #define TRAFFIC_LOW 0
  40. #define TRAFFIC_HIGH 1
  41. /* 3 Tx Power Tracking */
  42. /* 3============================================================ */
  43. #define DPK_DELTA_MAPPING_NUM 13
  44. #define index_mapping_HP_NUM 15
  45. /* */
  46. /* 3 PSD Handler */
  47. /* 3============================================================ */
  48. #define AFH_PSD 1 /* 0:normal PSD scan, 1: only do 20 pts PSD */
  49. #define MODE_40M 0 /* 0:20M, 1:40M */
  50. #define PSD_TH2 3
  51. #define PSD_CHM 20 /* Minimum channel number for BT AFH */
  52. #define SIR_STEP_SIZE 3
  53. #define Smooth_Size_1 5
  54. #define Smooth_TH_1 3
  55. #define Smooth_Size_2 10
  56. #define Smooth_TH_2 4
  57. #define Smooth_Size_3 20
  58. #define Smooth_TH_3 4
  59. #define Smooth_Step_Size 5
  60. #define Adaptive_SIR 1
  61. #define PSD_RESCAN 4
  62. #define PSD_SCAN_INTERVAL 700 /* ms */
  63. /* 8723A High Power IGI Setting */
  64. #define DM_DIG_HIGH_PWR_IGI_LOWER_BOUND 0x22
  65. #define DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28
  66. #define DM_DIG_HIGH_PWR_THRESHOLD 0x3a
  67. /* LPS define */
  68. #define DM_DIG_FA_TH0_LPS 4 /* 4 in lps */
  69. #define DM_DIG_FA_TH1_LPS 15 /* 15 lps */
  70. #define DM_DIG_FA_TH2_LPS 30 /* 30 lps */
  71. #define RSSI_OFFSET_DIG 0x05;
  72. /* ANT Test */
  73. #define ANTTESTALL 0x00 /* Ant A or B will be Testing */
  74. #define ANTTESTA 0x01 /* Ant A will be Testing */
  75. #define ANTTESTB 0x02 /* Ant B will be testing */
  76. struct rtw_dig {
  77. u8 Dig_Enable_Flag;
  78. u8 Dig_Ext_Port_Stage;
  79. int RssiLowThresh;
  80. int RssiHighThresh;
  81. u32 FALowThresh;
  82. u32 FAHighThresh;
  83. u8 CurSTAConnectState;
  84. u8 PreSTAConnectState;
  85. u8 CurMultiSTAConnectState;
  86. u8 PreIGValue;
  87. u8 CurIGValue;
  88. u8 BackupIGValue;
  89. s8 BackoffVal;
  90. s8 BackoffVal_range_max;
  91. s8 BackoffVal_range_min;
  92. u8 rx_gain_range_max;
  93. u8 rx_gain_range_min;
  94. u8 Rssi_val_min;
  95. u8 PreCCK_CCAThres;
  96. u8 CurCCK_CCAThres;
  97. u8 PreCCKPDState;
  98. u8 CurCCKPDState;
  99. u8 LargeFAHit;
  100. u8 ForbiddenIGI;
  101. u32 Recover_cnt;
  102. u8 DIG_Dynamic_MIN_0;
  103. u8 DIG_Dynamic_MIN_1;
  104. bool bMediaConnect_0;
  105. bool bMediaConnect_1;
  106. u32 AntDiv_RSSI_max;
  107. u32 RSSI_max;
  108. };
  109. struct rtl_ps {
  110. u8 PreCCAState;
  111. u8 CurCCAState;
  112. u8 PreRFState;
  113. u8 CurRFState;
  114. int Rssi_val_min;
  115. u8 initialize;
  116. u32 Reg874, RegC70, Reg85C, RegA74;
  117. };
  118. struct false_alarm_stats {
  119. u32 Cnt_Parity_Fail;
  120. u32 Cnt_Rate_Illegal;
  121. u32 Cnt_Crc8_fail;
  122. u32 Cnt_Mcs_fail;
  123. u32 Cnt_Ofdm_fail;
  124. u32 Cnt_Cck_fail;
  125. u32 Cnt_all;
  126. u32 Cnt_Fast_Fsync;
  127. u32 Cnt_SB_Search_fail;
  128. u32 Cnt_OFDM_CCA;
  129. u32 Cnt_CCK_CCA;
  130. u32 Cnt_CCA_all;
  131. u32 Cnt_BW_USC; /* Gary */
  132. u32 Cnt_BW_LSC; /* Gary */
  133. };
  134. struct rx_hpc {
  135. u8 RXHP_flag;
  136. u8 PSD_func_trigger;
  137. u8 PSD_bitmap_RXHP[80];
  138. u8 Pre_IGI;
  139. u8 Cur_IGI;
  140. u8 Pre_pw_th;
  141. u8 Cur_pw_th;
  142. bool First_time_enter;
  143. bool RXHP_enable;
  144. u8 TP_Mode;
  145. struct timer_list PSDTimer;
  146. };
  147. #define ASSOCIATE_ENTRY_NUM 32 /* Max size of AsocEntry[]. */
  148. #define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM
  149. /* This indicates two different steps. */
  150. /* In SWAW_STEP_PEAK, driver needs to switch antenna and listen to
  151. * the signal on the air. */
  152. /* In SWAW_STEP_DETERMINE, driver just compares the signal captured in
  153. * SWAW_STEP_PEAK with original RSSI to determine if it is necessary to
  154. * switch antenna. */
  155. #define SWAW_STEP_PEAK 0
  156. #define SWAW_STEP_DETERMINE 1
  157. #define TP_MODE 0
  158. #define RSSI_MODE 1
  159. #define TRAFFIC_LOW 0
  160. #define TRAFFIC_HIGH 1
  161. struct sw_ant_switch {
  162. u8 try_flag;
  163. s32 PreRSSI;
  164. u8 CurAntenna;
  165. u8 PreAntenna;
  166. u8 RSSI_Trying;
  167. u8 TestMode;
  168. u8 bTriggerAntennaSwitch;
  169. u8 SelectAntennaMap;
  170. u8 RSSI_target;
  171. /* Before link Antenna Switch check */
  172. u8 SWAS_NoLink_State;
  173. u32 SWAS_NoLink_BK_Reg860;
  174. bool ANTA_ON; /* To indicate Ant A is or not */
  175. bool ANTB_ON; /* To indicate Ant B is on or not */
  176. s32 RSSI_sum_A;
  177. s32 RSSI_sum_B;
  178. s32 RSSI_cnt_A;
  179. s32 RSSI_cnt_B;
  180. u64 lastTxOkCnt;
  181. u64 lastRxOkCnt;
  182. u64 TXByteCnt_A;
  183. u64 TXByteCnt_B;
  184. u64 RXByteCnt_A;
  185. u64 RXByteCnt_B;
  186. u8 TrafficLoad;
  187. struct timer_list SwAntennaSwitchTimer;
  188. /* Hybrid Antenna Diversity */
  189. u32 CCK_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
  190. u32 CCK_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
  191. u32 OFDM_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
  192. u32 OFDM_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
  193. u32 RSSI_Ant1_Sum[ASSOCIATE_ENTRY_NUM];
  194. u32 RSSI_Ant2_Sum[ASSOCIATE_ENTRY_NUM];
  195. u8 TxAnt[ASSOCIATE_ENTRY_NUM];
  196. u8 TargetSTA;
  197. u8 antsel;
  198. u8 RxIdleAnt;
  199. };
  200. struct edca_turbo {
  201. bool bCurrentTurboEDCA;
  202. bool bIsCurRDLState;
  203. u32 prv_traffic_idx; /* edca turbo */
  204. };
  205. struct odm_rate_adapt {
  206. u8 Type; /* DM_Type_ByFW/DM_Type_ByDriver */
  207. u8 HighRSSIThresh; /* if RSSI > HighRSSIThresh => RATRState is DM_RATR_STA_HIGH */
  208. u8 LowRSSIThresh; /* if RSSI <= LowRSSIThresh => RATRState is DM_RATR_STA_LOW */
  209. u8 RATRState; /* Current RSSI level, DM_RATR_STA_HIGH/DM_RATR_STA_MIDDLE/DM_RATR_STA_LOW */
  210. u32 LastRATR; /* RATR Register Content */
  211. };
  212. #define IQK_MAC_REG_NUM 4
  213. #define IQK_ADDA_REG_NUM 16
  214. #define IQK_BB_REG_NUM_MAX 10
  215. #define IQK_BB_REG_NUM 9
  216. #define HP_THERMAL_NUM 8
  217. #define AVG_THERMAL_NUM 8
  218. #define IQK_Matrix_REG_NUM 8
  219. #define IQK_Matrix_Settings_NUM 1+24+21
  220. #define DM_Type_ByFWi 0
  221. #define DM_Type_ByDriver 1
  222. /* Declare for common info */
  223. struct odm_phy_status_info {
  224. u8 RxPWDBAll;
  225. u8 SignalQuality; /* in 0-100 index. */
  226. u8 RxMIMOSignalQuality[MAX_PATH_NUM_92CS]; /* EVM */
  227. u8 RxMIMOSignalStrength[MAX_PATH_NUM_92CS];/* in 0~100 index */
  228. s8 RxPower; /* in dBm Translate from PWdB */
  229. s8 RecvSignalPower;/* Real power in dBm for this packet, no
  230. * beautification and aggregation. Keep this raw
  231. * info to be used for the other procedures. */
  232. u8 BTRxRSSIPercentage;
  233. u8 SignalStrength; /* in 0-100 index. */
  234. u8 RxPwr[MAX_PATH_NUM_92CS];/* per-path's pwdb */
  235. u8 RxSNR[MAX_PATH_NUM_92CS];/* per-path's SNR */
  236. };
  237. struct odm_phy_dbg_info {
  238. /* ODM Write,debug info */
  239. s8 RxSNRdB[MAX_PATH_NUM_92CS];
  240. u64 NumQryPhyStatus;
  241. u64 NumQryPhyStatusCCK;
  242. u64 NumQryPhyStatusOFDM;
  243. /* Others */
  244. s32 RxEVM[MAX_PATH_NUM_92CS];
  245. };
  246. struct odm_per_pkt_info {
  247. s8 Rate;
  248. u8 StationID;
  249. bool bPacketMatchBSSID;
  250. bool bPacketToSelf;
  251. bool bPacketBeacon;
  252. };
  253. struct odm_mac_status_info {
  254. u8 test;
  255. };
  256. enum odm_ability {
  257. /* BB Team */
  258. ODM_DIG = 0x00000001,
  259. ODM_HIGH_POWER = 0x00000002,
  260. ODM_CCK_CCA_TH = 0x00000004,
  261. ODM_FA_STATISTICS = 0x00000008,
  262. ODM_RAMASK = 0x00000010,
  263. ODM_RSSI_MONITOR = 0x00000020,
  264. ODM_SW_ANTDIV = 0x00000040,
  265. ODM_HW_ANTDIV = 0x00000080,
  266. ODM_BB_PWRSV = 0x00000100,
  267. ODM_2TPATHDIV = 0x00000200,
  268. ODM_1TPATHDIV = 0x00000400,
  269. ODM_PSD2AFH = 0x00000800
  270. };
  271. /* 2011/20/20 MH For MP driver RT_WLAN_STA = struct sta_info */
  272. /* Please declare below ODM relative info in your STA info structure. */
  273. struct odm_sta_info {
  274. /* Driver Write */
  275. bool bUsed; /* record the sta status link or not? */
  276. u8 IOTPeer; /* Enum value. HT_IOT_PEER_E */
  277. /* ODM Write */
  278. /* 1 PHY_STATUS_INFO */
  279. u8 RSSI_Path[4]; /* */
  280. u8 RSSI_Ave;
  281. u8 RXEVM[4];
  282. u8 RXSNR[4];
  283. };
  284. /* 2011/10/20 MH Define Common info enum for all team. */
  285. enum odm_common_info_def {
  286. /* Fixed value: */
  287. /* HOOK BEFORE REG INIT----------- */
  288. ODM_CMNINFO_PLATFORM = 0,
  289. ODM_CMNINFO_ABILITY, /* ODM_ABILITY_E */
  290. ODM_CMNINFO_INTERFACE, /* ODM_INTERFACE_E */
  291. ODM_CMNINFO_MP_TEST_CHIP,
  292. ODM_CMNINFO_IC_TYPE, /* ODM_IC_TYPE_E */
  293. ODM_CMNINFO_CUT_VER, /* ODM_CUT_VERSION_E */
  294. ODM_CMNINFO_FAB_VER, /* ODM_FAB_E */
  295. ODM_CMNINFO_RF_TYPE, /* ODM_RF_PATH_E or ODM_RF_TYPE_E? */
  296. ODM_CMNINFO_BOARD_TYPE, /* ODM_BOARD_TYPE_E */
  297. ODM_CMNINFO_EXT_LNA, /* true */
  298. ODM_CMNINFO_EXT_PA,
  299. ODM_CMNINFO_EXT_TRSW,
  300. ODM_CMNINFO_PATCH_ID, /* CUSTOMER ID */
  301. ODM_CMNINFO_BINHCT_TEST,
  302. ODM_CMNINFO_BWIFI_TEST,
  303. ODM_CMNINFO_SMART_CONCURRENT,
  304. /* HOOK BEFORE REG INIT----------- */
  305. /* Dynamic value: */
  306. /* POINTER REFERENCE----------- */
  307. ODM_CMNINFO_MAC_PHY_MODE, /* ODM_MAC_PHY_MODE_E */
  308. ODM_CMNINFO_TX_UNI,
  309. ODM_CMNINFO_RX_UNI,
  310. ODM_CMNINFO_WM_MODE, /* ODM_WIRELESS_MODE_E */
  311. ODM_CMNINFO_BAND, /* ODM_BAND_TYPE_E */
  312. ODM_CMNINFO_SEC_CHNL_OFFSET, /* ODM_SEC_CHNL_OFFSET_E */
  313. ODM_CMNINFO_SEC_MODE, /* ODM_SECURITY_E */
  314. ODM_CMNINFO_BW, /* ODM_BW_E */
  315. ODM_CMNINFO_CHNL,
  316. ODM_CMNINFO_DMSP_GET_VALUE,
  317. ODM_CMNINFO_BUDDY_ADAPTOR,
  318. ODM_CMNINFO_DMSP_IS_MASTER,
  319. ODM_CMNINFO_SCAN,
  320. ODM_CMNINFO_POWER_SAVING,
  321. ODM_CMNINFO_ONE_PATH_CCA, /* ODM_CCA_PATH_E */
  322. ODM_CMNINFO_DRV_STOP,
  323. ODM_CMNINFO_PNP_IN,
  324. ODM_CMNINFO_INIT_ON,
  325. ODM_CMNINFO_ANT_TEST,
  326. ODM_CMNINFO_NET_CLOSED,
  327. ODM_CMNINFO_MP_MODE,
  328. /* POINTER REFERENCE----------- */
  329. /* CALL BY VALUE------------- */
  330. ODM_CMNINFO_WIFI_DIRECT,
  331. ODM_CMNINFO_WIFI_DISPLAY,
  332. ODM_CMNINFO_LINK,
  333. ODM_CMNINFO_RSSI_MIN,
  334. ODM_CMNINFO_DBG_COMP, /* u64 */
  335. ODM_CMNINFO_DBG_LEVEL, /* u32 */
  336. ODM_CMNINFO_RA_THRESHOLD_HIGH, /* u8 */
  337. ODM_CMNINFO_RA_THRESHOLD_LOW, /* u8 */
  338. ODM_CMNINFO_RF_ANTENNA_TYPE, /* u8 */
  339. ODM_CMNINFO_BT_DISABLED,
  340. ODM_CMNINFO_BT_OPERATION,
  341. ODM_CMNINFO_BT_DIG,
  342. ODM_CMNINFO_BT_BUSY, /* Check Bt is using or not */
  343. ODM_CMNINFO_BT_DISABLE_EDCA,
  344. /* CALL BY VALUE-------------*/
  345. /* Dynamic ptr array hook itms. */
  346. ODM_CMNINFO_STA_STATUS,
  347. ODM_CMNINFO_PHY_STATUS,
  348. ODM_CMNINFO_MAC_STATUS,
  349. ODM_CMNINFO_MAX,
  350. };
  351. /* 2011/10/20 MH Define ODM support ability. ODM_CMNINFO_ABILITY */
  352. enum odm_ability_def {
  353. /* BB ODM section BIT 0-15 */
  354. ODM_BB_DIG = BIT(0),
  355. ODM_BB_RA_MASK = BIT(1),
  356. ODM_BB_DYNAMIC_TXPWR = BIT(2),
  357. ODM_BB_FA_CNT = BIT(3),
  358. ODM_BB_RSSI_MONITOR = BIT(4),
  359. ODM_BB_CCK_PD = BIT(5),
  360. ODM_BB_ANT_DIV = BIT(6),
  361. ODM_BB_PWR_SAVE = BIT(7),
  362. ODM_BB_PWR_TRA = BIT(8),
  363. ODM_BB_RATE_ADAPTIVE = BIT(9),
  364. ODM_BB_PATH_DIV = BIT(10),
  365. ODM_BB_PSD = BIT(11),
  366. ODM_BB_RXHP = BIT(12),
  367. /* MAC DM section BIT 16-23 */
  368. ODM_MAC_EDCA_TURBO = BIT(16),
  369. ODM_MAC_EARLY_MODE = BIT(17),
  370. /* RF ODM section BIT 24-31 */
  371. ODM_RF_TX_PWR_TRACK = BIT(24),
  372. ODM_RF_RX_GAIN_TRACK = BIT(25),
  373. ODM_RF_CALIBRATION = BIT(26),
  374. };
  375. #define ODM_RTL8188E BIT(4)
  376. /* ODM_CMNINFO_CUT_VER */
  377. enum odm_cut_version {
  378. ODM_CUT_A = 1,
  379. ODM_CUT_B = 2,
  380. ODM_CUT_C = 3,
  381. ODM_CUT_D = 4,
  382. ODM_CUT_E = 5,
  383. ODM_CUT_F = 6,
  384. ODM_CUT_TEST = 7,
  385. };
  386. /* ODM_CMNINFO_FAB_VER */
  387. enum odm_fab_Version {
  388. ODM_TSMC = 0,
  389. ODM_UMC = 1,
  390. };
  391. /* ODM_CMNINFO_RF_TYPE */
  392. /* For example 1T2R (A+AB = BIT0|BIT4|BIT5) */
  393. enum odm_rf_path {
  394. ODM_RF_TX_A = BIT(0),
  395. ODM_RF_TX_B = BIT(1),
  396. ODM_RF_TX_C = BIT(2),
  397. ODM_RF_TX_D = BIT(3),
  398. ODM_RF_RX_A = BIT(4),
  399. ODM_RF_RX_B = BIT(5),
  400. ODM_RF_RX_C = BIT(6),
  401. ODM_RF_RX_D = BIT(7),
  402. };
  403. enum odm_rf_type {
  404. ODM_1T1R = 0,
  405. ODM_1T2R = 1,
  406. ODM_2T2R = 2,
  407. ODM_2T3R = 3,
  408. ODM_2T4R = 4,
  409. ODM_3T3R = 5,
  410. ODM_3T4R = 6,
  411. ODM_4T4R = 7,
  412. };
  413. /* ODM Dynamic common info value definition */
  414. enum odm_mac_phy_mode {
  415. ODM_SMSP = 0,
  416. ODM_DMSP = 1,
  417. ODM_DMDP = 2,
  418. };
  419. enum odm_bt_coexist {
  420. ODM_BT_BUSY = 1,
  421. ODM_BT_ON = 2,
  422. ODM_BT_OFF = 3,
  423. ODM_BT_NONE = 4,
  424. };
  425. /* ODM_CMNINFO_OP_MODE */
  426. enum odm_operation_mode {
  427. ODM_NO_LINK = BIT(0),
  428. ODM_LINK = BIT(1),
  429. ODM_SCAN = BIT(2),
  430. ODM_POWERSAVE = BIT(3),
  431. ODM_AP_MODE = BIT(4),
  432. ODM_CLIENT_MODE = BIT(5),
  433. ODM_AD_HOC = BIT(6),
  434. ODM_WIFI_DIRECT = BIT(7),
  435. ODM_WIFI_DISPLAY = BIT(8),
  436. };
  437. /* ODM_CMNINFO_WM_MODE */
  438. enum odm_wireless_mode {
  439. ODM_WM_UNKNOW = 0x0,
  440. ODM_WM_B = BIT(0),
  441. ODM_WM_G = BIT(1),
  442. ODM_WM_A = BIT(2),
  443. ODM_WM_N24G = BIT(3),
  444. ODM_WM_N5G = BIT(4),
  445. ODM_WM_AUTO = BIT(5),
  446. ODM_WM_AC = BIT(6),
  447. };
  448. /* ODM_CMNINFO_BAND */
  449. enum odm_band_type {
  450. ODM_BAND_2_4G = BIT(0),
  451. ODM_BAND_5G = BIT(1),
  452. };
  453. /* ODM_CMNINFO_SEC_CHNL_OFFSET */
  454. enum odm_sec_chnl_offset {
  455. ODM_DONT_CARE = 0,
  456. ODM_BELOW = 1,
  457. ODM_ABOVE = 2
  458. };
  459. /* ODM_CMNINFO_SEC_MODE */
  460. enum odm_security {
  461. ODM_SEC_OPEN = 0,
  462. ODM_SEC_WEP40 = 1,
  463. ODM_SEC_TKIP = 2,
  464. ODM_SEC_RESERVE = 3,
  465. ODM_SEC_AESCCMP = 4,
  466. ODM_SEC_WEP104 = 5,
  467. ODM_WEP_WPA_MIXED = 6, /* WEP + WPA */
  468. ODM_SEC_SMS4 = 7,
  469. };
  470. /* ODM_CMNINFO_BW */
  471. enum odm_bw {
  472. ODM_BW20M = 0,
  473. ODM_BW40M = 1,
  474. ODM_BW80M = 2,
  475. ODM_BW160M = 3,
  476. ODM_BW10M = 4,
  477. };
  478. /* ODM_CMNINFO_BOARD_TYPE */
  479. enum odm_board_type {
  480. ODM_BOARD_NORMAL = 0,
  481. ODM_BOARD_HIGHPWR = 1,
  482. ODM_BOARD_MINICARD = 2,
  483. ODM_BOARD_SLIM = 3,
  484. ODM_BOARD_COMBO = 4,
  485. };
  486. /* ODM_CMNINFO_ONE_PATH_CCA */
  487. enum odm_cca_path {
  488. ODM_CCA_2R = 0,
  489. ODM_CCA_1R_A = 1,
  490. ODM_CCA_1R_B = 2,
  491. };
  492. struct odm_ra_info {
  493. u8 RateID;
  494. u32 RateMask;
  495. u32 RAUseRate;
  496. u8 RateSGI;
  497. u8 RssiStaRA;
  498. u8 PreRssiStaRA;
  499. u8 SGIEnable;
  500. u8 DecisionRate;
  501. u8 PreRate;
  502. u8 HighestRate;
  503. u8 LowestRate;
  504. u32 NscUp;
  505. u32 NscDown;
  506. u16 RTY[5];
  507. u32 TOTAL;
  508. u16 DROP;
  509. u8 Active;
  510. u16 RptTime;
  511. u8 RAWaitingCounter;
  512. u8 RAPendingCounter;
  513. u8 PTActive; /* on or off */
  514. u8 PTTryState; /* 0 trying state, 1 for decision state */
  515. u8 PTStage; /* 0~6 */
  516. u8 PTStopCount; /* Stop PT counter */
  517. u8 PTPreRate; /* if rate change do PT */
  518. u8 PTPreRssi; /* if RSSI change 5% do PT */
  519. u8 PTModeSS; /* decide whitch rate should do PT */
  520. u8 RAstage; /* StageRA, decide how many times RA will be done
  521. * between PT */
  522. u8 PTSmoothFactor;
  523. };
  524. struct ijk_matrix_regs_set {
  525. bool bIQKDone;
  526. s32 Value[1][IQK_Matrix_REG_NUM];
  527. };
  528. struct odm_rf_cal {
  529. /* for tx power tracking */
  530. u32 RegA24; /* for TempCCK */
  531. s32 RegE94;
  532. s32 RegE9C;
  533. s32 RegEB4;
  534. s32 RegEBC;
  535. u8 TXPowercount;
  536. bool bTXPowerTrackingInit;
  537. bool bTXPowerTracking;
  538. u8 TxPowerTrackControl; /* for mp mode, turn off txpwrtracking
  539. * as default */
  540. u8 TM_Trigger;
  541. u8 InternalPA5G[2]; /* pathA / pathB */
  542. u8 ThermalMeter[2]; /* ThermalMeter, index 0 for RFIC0,
  543. * and 1 for RFIC1 */
  544. u8 ThermalValue;
  545. u8 ThermalValue_LCK;
  546. u8 ThermalValue_IQK;
  547. u8 ThermalValue_DPK;
  548. u8 ThermalValue_AVG[AVG_THERMAL_NUM];
  549. u8 ThermalValue_AVG_index;
  550. u8 ThermalValue_RxGain;
  551. u8 ThermalValue_Crystal;
  552. u8 ThermalValue_DPKstore;
  553. u8 ThermalValue_DPKtrack;
  554. bool TxPowerTrackingInProgress;
  555. bool bDPKenable;
  556. bool bReloadtxpowerindex;
  557. u8 bRfPiEnable;
  558. u32 TXPowerTrackingCallbackCnt; /* cosa add for debug */
  559. u8 bCCKinCH14;
  560. u8 CCK_index;
  561. u8 OFDM_index[2];
  562. bool bDoneTxpower;
  563. u8 ThermalValue_HP[HP_THERMAL_NUM];
  564. u8 ThermalValue_HP_index;
  565. struct ijk_matrix_regs_set IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];
  566. u8 Delta_IQK;
  567. u8 Delta_LCK;
  568. /* for IQK */
  569. u32 RegC04;
  570. u32 Reg874;
  571. u32 RegC08;
  572. u32 RegB68;
  573. u32 RegB6C;
  574. u32 Reg870;
  575. u32 Reg860;
  576. u32 Reg864;
  577. bool bIQKInitialized;
  578. bool bLCKInProgress;
  579. bool bAntennaDetected;
  580. u32 ADDA_backup[IQK_ADDA_REG_NUM];
  581. u32 IQK_MAC_backup[IQK_MAC_REG_NUM];
  582. u32 IQK_BB_backup_recover[9];
  583. u32 IQK_BB_backup[IQK_BB_REG_NUM];
  584. /* for APK */
  585. u32 APKoutput[2][2]; /* path A/B; output1_1a/output1_2a */
  586. u8 bAPKdone;
  587. u8 bAPKThermalMeterIgnore;
  588. u8 bDPdone;
  589. u8 bDPPathAOK;
  590. u8 bDPPathBOK;
  591. };
  592. /* ODM Dynamic common info value definition */
  593. struct fast_ant_train {
  594. u8 Bssid[6];
  595. u8 antsel_rx_keep_0;
  596. u8 antsel_rx_keep_1;
  597. u8 antsel_rx_keep_2;
  598. u32 antSumRSSI[7];
  599. u32 antRSSIcnt[7];
  600. u32 antAveRSSI[7];
  601. u8 FAT_State;
  602. u32 TrainIdx;
  603. u8 antsel_a[ODM_ASSOCIATE_ENTRY_NUM];
  604. u8 antsel_b[ODM_ASSOCIATE_ENTRY_NUM];
  605. u8 antsel_c[ODM_ASSOCIATE_ENTRY_NUM];
  606. u32 MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
  607. u32 AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
  608. u32 MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
  609. u32 AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
  610. u8 RxIdleAnt;
  611. bool bBecomeLinked;
  612. };
  613. enum fat_state {
  614. FAT_NORMAL_STATE = 0,
  615. FAT_TRAINING_STATE = 1,
  616. };
  617. enum ant_div_type {
  618. NO_ANTDIV = 0xFF,
  619. CG_TRX_HW_ANTDIV = 0x01,
  620. CGCS_RX_HW_ANTDIV = 0x02,
  621. FIXED_HW_ANTDIV = 0x03,
  622. CG_TRX_SMART_ANTDIV = 0x04,
  623. CGCS_RX_SW_ANTDIV = 0x05,
  624. };
  625. /* Copy from SD4 defined structure. We use to support PHY DM integration. */
  626. struct odm_dm_struct {
  627. /* Add for different team use temporarily */
  628. struct adapter *Adapter; /* For CE/NIC team */
  629. struct rtl8192cd_priv *priv; /* For AP/ADSL team */
  630. /* WHen you use above pointers, they must be initialized. */
  631. bool odm_ready;
  632. struct rtl8192cd_priv *fake_priv;
  633. u64 DebugComponents;
  634. u32 DebugLevel;
  635. /* ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */
  636. bool bCckHighPower;
  637. u8 RFPathRxEnable; /* ODM_CMNINFO_RFPATH_ENABLE */
  638. u8 ControlChannel;
  639. /* ODM HANDLE, DRIVER NEEDS NOT TO HOOK------ */
  640. /* 1 COMMON INFORMATION */
  641. /* Init Value */
  642. /* HOOK BEFORE REG INIT----------- */
  643. /* ODM Platform info AP/ADSL/CE/MP = 1/2/3/4 */
  644. u8 SupportPlatform;
  645. /* ODM Support Ability DIG/RATR/TX_PWR_TRACK/ ¡K¡K = 1/2/3/¡K */
  646. u32 SupportAbility;
  647. /* ODM PCIE/USB/SDIO/GSPI = 0/1/2/3 */
  648. u8 SupportInterface;
  649. /* ODM composite or independent. Bit oriented/ 92C+92D+ .... or any
  650. * other type = 1/2/3/... */
  651. u32 SupportICType;
  652. /* Cut Version TestChip/A-cut/B-cut... = 0/1/2/3/... */
  653. u8 CutVersion;
  654. /* Fab Version TSMC/UMC = 0/1 */
  655. u8 FabVersion;
  656. /* RF Type 4T4R/3T3R/2T2R/1T2R/1T1R/... */
  657. u8 RFType;
  658. /* Board Type Normal/HighPower/MiniCard/SLIM/Combo/. = 0/1/2/3/4/. */
  659. u8 BoardType;
  660. /* with external LNA NO/Yes = 0/1 */
  661. u8 ExtLNA;
  662. /* with external PA NO/Yes = 0/1 */
  663. u8 ExtPA;
  664. /* with external TRSW NO/Yes = 0/1 */
  665. u8 ExtTRSW;
  666. u8 PatchID; /* Customer ID */
  667. bool bInHctTest;
  668. bool bWIFITest;
  669. bool bDualMacSmartConcurrent;
  670. u32 BK_SupportAbility;
  671. u8 AntDivType;
  672. /* HOOK BEFORE REG INIT----------- */
  673. /* Dynamic Value */
  674. /* POINTER REFERENCE----------- */
  675. u8 u8_temp;
  676. bool bool_temp;
  677. struct adapter *adapter_temp;
  678. /* MAC PHY Mode SMSP/DMSP/DMDP = 0/1/2 */
  679. u8 *pMacPhyMode;
  680. /* TX Unicast byte count */
  681. u64 *pNumTxBytesUnicast;
  682. /* RX Unicast byte count */
  683. u64 *pNumRxBytesUnicast;
  684. /* Wireless mode B/G/A/N = BIT0/BIT1/BIT2/BIT3 */
  685. u8 *pWirelessMode; /* ODM_WIRELESS_MODE_E */
  686. /* Frequence band 2.4G/5G = 0/1 */
  687. u8 *pBandType;
  688. /* Secondary channel offset don't_care/below/above = 0/1/2 */
  689. u8 *pSecChOffset;
  690. /* Security mode Open/WEP/AES/TKIP = 0/1/2/3 */
  691. u8 *pSecurity;
  692. /* BW info 20M/40M/80M = 0/1/2 */
  693. u8 *pBandWidth;
  694. /* Central channel location Ch1/Ch2/.... */
  695. u8 *pChannel; /* central channel number */
  696. /* Common info for 92D DMSP */
  697. bool *pbGetValueFromOtherMac;
  698. struct adapter **pBuddyAdapter;
  699. bool *pbMasterOfDMSP; /* MAC0: master, MAC1: slave */
  700. /* Common info for Status */
  701. bool *pbScanInProcess;
  702. bool *pbPowerSaving;
  703. /* CCA Path 2-path/path-A/path-B = 0/1/2; using ODM_CCA_PATH_E. */
  704. u8 *pOnePathCCA;
  705. /* pMgntInfo->AntennaTest */
  706. u8 *pAntennaTest;
  707. bool *pbNet_closed;
  708. /* POINTER REFERENCE----------- */
  709. /* */
  710. /* CALL BY VALUE------------- */
  711. bool bWIFI_Direct;
  712. bool bWIFI_Display;
  713. bool bLinked;
  714. u8 RSSI_Min;
  715. u8 InterfaceIndex; /* Add for 92D dual MAC: 0--Mac0 1--Mac1 */
  716. bool bIsMPChip;
  717. bool bOneEntryOnly;
  718. /* Common info for BTDM */
  719. bool bBtDisabled; /* BT is disabled */
  720. bool bBtHsOperation; /* BT HS mode is under progress */
  721. u8 btHsDigVal; /* use BT rssi to decide the DIG value */
  722. bool bBtDisableEdcaTurbo;/* Under some condition, don't enable the
  723. * EDCA Turbo */
  724. bool bBtBusy; /* BT is busy. */
  725. /* CALL BY VALUE------------- */
  726. /* 2 Define STA info. */
  727. /* _ODM_STA_INFO */
  728. /* For MP, we need to reduce one array pointer for default port.?? */
  729. struct sta_info *pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];
  730. u16 CurrminRptTime;
  731. struct odm_ra_info RAInfo[ODM_ASSOCIATE_ENTRY_NUM]; /* Use MacID as
  732. * array index. STA MacID=0,
  733. * VWiFi Client MacID={1, ODM_ASSOCIATE_ENTRY_NUM-1} */
  734. /* */
  735. /* 2012/02/14 MH Add to share 88E ra with other SW team. */
  736. /* We need to colelct all support abilit to a proper area. */
  737. /* */
  738. bool RaSupport88E;
  739. /* Define ........... */
  740. /* Latest packet phy info (ODM write) */
  741. struct odm_phy_dbg_info PhyDbgInfo;
  742. /* Latest packet phy info (ODM write) */
  743. struct odm_mac_status_info *pMacInfo;
  744. /* Different Team independt structure?? */
  745. /* ODM Structure */
  746. struct fast_ant_train DM_FatTable;
  747. struct rtw_dig DM_DigTable;
  748. struct rtl_ps DM_PSTable;
  749. struct rx_hpc DM_RXHP_Table;
  750. struct false_alarm_stats FalseAlmCnt;
  751. struct false_alarm_stats FlaseAlmCntBuddyAdapter;
  752. struct sw_ant_switch DM_SWAT_Table;
  753. bool RSSI_test;
  754. struct edca_turbo DM_EDCA_Table;
  755. u32 WMMEDCA_BE;
  756. /* Copy from SD4 structure */
  757. /* */
  758. /* ================================================== */
  759. /* */
  760. bool *pbDriverStopped;
  761. bool *pbDriverIsGoingToPnpSetPowerSleep;
  762. bool *pinit_adpt_in_progress;
  763. /* PSD */
  764. bool bUserAssignLevel;
  765. struct timer_list PSDTimer;
  766. u8 RSSI_BT; /* come from BT */
  767. bool bPSDinProcess;
  768. bool bDMInitialGainEnable;
  769. /* for rate adaptive, in fact, 88c/92c fw will handle this */
  770. u8 bUseRAMask;
  771. struct odm_rate_adapt RateAdaptive;
  772. struct odm_rf_cal RFCalibrateInfo;
  773. /* TX power tracking */
  774. u8 BbSwingIdxOfdm;
  775. u8 BbSwingIdxOfdmCurrent;
  776. u8 BbSwingIdxOfdmBase;
  777. bool BbSwingFlagOfdm;
  778. u8 BbSwingIdxCck;
  779. u8 BbSwingIdxCckCurrent;
  780. u8 BbSwingIdxCckBase;
  781. bool BbSwingFlagCck;
  782. u8 *mp_mode;
  783. /* ODM system resource. */
  784. /* ODM relative time. */
  785. struct timer_list PathDivSwitchTimer;
  786. /* 2011.09.27 add for Path Diversity */
  787. struct timer_list CCKPathDiversityTimer;
  788. struct timer_list FastAntTrainingTimer;
  789. }; /* DM_Dynamic_Mechanism_Structure */
  790. #define ODM_RF_PATH_MAX 3
  791. enum ODM_RF_CONTENT {
  792. odm_radioa_txt = 0x1000,
  793. odm_radiob_txt = 0x1001,
  794. odm_radioc_txt = 0x1002,
  795. odm_radiod_txt = 0x1003
  796. };
  797. /* Status code */
  798. enum rt_status {
  799. RT_STATUS_SUCCESS,
  800. RT_STATUS_FAILURE,
  801. RT_STATUS_PENDING,
  802. RT_STATUS_RESOURCE,
  803. RT_STATUS_INVALID_CONTEXT,
  804. RT_STATUS_INVALID_PARAMETER,
  805. RT_STATUS_NOT_SUPPORT,
  806. RT_STATUS_OS_API_FAILED,
  807. };
  808. /* 3=========================================================== */
  809. /* 3 DIG */
  810. /* 3=========================================================== */
  811. enum dm_dig_op {
  812. RT_TYPE_THRESH_HIGH = 0,
  813. RT_TYPE_THRESH_LOW = 1,
  814. RT_TYPE_BACKOFF = 2,
  815. RT_TYPE_RX_GAIN_MIN = 3,
  816. RT_TYPE_RX_GAIN_MAX = 4,
  817. RT_TYPE_ENABLE = 5,
  818. RT_TYPE_DISABLE = 6,
  819. DIG_OP_TYPE_MAX
  820. };
  821. #define DM_DIG_THRESH_HIGH 40
  822. #define DM_DIG_THRESH_LOW 35
  823. #define DM_SCAN_RSSI_TH 0x14 /* scan return issue for LC */
  824. #define DM_false_ALARM_THRESH_LOW 400
  825. #define DM_false_ALARM_THRESH_HIGH 1000
  826. #define DM_DIG_MAX_NIC 0x4e
  827. #define DM_DIG_MIN_NIC 0x1e /* 0x22/0x1c */
  828. #define DM_DIG_MAX_AP 0x32
  829. #define DM_DIG_MIN_AP 0x20
  830. #define DM_DIG_MAX_NIC_HP 0x46
  831. #define DM_DIG_MIN_NIC_HP 0x2e
  832. #define DM_DIG_MAX_AP_HP 0x42
  833. #define DM_DIG_MIN_AP_HP 0x30
  834. /* vivi 92c&92d has different definition, 20110504 */
  835. /* this is for 92c */
  836. #define DM_DIG_FA_TH0 0x200/* 0x20 */
  837. #define DM_DIG_FA_TH1 0x300/* 0x100 */
  838. #define DM_DIG_FA_TH2 0x400/* 0x200 */
  839. /* this is for 92d */
  840. #define DM_DIG_FA_TH0_92D 0x100
  841. #define DM_DIG_FA_TH1_92D 0x400
  842. #define DM_DIG_FA_TH2_92D 0x600
  843. #define DM_DIG_BACKOFF_MAX 12
  844. #define DM_DIG_BACKOFF_MIN -4
  845. #define DM_DIG_BACKOFF_DEFAULT 10
  846. /* 3=========================================================== */
  847. /* 3 AGC RX High Power Mode */
  848. /* 3=========================================================== */
  849. #define LNA_Low_Gain_1 0x64
  850. #define LNA_Low_Gain_2 0x5A
  851. #define LNA_Low_Gain_3 0x58
  852. #define FA_RXHP_TH1 5000
  853. #define FA_RXHP_TH2 1500
  854. #define FA_RXHP_TH3 800
  855. #define FA_RXHP_TH4 600
  856. #define FA_RXHP_TH5 500
  857. /* 3=========================================================== */
  858. /* 3 EDCA */
  859. /* 3=========================================================== */
  860. /* 3=========================================================== */
  861. /* 3 Dynamic Tx Power */
  862. /* 3=========================================================== */
  863. /* Dynamic Tx Power Control Threshold */
  864. #define TX_POWER_NEAR_FIELD_THRESH_LVL2 74
  865. #define TX_POWER_NEAR_FIELD_THRESH_LVL1 67
  866. #define TX_POWER_NEAR_FIELD_THRESH_AP 0x3F
  867. #define TxHighPwrLevel_Normal 0
  868. #define TxHighPwrLevel_Level1 1
  869. #define TxHighPwrLevel_Level2 2
  870. #define TxHighPwrLevel_BT1 3
  871. #define TxHighPwrLevel_BT2 4
  872. #define TxHighPwrLevel_15 5
  873. #define TxHighPwrLevel_35 6
  874. #define TxHighPwrLevel_50 7
  875. #define TxHighPwrLevel_70 8
  876. #define TxHighPwrLevel_100 9
  877. /* 3=========================================================== */
  878. /* 3 Rate Adaptive */
  879. /* 3=========================================================== */
  880. #define DM_RATR_STA_INIT 0
  881. #define DM_RATR_STA_HIGH 1
  882. #define DM_RATR_STA_MIDDLE 2
  883. #define DM_RATR_STA_LOW 3
  884. /* 3=========================================================== */
  885. /* 3 BB Power Save */
  886. /* 3=========================================================== */
  887. enum dm_1r_cca {
  888. CCA_1R = 0,
  889. CCA_2R = 1,
  890. CCA_MAX = 2,
  891. };
  892. enum dm_rf {
  893. RF_Save = 0,
  894. RF_Normal = 1,
  895. RF_MAX = 2,
  896. };
  897. /* 3=========================================================== */
  898. /* 3 Antenna Diversity */
  899. /* 3=========================================================== */
  900. enum dm_swas {
  901. Antenna_A = 1,
  902. Antenna_B = 2,
  903. Antenna_MAX = 3,
  904. };
  905. /* Maximal number of antenna detection mechanism needs to perform. */
  906. #define MAX_ANTENNA_DETECTION_CNT 10
  907. /* Extern Global Variables. */
  908. #define OFDM_TABLE_SIZE_92C 37
  909. #define OFDM_TABLE_SIZE_92D 43
  910. #define CCK_TABLE_SIZE 33
  911. extern u32 OFDMSwingTable[OFDM_TABLE_SIZE_92D];
  912. extern u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];
  913. extern u8 CCKSwingTable_Ch14[CCK_TABLE_SIZE][8];
  914. /* check Sta pointer valid or not */
  915. #define IS_STA_VALID(pSta) (pSta)
  916. /* 20100514 Joseph: Add definition for antenna switching test after link. */
  917. /* This indicates two different the steps. */
  918. /* In SWAW_STEP_PEAK, driver needs to switch antenna and listen to the
  919. * signal on the air. */
  920. /* In SWAW_STEP_DETERMINE, driver just compares the signal captured in
  921. * SWAW_STEP_PEAK */
  922. /* with original RSSI to determine if it is necessary to switch antenna. */
  923. #define SWAW_STEP_PEAK 0
  924. #define SWAW_STEP_DETERMINE 1
  925. #define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck
  926. #define dm_RF_Saving ODM_RF_Saving
  927. void ODM_RF_Saving(struct odm_dm_struct *pDM_Odm, u8 bForceInNormal);
  928. void ODM_TXPowerTrackingCheck(struct odm_dm_struct *pDM_Odm);
  929. void odm_DIGbyRSSI_LPS(struct odm_dm_struct *pDM_Odm);
  930. void ODM_Write_CCK_CCA_Thres(struct odm_dm_struct *pDM_Odm, u8 CurCCK_CCAThres);
  931. bool ODM_RAStateCheck(struct odm_dm_struct *pDM_Odm, s32 RSSI,
  932. bool bForceUpdate, u8 *pRATRState);
  933. u32 ConvertTo_dB(u32 Value);
  934. u32 ODM_Get_Rate_Bitmap(struct odm_dm_struct *pDM_Odm, u32 macid,
  935. u32 ra_mask, u8 rssi_level);
  936. void ODM_CmnInfoInit(struct odm_dm_struct *pDM_Odm,
  937. enum odm_common_info_def CmnInfo, u32 Value);
  938. void ODM_CmnInfoUpdate(struct odm_dm_struct *pDM_Odm, u32 CmnInfo, u64 Value);
  939. void ODM_CmnInfoHook(struct odm_dm_struct *pDM_Odm,
  940. enum odm_common_info_def CmnInfo, void *pValue);
  941. void ODM_CmnInfoPtrArrayHook(struct odm_dm_struct *pDM_Odm,
  942. enum odm_common_info_def CmnInfo,
  943. u16 Index, void *pValue);
  944. void ODM_DMInit(struct odm_dm_struct *pDM_Odm);
  945. void ODM_DMWatchdog(struct odm_dm_struct *pDM_Odm);
  946. void ODM_Write_DIG(struct odm_dm_struct *pDM_Odm, u8 CurrentIGI);
  947. #endif