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