phydm_phystatus.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137
  1. /******************************************************************************
  2. *
  3. * Copyright(c) 2007 - 2017 Realtek Corporation.
  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. * The full GNU General Public License is included in this distribution in the
  15. * file called LICENSE.
  16. *
  17. * Contact Information:
  18. * wlanfae <wlanfae@realtek.com>
  19. * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
  20. * Hsinchu 300, Taiwan.
  21. *
  22. * Larry Finger <Larry.Finger@lwfinger.net>
  23. *
  24. *****************************************************************************/
  25. #ifndef __PHYDM_PHYSTATUS_H__
  26. #define __PHYDM_PHYSTATUS_H__
  27. /*@--------------------------Define ------------------------------------------*/
  28. #define CCK_RSSI_INIT_COUNT 5
  29. #define RA_RSSI_STATE_INIT 0
  30. #define RA_RSSI_STATE_SEND 1
  31. #define RA_RSSI_STATE_HOLD 2
  32. #if defined(DM_ODM_CE_MAC80211)
  33. #define CFO_HW_RPT_2_KHZ(val) ({ \
  34. s32 cfo_hw_rpt_2_khz_tmp = (val); \
  35. (cfo_hw_rpt_2_khz_tmp << 1) + (cfo_hw_rpt_2_khz_tmp >> 1); \
  36. })
  37. #else
  38. #define CFO_HW_RPT_2_KHZ(val) ((val << 1) + (val >> 1))
  39. #endif
  40. /* @(X* 312.5 Khz)>>7 ~= X*2.5 Khz= (X<<1 + X>>1)Khz */
  41. #define IGI_2_RSSI(igi) (igi - 10)
  42. #define PHY_STATUS_JRGUAR2_DW_LEN 7 /* @7*4 = 28 Byte */
  43. #define PHY_STATUS_JRGUAR3_DW_LEN 7 /* @7*4 = 28 Byte */
  44. #define SHOW_PHY_STATUS_UNLIMITED 0
  45. #define RSSI_MA 4
  46. #define PHYSTS_PATH_NUM 4
  47. /*@************************************************************
  48. * structure and define
  49. ************************************************************/
  50. __PACK struct phy_rx_agc_info {
  51. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  52. u8 gain : 7, trsw : 1;
  53. #else
  54. u8 trsw : 1, gain : 7;
  55. #endif
  56. };
  57. __PACK struct phy_status_rpt_8192cd {
  58. struct phy_rx_agc_info path_agc[2];
  59. u8 ch_corr[2];
  60. u8 cck_sig_qual_ofdm_pwdb_all;
  61. u8 cck_agc_rpt_ofdm_cfosho_a;
  62. u8 cck_rpt_b_ofdm_cfosho_b;
  63. u8 rsvd_1;/*@ch_corr_msb;*/
  64. u8 noise_power_db_msb;
  65. s8 path_cfotail[2];
  66. u8 pcts_mask[2];
  67. s8 stream_rxevm[2];
  68. u8 path_rxsnr[2];
  69. u8 noise_power_db_lsb;
  70. u8 rsvd_2[3];
  71. u8 stream_csi[2];
  72. u8 stream_target_csi[2];
  73. s8 sig_evm;
  74. u8 rsvd_3;
  75. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  76. u8 antsel_rx_keep_2: 1; /*@ex_intf_flg:1;*/
  77. u8 sgi_en: 1;
  78. u8 rxsc: 2;
  79. u8 idle_long: 1;
  80. u8 r_ant_train_en: 1;
  81. u8 ant_sel_b: 1;
  82. u8 ant_sel: 1;
  83. #else /*@_BIG_ENDIAN_ */
  84. u8 ant_sel: 1;
  85. u8 ant_sel_b: 1;
  86. u8 r_ant_train_en: 1;
  87. u8 idle_long: 1;
  88. u8 rxsc: 2;
  89. u8 sgi_en: 1;
  90. u8 antsel_rx_keep_2: 1;/*@ex_intf_flg:1;*/
  91. #endif
  92. };
  93. struct phy_status_rpt_8812 {
  94. /* @DWORD 0*/
  95. u8 gain_trsw[2]; /*path-A and path-B {TRSW, gain[6:0] }*/
  96. u8 chl_num_LSB; /*@channel number[7:0]*/
  97. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  98. u8 chl_num_MSB : 2; /*@channel number[9:8]*/
  99. u8 sub_chnl : 4; /*sub-channel location[3:0]*/
  100. u8 r_RFMOD : 2; /*RF mode[1:0]*/
  101. #else /*@_BIG_ENDIAN_ */
  102. u8 r_RFMOD : 2;
  103. u8 sub_chnl : 4;
  104. u8 chl_num_MSB : 2;
  105. #endif
  106. /* @DWORD 1*/
  107. u8 pwdb_all; /*@CCK signal quality / OFDM pwdb all*/
  108. s8 cfosho[2]; /*@CCK AGC report and CCK_BB_Power*/
  109. /*OFDM path-A and path-B short CFO*/
  110. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  111. u8 resvd_0 : 6;
  112. u8 bt_RF_ch_MSB : 2; /*@8812A:2'b0 8814A: bt rf channel keep[7:6]*/
  113. #else /*@_BIG_ENDIAN_*/
  114. u8 bt_RF_ch_MSB : 2;
  115. u8 resvd_0 : 6;
  116. #endif
  117. /* @DWORD 2*/
  118. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  119. u8 ant_div_sw_a : 1; /*@8812A: ant_div_sw_a 8814A: 1'b0*/
  120. u8 ant_div_sw_b : 1; /*@8812A: ant_div_sw_b 8814A: 1'b0*/
  121. u8 bt_RF_ch_LSB : 6; /*@8812A: 6'b0 8814A: bt rf channel keep[5:0]*/
  122. #else /*@_BIG_ENDIAN_ */
  123. u8 bt_RF_ch_LSB : 6;
  124. u8 ant_div_sw_b : 1;
  125. u8 ant_div_sw_a : 1;
  126. #endif
  127. s8 cfotail[2]; /*@DW2 byte 1 DW2 byte 2 path-A and path-B CFO tail*/
  128. u8 PCTS_MSK_RPT_0; /*PCTS mask report[7:0]*/
  129. u8 PCTS_MSK_RPT_1; /*PCTS mask report[15:8]*/
  130. /* @DWORD 3*/
  131. s8 rxevm[2]; /*@DW3 byte 1 DW3 byte 2 stream 1 and stream 2 RX EVM*/
  132. s8 rxsnr[2]; /*@DW3 byte 3 DW4 byte 0 path-A and path-B RX SNR*/
  133. /* @DWORD 4*/
  134. u8 PCTS_MSK_RPT_2; /*PCTS mask report[23:16]*/
  135. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  136. u8 PCTS_MSK_RPT_3 : 6; /*PCTS mask report[29:24]*/
  137. u8 pcts_rpt_valid : 1; /*pcts_rpt_valid*/
  138. u8 resvd_1 : 1; /*@1'b0*/
  139. #else /*@_BIG_ENDIAN_*/
  140. u8 resvd_1 : 1;
  141. u8 pcts_rpt_valid : 1;
  142. u8 PCTS_MSK_RPT_3 : 6;
  143. #endif
  144. s8 rxevm_cd[2]; /*@8812A: 16'b0*/
  145. /*@8814A: stream 3 and stream 4 RX EVM*/
  146. /* @DWORD 5*/
  147. u8 csi_current[2]; /*@8812A: stream 1 and 2 CSI*/
  148. /*@8814A: path-C and path-D RX SNR*/
  149. u8 gain_trsw_cd[2]; /*path-C and path-D {TRSW, gain[6:0] }*/
  150. /* @DWORD 6*/
  151. s8 sigevm; /*signal field EVM*/
  152. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  153. u8 antidx_antc : 3; /*@8812A: 3'b0 8814A: antidx_antc[2:0]*/
  154. u8 antidx_antd : 3; /*@8812A: 3'b0 8814A: antidx_antd[2:0]*/
  155. u8 dpdt_ctrl_keep : 1; /*@8812A: 1'b0 8814A: dpdt_ctrl_keep*/
  156. u8 GNT_BT_keep : 1; /*@8812A: 1'b0 8814A: GNT_BT_keep*/
  157. #else /*@_BIG_ENDIAN_*/
  158. u8 GNT_BT_keep : 1;
  159. u8 dpdt_ctrl_keep : 1;
  160. u8 antidx_antd : 3;
  161. u8 antidx_antc : 3;
  162. #endif
  163. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  164. u8 antidx_anta : 3; /*@antidx_anta[2:0]*/
  165. u8 antidx_antb : 3; /*@antidx_antb[2:0]*/
  166. u8 hw_antsw_occur : 2; /*@1'b0*/
  167. #else /*@_BIG_ENDIAN_*/
  168. u8 hw_antsw_occur : 2;
  169. u8 antidx_antb : 3;
  170. u8 antidx_anta : 3;
  171. #endif
  172. };
  173. #if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)
  174. __PACK struct phy_status_rpt_jaguar2_type0 {
  175. /* @DW0 */
  176. u8 page_num;
  177. u8 pwdb;
  178. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  179. u8 gain : 6;
  180. u8 rsvd_0 : 1;
  181. u8 trsw : 1;
  182. #else
  183. u8 trsw : 1;
  184. u8 rsvd_0 : 1;
  185. u8 gain : 6;
  186. #endif
  187. u8 rsvd_1;
  188. /* @DW1 */
  189. u8 rsvd_2;
  190. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  191. u8 rxsc : 4;
  192. u8 agc_table : 4;
  193. #else
  194. u8 agc_table : 4;
  195. u8 rxsc : 4;
  196. #endif
  197. u8 channel;
  198. u8 band;
  199. /* @DW2 */
  200. u16 length;
  201. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  202. u8 antidx_a : 3;
  203. u8 antidx_b : 3;
  204. u8 rsvd_3 : 2;
  205. u8 antidx_c : 3;
  206. u8 antidx_d : 3;
  207. u8 rsvd_4 : 2;
  208. #else
  209. u8 rsvd_3 : 2;
  210. u8 antidx_b : 3;
  211. u8 antidx_a : 3;
  212. u8 rsvd_4 : 2;
  213. u8 antidx_d : 3;
  214. u8 antidx_c : 3;
  215. #endif
  216. /* @DW3 */
  217. u8 signal_quality;
  218. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  219. u8 vga : 5;
  220. u8 lna_l : 3;
  221. u8 bb_power : 6;
  222. u8 rsvd_9 : 1;
  223. u8 lna_h : 1;
  224. #else
  225. u8 lna_l : 3;
  226. u8 vga : 5;
  227. u8 lna_h : 1;
  228. u8 rsvd_9 : 1;
  229. u8 bb_power : 6;
  230. #endif
  231. u8 rsvd_5;
  232. /* @DW4 */
  233. u32 rsvd_6;
  234. /* @DW5 */
  235. u32 rsvd_7;
  236. /* @DW6 */
  237. u32 rsvd_8;
  238. };
  239. __PACK struct phy_status_rpt_jaguar2_type1 {
  240. /* @DW0 and DW1 */
  241. u8 page_num;
  242. u8 pwdb[4];
  243. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  244. u8 l_rxsc : 4;
  245. u8 ht_rxsc : 4;
  246. #else
  247. u8 ht_rxsc : 4;
  248. u8 l_rxsc : 4;
  249. #endif
  250. u8 channel;
  251. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  252. u8 band : 2;
  253. u8 rsvd_0 : 1;
  254. u8 hw_antsw_occu : 1;
  255. u8 gnt_bt : 1;
  256. u8 ldpc : 1;
  257. u8 stbc : 1;
  258. u8 beamformed : 1;
  259. #else
  260. u8 beamformed : 1;
  261. u8 stbc : 1;
  262. u8 ldpc : 1;
  263. u8 gnt_bt : 1;
  264. u8 hw_antsw_occu : 1;
  265. u8 rsvd_0 : 1;
  266. u8 band : 2;
  267. #endif
  268. /* @DW2 */
  269. u16 lsig_length;
  270. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  271. u8 antidx_a : 3;
  272. u8 antidx_b : 3;
  273. u8 rsvd_1 : 2;
  274. u8 antidx_c : 3;
  275. u8 antidx_d : 3;
  276. u8 rsvd_2 : 2;
  277. #else
  278. u8 rsvd_1 : 2;
  279. u8 antidx_b : 3;
  280. u8 antidx_a : 3;
  281. u8 rsvd_2 : 2;
  282. u8 antidx_d : 3;
  283. u8 antidx_c : 3;
  284. #endif
  285. /* @DW3 */
  286. u8 paid;
  287. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  288. u8 paid_msb : 1;
  289. u8 gid : 6;
  290. u8 rsvd_3 : 1;
  291. #else
  292. u8 rsvd_3 : 1;
  293. u8 gid : 6;
  294. u8 paid_msb : 1;
  295. #endif
  296. u8 intf_pos;
  297. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  298. u8 intf_pos_msb : 1;
  299. u8 rsvd_4 : 2;
  300. u8 nb_intf_flag : 1;
  301. u8 rf_mode : 2;
  302. u8 rsvd_5 : 2;
  303. #else
  304. u8 rsvd_5 : 2;
  305. u8 rf_mode : 2;
  306. u8 nb_intf_flag : 1;
  307. u8 rsvd_4 : 2;
  308. u8 intf_pos_msb : 1;
  309. #endif
  310. /* @DW4 */
  311. s8 rxevm[4]; /* s(8,1) */
  312. /* @DW5 */
  313. s8 cfo_tail[4]; /* s(8,7) */
  314. /* @DW6 */
  315. s8 rxsnr[4]; /* s(8,1) */
  316. };
  317. __PACK struct phy_status_rpt_jaguar2_type2 {
  318. /* @DW0 ane DW1 */
  319. u8 page_num;
  320. u8 pwdb[4];
  321. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  322. u8 l_rxsc : 4;
  323. u8 ht_rxsc : 4;
  324. #else
  325. u8 ht_rxsc : 4;
  326. u8 l_rxsc : 4;
  327. #endif
  328. u8 channel;
  329. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  330. u8 band : 2;
  331. u8 rsvd_0 : 1;
  332. u8 hw_antsw_occu : 1;
  333. u8 gnt_bt : 1;
  334. u8 ldpc : 1;
  335. u8 stbc : 1;
  336. u8 beamformed : 1;
  337. #else
  338. u8 beamformed : 1;
  339. u8 stbc : 1;
  340. u8 ldpc : 1;
  341. u8 gnt_bt : 1;
  342. u8 hw_antsw_occu : 1;
  343. u8 rsvd_0 : 1;
  344. u8 band : 2;
  345. #endif
  346. /* @DW2 */
  347. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  348. u8 shift_l_map : 6;
  349. u8 rsvd_1 : 2;
  350. #else
  351. u8 rsvd_1 : 2;
  352. u8 shift_l_map : 6;
  353. #endif
  354. u8 cnt_pw2cca;
  355. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  356. u8 agc_table_a : 4;
  357. u8 agc_table_b : 4;
  358. u8 agc_table_c : 4;
  359. u8 agc_table_d : 4;
  360. #else
  361. u8 agc_table_b : 4;
  362. u8 agc_table_a : 4;
  363. u8 agc_table_d : 4;
  364. u8 agc_table_c : 4;
  365. #endif
  366. /* @DW3 ~ DW6*/
  367. u8 cnt_cca2agc_rdy;
  368. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  369. u8 gain_a : 6;
  370. u8 rsvd_2 : 1;
  371. u8 trsw_a : 1;
  372. u8 gain_b : 6;
  373. u8 rsvd_3 : 1;
  374. u8 trsw_b : 1;
  375. u8 gain_c : 6;
  376. u8 rsvd_4 : 1;
  377. u8 trsw_c : 1;
  378. u8 gain_d : 6;
  379. u8 rsvd_5 : 1;
  380. u8 trsw_d : 1;
  381. u8 aagc_step_a : 2;
  382. u8 aagc_step_b : 2;
  383. u8 aagc_step_c : 2;
  384. u8 aagc_step_d : 2;
  385. #else
  386. u8 trsw_a : 1;
  387. u8 rsvd_2 : 1;
  388. u8 gain_a : 6;
  389. u8 trsw_b : 1;
  390. u8 rsvd_3 : 1;
  391. u8 gain_b : 6;
  392. u8 trsw_c : 1;
  393. u8 rsvd_4 : 1;
  394. u8 gain_c : 6;
  395. u8 trsw_d : 1;
  396. u8 rsvd_5 : 1;
  397. u8 gain_d : 6;
  398. u8 aagc_step_d : 2;
  399. u8 aagc_step_c : 2;
  400. u8 aagc_step_b : 2;
  401. u8 aagc_step_a : 2;
  402. #endif
  403. u8 ht_aagc_gain[4];
  404. u8 dagc_gain[4];
  405. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  406. u8 counter : 6;
  407. u8 rsvd_6 : 2;
  408. u8 syn_count : 5;
  409. u8 rsvd_7 : 3;
  410. #else
  411. u8 rsvd_6 : 2;
  412. u8 counter : 6;
  413. u8 rsvd_7 : 3;
  414. u8 syn_count : 5;
  415. #endif
  416. };
  417. #endif
  418. /*@==============================================*/
  419. #ifdef PHYSTS_3RD_TYPE_SUPPORT
  420. __PACK struct phy_status_rpt_jaguar3_type0 {
  421. /* @DW0 : Offset 0 */
  422. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  423. u8 page_num : 4;
  424. u8 pkt_cnt : 2;
  425. u8 channel_msb : 2;
  426. #else
  427. u8 channel_msb : 2;
  428. u8 pkt_cnt : 2;
  429. u8 page_num : 4;
  430. #endif
  431. u8 pwdb_a;
  432. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  433. u8 gain_a : 6;
  434. u8 rsvd_0 : 1;
  435. u8 trsw : 1;
  436. #else
  437. u8 trsw : 1;
  438. u8 rsvd_0 : 1;
  439. u8 gain_a : 6;
  440. #endif
  441. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  442. u8 agc_table_b : 4;
  443. u8 agc_table_c : 4;
  444. #else
  445. u8 agc_table_c : 4;
  446. u8 agc_table_b : 4;
  447. #endif
  448. /* @DW1 : Offset 4 */
  449. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  450. u8 rsvd_1 : 4;
  451. u8 agc_table_d : 4;
  452. #else
  453. u8 agc_table_d : 4;
  454. u8 rsvd_1 : 4;
  455. #endif
  456. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  457. u8 l_rxsc : 4;
  458. u8 agc_table_a : 4;
  459. #else
  460. u8 agc_table_a : 4;
  461. u8 l_rxsc : 4;
  462. #endif
  463. u8 channel;
  464. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  465. u8 band : 2;
  466. u8 rsvd_2_1 : 1;
  467. u8 hw_antsw_occur_keep_cck : 1;
  468. u8 gnt_bt_keep_cck : 1;
  469. u8 rsvd_2_2 : 1;
  470. u8 path_sel_o : 2;
  471. #else
  472. u8 path_sel_o : 2;
  473. u8 rsvd_2_2 : 1;
  474. u8 gnt_bt_keep_cck : 1;
  475. u8 hw_antsw_occur_keep_cck : 1;
  476. u8 rsvd_2_1 : 1;
  477. u8 band : 2;
  478. #endif
  479. /* @DW2 : Offset 8 */
  480. u16 length;
  481. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  482. u8 antidx_a : 4;
  483. u8 antidx_b : 4;
  484. #else
  485. u8 antidx_b : 4;
  486. u8 antidx_a : 4;
  487. #endif
  488. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  489. u8 antidx_c : 4;
  490. u8 antidx_d : 4;
  491. #else
  492. u8 antidx_d : 4;
  493. u8 antidx_c : 4;
  494. #endif
  495. /* @DW3 : Offset 12 */
  496. u8 signal_quality;
  497. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  498. u8 vga_a : 5;
  499. u8 lna_l_a : 3;
  500. #else
  501. u8 lna_l_a : 3;
  502. u8 vga_a : 5;
  503. #endif
  504. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  505. u8 bb_power_a : 6;
  506. u8 rsvd_3_1 : 1;
  507. u8 lna_h_a : 1;
  508. #else
  509. u8 lna_h_a : 1;
  510. u8 rsvd_3_1 : 1;
  511. u8 bb_power_a : 6;
  512. #endif
  513. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  514. u8 rxrate : 2;
  515. u8 raterr : 1;
  516. u8 lockbit : 1;
  517. u8 sqloss : 1;
  518. u8 mf_off : 1;
  519. u8 rsvd_3_2 : 2;
  520. #else
  521. u8 rsvd_3_2 : 2;
  522. u8 mf_off : 1;
  523. u8 sqloss : 1;
  524. u8 lockbit : 1;
  525. u8 raterr : 1;
  526. u8 rxrate : 2;
  527. #endif
  528. /* @DW4 : Offset 16 */
  529. u8 pwdb_b;
  530. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  531. u8 vga_b : 5;
  532. u8 lna_l_b : 3;
  533. #else
  534. u8 lna_l_b : 3;
  535. u8 vga_b : 5;
  536. #endif
  537. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  538. u8 bb_power_b : 6;
  539. u8 rsvd_4_1 : 1;
  540. u8 lna_h_b : 1;
  541. #else
  542. u8 lna_h_b : 1;
  543. u8 rsvd_4_1 : 1;
  544. u8 bb_power_b : 6;
  545. #endif
  546. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  547. u8 gain_b : 6;
  548. u8 rsvd_4_2 : 2;
  549. #else
  550. u8 rsvd_4_2 : 2;
  551. u8 gain_b : 6;
  552. #endif
  553. /* @DW5 : Offset 20 */
  554. u8 pwdb_c;
  555. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  556. u8 vga_c : 5;
  557. u8 lna_l_c : 3;
  558. #else
  559. u8 lna_l_c : 3;
  560. u8 vga_c : 5;
  561. #endif
  562. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  563. u8 bb_power_c : 6;
  564. u8 rsvd_5_1 : 1;
  565. u8 lna_h_c : 1;
  566. #else
  567. u8 lna_h_c : 1;
  568. u8 rsvd_5_1 : 1;
  569. u8 bb_power_c : 6;
  570. #endif
  571. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  572. u8 gain_c : 6;
  573. u8 rsvd_5_2 : 2;
  574. #else
  575. u8 rsvd_5_2 : 2;
  576. u8 gain_c : 6;
  577. #endif
  578. /* @DW6 : Offset 24 */
  579. u8 pwdb_d;
  580. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  581. u8 vga_d : 5;
  582. u8 lna_l_d : 3;
  583. #else
  584. u8 lna_l_d : 3;
  585. u8 vga_d : 5;
  586. #endif
  587. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  588. u8 bb_power_d : 6;
  589. u8 rsvd_6_1 : 1;
  590. u8 lna_h_d : 1;
  591. #else
  592. u8 lna_h_d : 1;
  593. u8 rsvd_6_1 : 1;
  594. u8 bb_power_d : 6;
  595. #endif
  596. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  597. u8 gain_d : 6;
  598. u8 rsvd_6_2 : 2;
  599. #else
  600. u8 rsvd_6_2 : 2;
  601. u8 gain_d : 6;
  602. #endif
  603. };
  604. __PACK struct phy_status_rpt_jaguar3_type1 {
  605. /* @DW0 : Offset 0 */
  606. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  607. u8 page_num : 4;
  608. u8 pkt_cnt : 2;
  609. u8 channel_pri_msb : 2;
  610. #else
  611. u8 channel_pri_msb : 2;
  612. u8 pkt_cnt : 2;
  613. u8 page_num : 4;
  614. #endif
  615. u8 pwdb_a;
  616. u8 pwdb_b;
  617. u8 pwdb_c;
  618. /* @DW1 : Offset 4 */
  619. u8 pwdb_d;
  620. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  621. u8 l_rxsc : 4;
  622. u8 ht_rxsc : 4;
  623. #else
  624. u8 ht_rxsc : 4;
  625. u8 l_rxsc : 4;
  626. #endif
  627. u8 channel_pri_lsb;
  628. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  629. u8 band : 2;
  630. u8 rsvd_0 : 2;
  631. u8 gnt_bt : 1;
  632. u8 ldpc : 1;
  633. u8 stbc : 1;
  634. u8 beamformed : 1;
  635. #else
  636. u8 beamformed : 1;
  637. u8 stbc : 1;
  638. u8 ldpc : 1;
  639. u8 gnt_bt : 1;
  640. u8 rsvd_0 : 2;
  641. u8 band : 2;
  642. #endif
  643. /* @DW2 : Offset 8 */
  644. u8 channel_sec_lsb;
  645. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  646. u8 channel_sec_msb : 2;
  647. u8 rsvd_1 : 2;
  648. u8 hw_antsw_occur_a : 1;
  649. u8 hw_antsw_occur_b : 1;
  650. u8 hw_antsw_occur_c : 1;
  651. u8 hw_antsw_occur_d : 1;
  652. #else
  653. u8 hw_antsw_occur_d : 1;
  654. u8 hw_antsw_occur_c : 1;
  655. u8 hw_antsw_occur_b : 1;
  656. u8 hw_antsw_occur_a : 1;
  657. u8 rsvd_1 : 2;
  658. u8 channel_sec_msb : 2;
  659. #endif
  660. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  661. u8 antidx_a : 4;
  662. u8 antidx_b : 4;
  663. #else
  664. u8 antidx_b : 4;
  665. u8 antidx_a : 4;
  666. #endif
  667. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  668. u8 antidx_c : 4;
  669. u8 antidx_d : 4;
  670. #else
  671. u8 antidx_d : 4;
  672. u8 antidx_c : 4;
  673. #endif
  674. /* @DW3 : Offset 12 */
  675. u8 paid;
  676. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  677. u8 paid_msb : 1;
  678. u8 gid : 6;
  679. u8 rsvd_3 : 1;
  680. #else
  681. u8 rsvd_3 : 1;
  682. u8 gid : 6;
  683. u8 paid_msb : 1;
  684. #endif
  685. u16 rsvd_4;
  686. #if 0
  687. /*@
  688. u8 rsvd_4;
  689. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  690. u8 rsvd_5: 6;
  691. u8 rf_mode: 2;
  692. #else
  693. u8 rf_mode: 2;
  694. u8 rsvd_5: 6;
  695. #endif
  696. */
  697. #endif
  698. /* @DW4 : Offset 16 */
  699. s8 rxevm[4]; /* s(8,1) */
  700. /* @DW5 : Offset 20 */
  701. s8 cfo_tail[4]; /* s(8,7) */
  702. /* @DW6 : Offset 24 */
  703. s8 rxsnr[4]; /* s(8,1) */
  704. };
  705. __PACK struct phy_status_rpt_jaguar3_type2_type3 {
  706. /* Type2 is primary channel & type3 is secondary channel */
  707. /* @DW0 and DW1: Offest 0 and Offset 4 */
  708. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  709. u8 page_num : 4;
  710. u8 pkt_cnt : 2;
  711. u8 channel_msb : 2;
  712. #else
  713. u8 channel_msb : 2;
  714. u8 pkt_cnt : 2;
  715. u8 page_num : 4;
  716. #endif
  717. u8 pwdb[4];
  718. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  719. u8 l_rxsc : 4;
  720. u8 ht_rxsc : 4;
  721. #else
  722. u8 ht_rxsc : 4;
  723. u8 l_rxsc : 4;
  724. #endif
  725. u8 channel_lsb;
  726. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  727. u8 band : 2;
  728. u8 rsvd_0 : 2;
  729. u8 gnt_bt : 1;
  730. u8 ldpc : 1;
  731. u8 stbc : 1;
  732. u8 beamformed : 1;
  733. #else
  734. u8 beamformed : 1;
  735. u8 stbc : 1;
  736. u8 ldpc : 1;
  737. u8 gnt_bt : 1;
  738. u8 rsvd_0 : 2;
  739. u8 band : 2;
  740. #endif
  741. /* @DW2 : Offset 8 */
  742. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  743. u8 shift_l_map : 6;
  744. u8 rsvd_1 : 2;
  745. #else
  746. u8 rsvd_1 : 2;
  747. u8 shift_l_map : 6;
  748. #endif
  749. s8 pwed_th; /* @dynamic energy threshold S(8,2) */
  750. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  751. u8 agc_table_a : 4;
  752. u8 agc_table_b : 4;
  753. #else
  754. u8 agc_table_b : 4;
  755. u8 agc_table_a : 4;
  756. #endif
  757. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  758. u8 agc_table_c : 4;
  759. u8 agc_table_d : 4;
  760. #else
  761. u8 agc_table_d : 4;
  762. u8 agc_table_c : 4;
  763. #endif
  764. /* @DW3 : Offset 12 */
  765. u8 cnt_cca2agc_rdy; /* Time(ns) = cnt_cca2agc_ready*25 */
  766. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  767. u8 mp_gain_a : 6;
  768. u8 mp_gain_b_lsb : 2;
  769. #else
  770. u8 mp_gain_b_lsb : 2;
  771. u8 mp_gain_a : 6;
  772. #endif
  773. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  774. u8 mp_gain_b_msb : 4;
  775. u8 mp_gain_c_lsb : 4;
  776. #else
  777. u8 mp_gain_c_lsb : 4;
  778. u8 mp_gain_b_msb : 4;
  779. #endif
  780. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  781. u8 mp_gain_c_msb : 2;
  782. u8 avg_noise_pwr_lsb : 4;
  783. u8 rsvd_3 : 2;
  784. /* u8 r_rfmod:2; */
  785. #else
  786. /* u8 r_rfmod:2; */
  787. u8 rsvd_3 : 2;
  788. u8 avg_noise_pwr_lsb : 4;
  789. u8 mp_gain_c_msb : 2;
  790. #endif
  791. /* @DW4 ~ 5: offset 16 ~20 */
  792. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  793. u8 mp_gain_d : 6;
  794. u8 is_freq_select_fading : 1;
  795. u8 rsvd_2 : 1;
  796. #else
  797. u8 rsvd_2 : 1;
  798. u8 is_freq_select_fading : 1;
  799. u8 mp_gain_d : 6;
  800. #endif
  801. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  802. u8 aagc_step_a : 2;
  803. u8 aagc_step_b : 2;
  804. u8 aagc_step_c : 2;
  805. u8 aagc_step_d : 2;
  806. #else
  807. u8 aagc_step_d : 2;
  808. u8 aagc_step_c : 2;
  809. u8 aagc_step_b : 2;
  810. u8 aagc_step_a : 2;
  811. #endif
  812. u8 ht_aagc_gain[4];
  813. u8 dagc_gain[4];
  814. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  815. u8 counter : 6;
  816. u8 syn_count_lsb : 2;
  817. #else
  818. u8 syn_count_lsb : 2;
  819. u8 counter : 6;
  820. #endif
  821. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  822. u8 syn_count_msb : 3;
  823. u8 avg_noise_pwr_msb : 5;
  824. #else
  825. u8 avg_noise_pwr_msb : 5;
  826. u8 syn_count_msb : 3;
  827. #endif
  828. };
  829. __PACK struct phy_status_rpt_jaguar3_type4 {
  830. /* smart antenna */
  831. /* @DW0 and DW1 : offset 0 and 4 */
  832. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  833. u8 page_num : 4;
  834. u8 pkt_cnt : 2;
  835. u8 channel_msb : 2;
  836. #else
  837. u8 channel_msb : 2;
  838. u8 pkt_cnt : 2;
  839. u8 page_num : 4;
  840. #endif
  841. u8 pwdb[4];
  842. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  843. u8 l_rxsc : 4;
  844. u8 ht_rxsc : 4;
  845. #else
  846. u8 ht_rxsc : 4;
  847. u8 l_rxsc : 4;
  848. #endif
  849. u8 channel_lsb;
  850. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  851. u8 band : 2;
  852. u8 rsvd_0 : 2;
  853. u8 gnt_bt : 1;
  854. u8 ldpc : 1;
  855. u8 stbc : 1;
  856. u8 beamformed : 1;
  857. #else
  858. u8 beamformed : 1;
  859. u8 stbc : 1;
  860. u8 ldpc : 1;
  861. u8 gnt_bt : 1;
  862. u8 rsvd_0 : 1;
  863. u8 band : 2;
  864. #endif
  865. /* @DW2 : offset 8 */
  866. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  867. u8 bad_tone_cnt_min_eign_0 : 4;
  868. u8 bad_tone_cnt_cn_excess_0 : 4;
  869. #else
  870. u8 bad_tone_cnt_cn_excess_0 : 4;
  871. u8 bad_tone_cnt_min_eign_0 : 4;
  872. #endif
  873. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  874. u8 training_done_a : 1;
  875. u8 training_done_b : 1;
  876. u8 training_done_c : 1;
  877. u8 training_done_d : 1;
  878. u8 hw_antsw_occur_a : 1;
  879. u8 hw_antsw_occur_b : 1;
  880. u8 hw_antsw_occur_c : 1;
  881. u8 hw_antsw_occur_d : 1;
  882. #else
  883. u8 hw_antsw_occur_d : 1;
  884. u8 hw_antsw_occur_c : 1;
  885. u8 hw_antsw_occur_b : 1;
  886. u8 hw_antsw_occur_a : 1;
  887. u8 training_done_d : 1;
  888. u8 training_done_c : 1;
  889. u8 training_done_b : 1;
  890. u8 training_done_a : 1;
  891. #endif
  892. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  893. u8 antidx_a : 4;
  894. u8 antidx_b : 4;
  895. #else
  896. u8 antidx_b : 4;
  897. u8 antidx_a : 4;
  898. #endif
  899. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  900. u8 antidx_c : 4;
  901. u8 antidx_d : 4;
  902. #else
  903. u8 antidx_d : 4;
  904. u8 antidx_c : 4;
  905. #endif
  906. /* @DW3 : offset 12 */
  907. u8 tx_pkt_cnt;
  908. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  909. u8 bad_tone_cnt_min_eign_1 : 4;
  910. u8 bad_tone_cnt_cn_excess_1 : 4;
  911. #else
  912. u8 bad_tone_cnt_cn_excess_1 : 4;
  913. u8 bad_tone_cnt_min_eign_1 : 4;
  914. #endif
  915. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  916. u8 avg_cond_num_0 : 7;
  917. u8 avg_cond_num_1_lsb : 1;
  918. #else
  919. u8 avg_cond_num_1_lsb : 1;
  920. u8 avg_cond_num_0 : 7;
  921. #endif
  922. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  923. u8 avg_cond_num_1_msb : 6;
  924. u8 rsvd_1 : 2;
  925. #else
  926. u8 rsvd_1 : 2;
  927. u8 avg_cond_num_1_msb : 6;
  928. #endif
  929. /* @DW4 : offset 16 */
  930. s8 rxevm[4]; /* s(8,1) */
  931. /* @DW5 : offset 20 */
  932. u8 eigenvalue[4]; /* @eigenvalue or eigenvalue of seg0 (in dB) */
  933. /* @DW6 : ofset 24 */
  934. s8 rxsnr[4]; /* s(8,1) */
  935. };
  936. __PACK struct phy_status_rpt_jaguar3_type5 {
  937. /* @Debug */
  938. /* @DW0 ane DW1 : offset 0 and 4 */
  939. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  940. u8 page_num : 4;
  941. u8 pkt_cnt : 2;
  942. u8 channel_msb : 2;
  943. #else
  944. u8 channel_msb : 2;
  945. u8 pkt_cnt : 2;
  946. u8 page_num : 4;
  947. #endif
  948. u8 pwdb[4];
  949. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  950. u8 l_rxsc : 4;
  951. u8 ht_rxsc : 4;
  952. #else
  953. u8 ht_rxsc : 4;
  954. u8 l_rxsc : 4;
  955. #endif
  956. u8 channel_lsb;
  957. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  958. u8 band : 2;
  959. u8 rsvd_0 : 2;
  960. u8 gnt_bt : 1;
  961. u8 ldpc : 1;
  962. u8 stbc : 1;
  963. u8 beamformed : 1;
  964. #else
  965. u8 beamformed : 1;
  966. u8 stbc : 1;
  967. u8 ldpc : 1;
  968. u8 gnt_bt : 1;
  969. u8 rsvd_0 : 2;
  970. u8 band : 2;
  971. #endif
  972. /* @DW2 : offset 8 */
  973. u8 rsvd_1;
  974. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  975. u8 rsvd_2 : 4;
  976. u8 hw_antsw_occur_a : 1;
  977. u8 hw_antsw_occur_b : 1;
  978. u8 hw_antsw_occur_c : 1;
  979. u8 hw_antsw_occur_d : 1;
  980. #else
  981. u8 hw_antsw_occur_d : 1;
  982. u8 hw_antsw_occur_c : 1;
  983. u8 hw_antsw_occur_b : 1;
  984. u8 hw_antsw_occur_a : 1;
  985. u8 rsvd_2 : 4;
  986. #endif
  987. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  988. u8 antidx_a : 4;
  989. u8 antidx_b : 4;
  990. #else
  991. u8 antidx_b : 4;
  992. u8 antidx_a : 4;
  993. #endif
  994. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  995. u8 antidx_c : 4;
  996. u8 antidx_d : 4;
  997. #else
  998. u8 antidx_d : 4;
  999. u8 antidx_c : 4;
  1000. #endif
  1001. /* @DW3 : offset 12 */
  1002. u8 tx_pkt_cnt;
  1003. #if (ODM_ENDIAN_TYPE == ODM_ENDIAN_LITTLE)
  1004. u8 inf_pos_0_A_flg : 1;
  1005. u8 inf_pos_1_A_flg : 1;
  1006. u8 inf_pos_0_B_flg : 1;
  1007. u8 inf_pos_1_B_flg : 1;
  1008. u8 inf_pos_0_C_flg : 1;
  1009. u8 inf_pos_1_C_flg : 1;
  1010. u8 inf_pos_0_D_flg : 1;
  1011. u8 inf_pos_1_D_flg : 1;
  1012. #else
  1013. u8 inf_pos_1_D_flg : 1;
  1014. u8 inf_pos_0_D_flg : 1;
  1015. u8 inf_pos_1_C_flg : 1;
  1016. u8 inf_pos_0_C_flg : 1;
  1017. u8 inf_pos_1_B_flg : 1;
  1018. u8 inf_pos_0_B_flg : 1;
  1019. u8 inf_pos_1_A_flg : 1;
  1020. u8 inf_pos_0_A_flg : 1;
  1021. #endif
  1022. u8 rsvd_3;
  1023. u8 rsvd_4;
  1024. /* @DW4 : offset 16 */
  1025. u8 inf_pos_0_a;
  1026. u8 inf_pos_1_a;
  1027. u8 inf_pos_0_b;
  1028. u8 inf_pos_1_b;
  1029. /* @DW5 : offset 20 */
  1030. u8 inf_pos_0_c;
  1031. u8 inf_pos_1_c;
  1032. u8 inf_pos_0_d;
  1033. u8 inf_pos_1_d;
  1034. };
  1035. #endif /*@#ifdef PHYSTS_3RD_TYPE_SUPPORT*/
  1036. #if (ODM_PHY_STATUS_NEW_TYPE_SUPPORT == 1)
  1037. boolean
  1038. phydm_query_is_mu_api(struct dm_struct *phydm, u8 ppdu_idx, u8 *p_data_rate,
  1039. u8 *p_gid);
  1040. #endif
  1041. #ifdef PHYSTS_3RD_TYPE_SUPPORT
  1042. void phydm_rx_physts_3rd_type(void *dm_void, u8 *phy_sts,
  1043. struct phydm_perpkt_info_struct *pktinfo,
  1044. struct phydm_phyinfo_struct *phy_info);
  1045. #endif
  1046. void phydm_reset_phystatus_avg(struct dm_struct *dm);
  1047. void phydm_reset_phystatus_statistic(struct dm_struct *dm);
  1048. void phydm_reset_rssi_for_dm(struct dm_struct *dm, u8 station_id);
  1049. void phydm_get_cck_rssi_table_from_reg(struct dm_struct *dm);
  1050. #if (DM_ODM_SUPPORT_TYPE == ODM_WIN)
  1051. void phydm_normal_driver_rx_sniffer(
  1052. struct dm_struct *dm,
  1053. u8 *desc,
  1054. PRT_RFD_STATUS rt_rfd_status,
  1055. u8 *drv_info,
  1056. u8 phy_status);
  1057. #endif
  1058. #if (DM_ODM_SUPPORT_TYPE == ODM_CE)
  1059. s32 phydm_signal_scale_mapping(struct dm_struct *dm, s32 curr_sig);
  1060. #endif
  1061. void odm_phy_status_query(struct dm_struct *dm,
  1062. struct phydm_phyinfo_struct *phy_info,
  1063. u8 *phy_status_inf,
  1064. struct phydm_perpkt_info_struct *pktinfo);
  1065. void phydm_rx_phy_status_init(void *dm_void);
  1066. #endif /*@#ifndef __HALHWOUTSRC_H__*/