1 /****************************************************************************** 2 * 3 * Copyright(c) 2007 - 2019 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 *****************************************************************************/ 15 #ifndef _RTW_MP_H_ 16 #define _RTW_MP_H_ 17 18 #include <drv_types.h> 19 20 #define RTWPRIV_VER_INFO 1 21 22 #define MAX_MP_XMITBUF_SZ 2048 23 #define NR_MP_XMITFRAME 8 24 #define MP_READ_REG_MAX_OFFSET 0x4FFF 25 26 #define TX_POWER_BASE 4 /* dbm * 4 */ 27 #define TX_POWER_CODE_WORD_BASE 8 /* dbm * 8 */ 28 29 struct mp_xmit_frame { 30 _list list; 31 32 struct pkt_attrib attrib; 33 34 struct sk_buff *pkt; 35 36 int frame_tag; 37 38 _adapter *padapter; 39 40 #ifdef CONFIG_USB_HCI 41 42 /* insert urb, irp, and irpcnt info below... */ 43 /* max frag_cnt = 8 */ 44 u8 *mem_addr; 45 u32 sz[8]; 46 u8 bpending[8]; 47 sint ac_tag[8]; 48 sint last[8]; 49 uint irpcnt; 50 uint fragcnt; 51 #endif /* CONFIG_USB_HCI */ 52 53 uint mem[(MAX_MP_XMITBUF_SZ >> 2)]; 54 }; 55 56 struct mp_wiparam { 57 u32 bcompleted; 58 u32 act_type; 59 u32 io_offset; 60 u32 io_value; 61 }; 62 63 typedef void(*wi_act_func)(void *padapter); 64 65 struct mp_tx { 66 u8 stop; 67 u32 count, sended; 68 u8 payload; 69 struct pkt_attrib attrib; 70 /* struct tx_desc desc; */ 71 /* u8 resvdtx[7]; */ 72 u8 desc[TXDESC_SIZE]; 73 u8 *pallocated_buf; 74 u8 *buf; 75 u32 buf_size, write_size; 76 _thread_hdl_ PktTxThread; 77 }; 78 79 #define MP_MAX_LINES 1000 80 #define MP_MAX_LINES_BYTES 256 81 82 83 typedef struct _RT_PMAC_PKT_INFO { 84 u8 MCS; 85 u8 Nss; 86 u8 Nsts; 87 u32 N_sym; 88 u8 SIGA2B3; 89 } RT_PMAC_PKT_INFO, *PRT_PMAC_PKT_INFO; 90 91 typedef struct _RT_PMAC_TX_INFO { 92 u8 bEnPMacTx:1; /* 0: Disable PMac 1: Enable PMac */ 93 u8 Mode:3; /* 0: Packet TX 3:Continuous TX */ 94 u8 Ntx:4; /* 0-7 */ 95 u8 TX_RATE; /* MPT_RATE_E */ 96 u8 TX_RATE_HEX; 97 u8 TX_SC; 98 u8 bSGI:1; 99 u8 bSPreamble:1; 100 u8 bSTBC:1; 101 u8 bLDPC:1; 102 u8 NDP_sound:1; 103 u8 BandWidth:3; /* 0: 20 1:40 2:80Mhz */ 104 u8 m_STBC; /* bSTBC + 1 */ 105 u16 PacketPeriod; 106 u32 PacketCount; 107 u32 PacketLength; 108 u8 PacketPattern; 109 u16 SFD; 110 u8 SignalField; 111 u8 ServiceField; 112 u16 LENGTH; 113 u8 CRC16[2]; 114 u8 LSIG[3]; 115 u8 HT_SIG[6]; 116 u8 VHT_SIG_A[6]; 117 u8 VHT_SIG_B[4]; 118 u8 VHT_SIG_B_CRC; 119 u8 VHT_Delimiter[4]; 120 u8 MacAddress[6]; 121 } RT_PMAC_TX_INFO, *PRT_PMAC_TX_INFO; 122 123 struct rtw_mp_giltf_data { 124 u8 gi; 125 u8 ltf; 126 char type_str[8]; 127 }; 128 129 typedef void (*MPT_WORK_ITEM_HANDLER)(void *adapter); 130 typedef struct _MPT_CONTEXT { 131 /* Indicate if we have started Mass Production Test. */ 132 BOOLEAN bMassProdTest; 133 134 /* Indicate if the driver is unloading or unloaded. */ 135 BOOLEAN bMptDrvUnload; 136 137 _sema MPh2c_Sema; 138 _timer MPh2c_timeout_timer; 139 /* Event used to sync H2c for BT control */ 140 141 BOOLEAN MptH2cRspEvent; 142 BOOLEAN MptBtC2hEvent; 143 BOOLEAN bMPh2c_timeout; 144 145 /* 8190 PCI does not support NDIS_WORK_ITEM. */ 146 /* Work Item for Mass Production Test. */ 147 /* NDIS_WORK_ITEM MptWorkItem; 148 * RT_WORK_ITEM MptWorkItem; */ 149 /* Event used to sync the case unloading driver and MptWorkItem is still in progress. 150 * NDIS_EVENT MptWorkItemEvent; */ 151 /* To protect the following variables. 152 * NDIS_SPIN_LOCK MptWorkItemSpinLock; */ 153 /* Indicate a MptWorkItem is scheduled and not yet finished. */ 154 BOOLEAN bMptWorkItemInProgress; 155 /* An instance which implements function and context of MptWorkItem. */ 156 MPT_WORK_ITEM_HANDLER CurrMptAct; 157 158 /* 1=Start, 0=Stop from UI. */ 159 u32 MptTestStart; 160 /* _TEST_MODE, defined in MPT_Req2.h */ 161 u32 MptTestItem; 162 /* Variable needed in each implementation of CurrMptAct. */ 163 u32 MptActType; /* Type of action performed in CurrMptAct. */ 164 /* The Offset of IO operation is depend of MptActType. */ 165 u32 MptIoOffset; 166 /* The Value of IO operation is depend of MptActType. */ 167 u32 MptIoValue; 168 /* The RfPath of IO operation is depend of MptActType. */ 169 170 u32 mpt_rf_path; 171 172 u8 MptChannelToSw; /* Channel to switch. */ 173 u8 MptInitGainToSet; /* Initial gain to set. */ 174 /* u32 bMptAntennaA; */ /* TRUE if we want to use antenna A. */ 175 u32 MptBandWidth; /* bandwidth to switch. */ 176 177 u32 mpt_rate_index;/* rate index. */ 178 179 /* Register value kept for Single Carrier Tx test. */ 180 u8 btMpCckTxPower; 181 /* Register value kept for Single Carrier Tx test. */ 182 u8 btMpOfdmTxPower; 183 /* For MP Tx Power index */ 184 u8 TxPwrLevel[4]; /* rf-A, rf-B*/ 185 u32 RegTxPwrLimit; 186 /* Content of RCR Regsiter for Mass Production Test. */ 187 u32 MptRCR; 188 /* TRUE if we only receive packets with specific pattern. */ 189 BOOLEAN bMptFilterPattern; 190 /* Rx OK count, statistics used in Mass Production Test. */ 191 u32 MptRxOkCnt; 192 /* Rx CRC32 error count, statistics used in Mass Production Test. */ 193 u32 MptRxCrcErrCnt; 194 195 BOOLEAN bCckContTx; /* TRUE if we are in CCK Continuous Tx test. */ 196 BOOLEAN bOfdmContTx; /* TRUE if we are in OFDM Continuous Tx test. */ 197 /* TRUE if we have start Continuous Tx test. */ 198 BOOLEAN is_start_cont_tx; 199 200 /* TRUE if we are in Single Carrier Tx test. */ 201 BOOLEAN bSingleCarrier; 202 /* TRUE if we are in Carrier Suppression Tx Test. */ 203 204 BOOLEAN is_carrier_suppression; 205 206 /* TRUE if we are in Single Tone Tx test. */ 207 208 BOOLEAN is_single_tone; 209 210 211 /* ACK counter asked by K.Y.. */ 212 BOOLEAN bMptEnableAckCounter; 213 u32 MptAckCounter; 214 215 /* SD3 Willis For 8192S to save 1T/2T RF table for ACUT Only fro ACUT delete later ~~~! */ 216 /* s8 BufOfLines[2][MAX_LINES_HWCONFIG_TXT][MAX_BYTES_LINE_HWCONFIG_TXT]; */ 217 /* s8 BufOfLines[2][MP_MAX_LINES][MP_MAX_LINES_BYTES]; */ 218 /* s32 RfReadLine[2]; */ 219 220 u8 APK_bound[2]; /* for APK path A/path B */ 221 BOOLEAN bMptIndexEven; 222 223 u8 backup0xc50; 224 u8 backup0xc58; 225 u8 backup0xc30; 226 u8 backup0x52_RF_A; 227 u8 backup0x52_RF_B; 228 229 u32 backup0x58_RF_A; 230 u32 backup0x58_RF_B; 231 232 u8 h2cReqNum; 233 u8 c2hBuf[32]; 234 235 u8 btInBuf[100]; 236 u32 mptOutLen; 237 u8 mptOutBuf[100]; 238 RT_PMAC_TX_INFO PMacTxInfo; 239 RT_PMAC_PKT_INFO PMacPktInfo; 240 u8 HWTxmode; 241 242 BOOLEAN bldpc; 243 BOOLEAN bstbc; 244 } MPT_CONTEXT, *PMPT_CONTEXT; 245 /* #endif */ 246 247 248 /* #define RTPRIV_IOCTL_MP ( SIOCIWFIRSTPRIV + 0x17) */ 249 enum { 250 WRITE_REG = 1, 251 READ_REG, 252 WRITE_RF, 253 READ_RF, 254 MP_START, 255 MP_STOP, 256 MP_RATE, 257 MP_CHANNEL, 258 MP_TRXSC_OFFSET, 259 MP_BANDWIDTH, 260 MP_TXPOWER, 261 MP_ANT_TX, 262 MP_ANT_RX, 263 MP_CTX, 264 MP_QUERY, 265 MP_ARX, 266 MP_PSD, 267 MP_PWRTRK, 268 MP_THER, 269 MP_IOCTL, 270 EFUSE_GET, 271 EFUSE_SET, 272 MP_RESET_STATS, 273 MP_DUMP, 274 MP_PHYPARA, 275 MP_SetRFPathSwh, 276 MP_QueryDrvStats, 277 CTA_TEST, 278 MP_DISABLE_BT_COEXIST, 279 MP_PwrCtlDM, 280 MP_GETVER, 281 MP_MON, 282 EFUSE_BT_MASK, 283 EFUSE_MASK, 284 EFUSE_FILE, 285 EFUSE_FILE_STORE, 286 MP_TX, 287 MP_RX, 288 MP_IQK, 289 MP_LCK, 290 MP_HW_TX_MODE, 291 MP_GET_TXPOWER_INX, 292 MP_CUSTOMER_STR, 293 MP_PWRLMT, 294 MP_PWRBYRATE, 295 BT_EFUSE_FILE, 296 MP_SWRFPath, 297 MP_LINK, 298 MP_DPK_TRK, 299 MP_DPK, 300 MP_GET_TSSIDE, 301 MP_SET_TSSIDE, 302 MP_GET_PHL_TEST, 303 MP_SET_PHL_TEST, 304 MP_SET_PHL_TX_PATTERN, 305 MP_SET_PHL_PLCP_TX_DATA, 306 MP_SET_PHL_PLCP_TX_USER, 307 MP_SET_PHL_TX_METHOD, 308 MP_SET_PHL_CONIFG_PHY_NUM, 309 MP_PHL_RFK, 310 MP_PHL_BTC_PATH, 311 MP_GET_HE, 312 MP_NULL, 313 #ifdef CONFIG_APPEND_VENDOR_IE_ENABLE 314 VENDOR_IE_SET , 315 VENDOR_IE_GET , 316 #endif 317 #if defined(RTW_PHL_TX) || defined(RTW_PHL_RX) || defined(CONFIG_PHL_TEST_SUITE) 318 PHL_TEST_SET, 319 PHL_TEST_GET, 320 #endif 321 #ifdef CONFIG_WOWLAN 322 MP_WOW_ENABLE, 323 MP_WOW_SET_PATTERN, 324 #endif 325 #ifdef CONFIG_AP_WOWLAN 326 MP_AP_WOW_ENABLE, 327 #endif 328 MP_SD_IREAD, 329 MP_SD_IWRITE, 330 }; 331 332 struct rtw_plcp_user { 333 u8 plcp_usr_idx; 334 u16 plcp_mcs; 335 u8 coding; 336 u8 dcm; 337 u8 aid; 338 u32 plcp_txlen; /*apep*/ 339 u32 ru_alloc; 340 u8 plcp_nss; 341 u8 txbf; 342 u8 pwr_boost_db; 343 }; 344 345 struct mp_priv { 346 _adapter *papdater; 347 348 /* Testing Flag */ 349 u32 mode;/* 0 for normal type packet, 1 for loopback packet (16bytes TXCMD) */ 350 351 u32 prev_fw_state; 352 353 /* OID cmd handler */ 354 struct mp_wiparam workparam; 355 /* u8 act_in_progress; */ 356 357 /* Tx Section */ 358 u8 TID; 359 u32 tx_pktcount; 360 u32 pktInterval; 361 u32 pktLength; 362 struct mp_tx tx; 363 364 /* Rx Section */ 365 u32 rx_bssidpktcount; 366 u32 rx_pktcount; 367 u32 rx_pktcount_filter_out; 368 u32 rx_crcerrpktcount; 369 u32 rx_pktloss; 370 BOOLEAN rx_bindicatePkt; 371 struct recv_stat rxstat; 372 BOOLEAN brx_filter_beacon; 373 374 /* RF/BB relative */ 375 u8 channel; 376 u8 bandwidth; 377 u8 prime_channel_offset; 378 u8 txpoweridx; 379 s16 txpowerdbm; 380 u16 rateidx; 381 s16 pre_refcw_cck_pwridxa; 382 s16 pre_refcw_cck_pwridxb; 383 s16 pre_refcw_ofdm_pwridxa; 384 s16 pre_refcw_ofdm_pwridxb; 385 386 u32 preamble; 387 /* u8 modem; */ 388 u32 CrystalCap; 389 /* u32 curr_crystalcap; */ 390 391 u8 antenna_tx; 392 u8 antenna_rx; 393 u8 antenna_trx; 394 /* u8 curr_rfpath; */ 395 396 u8 check_mp_pkt; 397 398 u8 bSetTxPower; 399 /* uint ForcedDataRate; */ 400 u8 mp_dm; 401 u8 mac_filter[ETH_ALEN]; 402 u8 bmac_filter; 403 404 /* RF PATH Setting for WLG WLA BTG BT */ 405 u8 rf_path_cfg; 406 u8 btc_path; /* BTC_MODE_NORMAL, BTC_MODE_WL,BTC_MODE_BT */ 407 408 struct wlan_network mp_network; 409 NDIS_802_11_MAC_ADDRESS network_macaddr; 410 411 u8 *pallocated_mp_xmitframe_buf; 412 u8 *pmp_xmtframe_buf; 413 _queue free_mp_xmitqueue; 414 u32 free_mp_xmitframe_cnt; 415 BOOLEAN bSetRxBssid; 416 BOOLEAN bTxBufCkFail; 417 BOOLEAN bRTWSmbCfg; 418 BOOLEAN bloopback; 419 BOOLEAN bloadefusemap; 420 BOOLEAN bloadBTefusemap; 421 BOOLEAN bprocess_mp_mode; 422 423 MPT_CONTEXT mpt_ctx; 424 425 u8 *TXradomBuffer; 426 u8 mp_keep_btc_mode; 427 u8 mplink_buf[2048]; 428 u32 mplink_rx_len; 429 BOOLEAN mplink_brx; 430 BOOLEAN mplink_btx; 431 432 bool tssitrk_on; 433 u8 rtw_mp_cur_phy; 434 u8 rtw_mp_dbcc; 435 s16 path_pwr_offset[4]; /* rf-A, rf-B*/ 436 u8 rtw_mp_tx_method; 437 u8 rtw_mp_pmact_patt_idx; 438 u8 rtw_mp_pmact_ppdu_type; 439 u8 rtw_mp_data_bandwidth; 440 u8 rtw_mp_stbc; 441 u8 rtw_mp_plcp_gi; 442 u8 rtw_mp_plcp_ltf; 443 u8 rtw_mp_he_sigb; 444 u8 rtw_mp_he_sigb_dcm; 445 u32 rtw_mp_plcp_tx_time; 446 u8 rtw_mp_plcp_tx_mode; 447 448 u8 rtw_mp_he_er_su_ru_106_en; 449 u8 rtw_mp_trxsc; 450 u16 rtw_mp_plcp_rualloc; 451 u8 rtw_mp_plcp_tx_user; 452 u32 rtw_mp_ru_tone; 453 u8 ru_tone_sel_list[6]; 454 u8 ru_alloc_list[68]; 455 456 struct rtw_mp_giltf_data st_giltf[5]; 457 struct rtw_plcp_user mp_plcp_user[4]; 458 u8 mp_plcp_useridx; 459 460 u8 keep_ips_status; 461 u8 keep_lps_status; 462 }; 463 464 #define PPDU_TYPE_STR(idx)\ 465 (idx == RTW_MP_TYPE_CCK) ? "CCK" :\ 466 (idx == RTW_MP_TYPE_LEGACY) ? "LEGACY" :\ 467 (idx == RTW_MP_TYPE_HT_MF) ? "HT_MF" :\ 468 (idx == RTW_MP_TYPE_HT_GF) ? "HT_GF" :\ 469 (idx == RTW_MP_TYPE_VHT) ? "VHT" :\ 470 (idx == RTW_MP_TYPE_HE_SU) ? "HE_SU" :\ 471 (idx == RTW_MP_TYPE_HE_ER_SU) ? "HE_ER_SU" :\ 472 (idx == RTW_MP_TYPE_HE_MU_OFDMA) ? "HE_MU" :\ 473 (idx == RTW_MP_TYPE_HE_TB) ? "HE_TB" :\ 474 "UNknow" 475 476 477 typedef struct _IOCMD_STRUCT_ { 478 u8 cmdclass; 479 u16 value; 480 u8 index; 481 } IOCMD_STRUCT; 482 483 struct rf_reg_param { 484 u32 path; 485 u32 offset; 486 u32 value; 487 }; 488 489 struct bb_reg_param { 490 u32 offset; 491 u32 value; 492 }; 493 494 /* *********************************************************************** */ 495 496 #define LOWER _TRUE 497 #define RAISE _FALSE 498 499 /* Hardware Registers */ 500 #if 0 501 #if 0 502 #define IOCMD_CTRL_REG 0x102502C0 503 #define IOCMD_DATA_REG 0x102502C4 504 #else 505 #define IOCMD_CTRL_REG 0x10250370 506 #define IOCMD_DATA_REG 0x10250374 507 #endif 508 509 #define IOCMD_GET_THERMAL_METER 0xFD000028 510 511 #define IOCMD_CLASS_BB_RF 0xF0 512 #define IOCMD_BB_READ_IDX 0x00 513 #define IOCMD_BB_WRITE_IDX 0x01 514 #define IOCMD_RF_READ_IDX 0x02 515 #define IOCMD_RF_WRIT_IDX 0x03 516 #endif 517 #define BB_REG_BASE_ADDR 0x800 518 519 /* MP variables */ 520 #if 0 521 #define _2MAC_MODE_ 0 522 #define _LOOPBOOK_MODE_ 1 523 #endif 524 525 typedef enum _MP_MODE_ { 526 MP_OFF, 527 MP_ON, 528 MP_ERR, 529 MP_CONTINUOUS_TX, 530 MP_SINGLE_CARRIER_TX, 531 MP_CARRIER_SUPPRISSION_TX, 532 MP_SINGLE_TONE_TX, 533 MP_PACKET_TX, 534 MP_PACKET_RX 535 } MP_MODE; 536 537 typedef enum _TEST_MODE { 538 TEST_NONE , 539 PACKETS_TX , 540 PACKETS_RX , 541 CONTINUOUS_TX , 542 OFDM_Single_Tone_TX , 543 CCK_Carrier_Suppression_TX 544 } TEST_MODE; 545 546 typedef enum _MPT_BANDWIDTH { 547 MPT_BW_20MHZ = 0, 548 MPT_BW_40MHZ_DUPLICATE = 1, 549 MPT_BW_40MHZ_ABOVE = 2, 550 MPT_BW_40MHZ_BELOW = 3, 551 MPT_BW_40MHZ = 4, 552 MPT_BW_80MHZ = 5, 553 MPT_BW_80MHZ_20_ABOVE = 6, 554 MPT_BW_80MHZ_20_BELOW = 7, 555 MPT_BW_80MHZ_20_BOTTOM = 8, 556 MPT_BW_80MHZ_20_TOP = 9, 557 MPT_BW_80MHZ_40_ABOVE = 10, 558 MPT_BW_80MHZ_40_BELOW = 11, 559 } MPT_BANDWIDTHE, *PMPT_BANDWIDTH; 560 561 #define MAX_RF_PATH_NUMS RF_PATH_MAX 562 563 564 extern u8 mpdatarate[NumRates]; 565 566 /* MP set force data rate base on the definition. */ 567 typedef enum _MPT_RATE_INDEX { 568 /* CCK rate. */ 569 MPT_RATE_1M = 1 , /* 0 */ 570 MPT_RATE_2M, 571 MPT_RATE_55M, 572 MPT_RATE_11M, /* 3 */ 573 574 /* OFDM rate. */ 575 MPT_RATE_6M, /* 4 */ 576 MPT_RATE_9M, 577 MPT_RATE_12M, 578 MPT_RATE_18M, 579 MPT_RATE_24M, 580 MPT_RATE_36M, 581 MPT_RATE_48M, 582 MPT_RATE_54M, /* 11 */ 583 584 /* HT rate. */ 585 MPT_RATE_MCS0, /* 12 */ 586 MPT_RATE_MCS1, 587 MPT_RATE_MCS2, 588 MPT_RATE_MCS3, 589 MPT_RATE_MCS4, 590 MPT_RATE_MCS5, 591 MPT_RATE_MCS6, 592 MPT_RATE_MCS7, /* 19 */ 593 MPT_RATE_MCS8, 594 MPT_RATE_MCS9, 595 MPT_RATE_MCS10, 596 MPT_RATE_MCS11, 597 MPT_RATE_MCS12, 598 MPT_RATE_MCS13, 599 MPT_RATE_MCS14, 600 MPT_RATE_MCS15, /* 27 */ 601 MPT_RATE_MCS16, 602 MPT_RATE_MCS17, /* #29 */ 603 MPT_RATE_MCS18, 604 MPT_RATE_MCS19, 605 MPT_RATE_MCS20, 606 MPT_RATE_MCS21, 607 MPT_RATE_MCS22, /* #34 */ 608 MPT_RATE_MCS23, 609 MPT_RATE_MCS24, 610 MPT_RATE_MCS25, 611 MPT_RATE_MCS26, 612 MPT_RATE_MCS27, /* #39 */ 613 MPT_RATE_MCS28, /* #40 */ 614 MPT_RATE_MCS29, /* #41 */ 615 MPT_RATE_MCS30, /* #42 */ 616 MPT_RATE_MCS31, /* #43 */ 617 /* VHT rate. Total: 20*/ 618 MPT_RATE_VHT1SS_MCS0 = 100,/* #44*/ 619 MPT_RATE_VHT1SS_MCS1, /* # */ 620 MPT_RATE_VHT1SS_MCS2, 621 MPT_RATE_VHT1SS_MCS3, 622 MPT_RATE_VHT1SS_MCS4, 623 MPT_RATE_VHT1SS_MCS5, 624 MPT_RATE_VHT1SS_MCS6, /* # */ 625 MPT_RATE_VHT1SS_MCS7, 626 MPT_RATE_VHT1SS_MCS8, 627 MPT_RATE_VHT1SS_MCS9, /* #53 */ 628 MPT_RATE_VHT2SS_MCS0, /* #54 */ 629 MPT_RATE_VHT2SS_MCS1, 630 MPT_RATE_VHT2SS_MCS2, 631 MPT_RATE_VHT2SS_MCS3, 632 MPT_RATE_VHT2SS_MCS4, 633 MPT_RATE_VHT2SS_MCS5, 634 MPT_RATE_VHT2SS_MCS6, 635 MPT_RATE_VHT2SS_MCS7, 636 MPT_RATE_VHT2SS_MCS8, 637 MPT_RATE_VHT2SS_MCS9, /* #63 */ 638 MPT_RATE_VHT3SS_MCS0, 639 MPT_RATE_VHT3SS_MCS1, 640 MPT_RATE_VHT3SS_MCS2, 641 MPT_RATE_VHT3SS_MCS3, 642 MPT_RATE_VHT3SS_MCS4, 643 MPT_RATE_VHT3SS_MCS5, 644 MPT_RATE_VHT3SS_MCS6, /* #126 */ 645 MPT_RATE_VHT3SS_MCS7, 646 MPT_RATE_VHT3SS_MCS8, 647 MPT_RATE_VHT3SS_MCS9, 648 MPT_RATE_VHT4SS_MCS0, 649 MPT_RATE_VHT4SS_MCS1, /* #131 */ 650 MPT_RATE_VHT4SS_MCS2, 651 MPT_RATE_VHT4SS_MCS3, 652 MPT_RATE_VHT4SS_MCS4, 653 MPT_RATE_VHT4SS_MCS5, 654 MPT_RATE_VHT4SS_MCS6, /* #136 */ 655 MPT_RATE_VHT4SS_MCS7, 656 MPT_RATE_VHT4SS_MCS8, 657 MPT_RATE_VHT4SS_MCS9, 658 MPT_RATE_LAST 659 } MPT_RATE_E, *PMPT_RATE_E; 660 661 #define MAX_TX_PWR_INDEX_N_MODE 64 /* 0x3F */ 662 663 #define MPT_IS_CCK_RATE(_value) (MPT_RATE_1M <= _value && _value <= MPT_RATE_11M) 664 #define MPT_IS_OFDM_RATE(_value) (MPT_RATE_6M <= _value && _value <= MPT_RATE_54M) 665 #define MPT_IS_HT_RATE(_value) (MPT_RATE_MCS0 <= _value && _value <= MPT_RATE_MCS31) 666 #define MPT_IS_HT_1S_RATE(_value) (MPT_RATE_MCS0 <= _value && _value <= MPT_RATE_MCS7) 667 #define MPT_IS_HT_2S_RATE(_value) (MPT_RATE_MCS8 <= _value && _value <= MPT_RATE_MCS15) 668 #define MPT_IS_HT_3S_RATE(_value) (MPT_RATE_MCS16 <= _value && _value <= MPT_RATE_MCS23) 669 #define MPT_IS_HT_4S_RATE(_value) (MPT_RATE_MCS24 <= _value && _value <= MPT_RATE_MCS31) 670 671 #define MPT_IS_VHT_RATE(_value) (MPT_RATE_VHT1SS_MCS0 <= _value && _value <= MPT_RATE_VHT4SS_MCS9) 672 #define MPT_IS_VHT_1S_RATE(_value) (MPT_RATE_VHT1SS_MCS0 <= _value && _value <= MPT_RATE_VHT1SS_MCS9) 673 #define MPT_IS_VHT_2S_RATE(_value) (MPT_RATE_VHT2SS_MCS0 <= _value && _value <= MPT_RATE_VHT2SS_MCS9) 674 #define MPT_IS_VHT_3S_RATE(_value) (MPT_RATE_VHT3SS_MCS0 <= _value && _value <= MPT_RATE_VHT3SS_MCS9) 675 #define MPT_IS_VHT_4S_RATE(_value) (MPT_RATE_VHT4SS_MCS0 <= _value && _value <= MPT_RATE_VHT4SS_MCS9) 676 677 #define MPT_IS_2SS_RATE(_rate) ((MPT_RATE_MCS8 <= _rate && _rate <= MPT_RATE_MCS15) || \ 678 (MPT_RATE_VHT2SS_MCS0 <= _rate && _rate <= MPT_RATE_VHT2SS_MCS9)) 679 #define MPT_IS_3SS_RATE(_rate) ((MPT_RATE_MCS16 <= _rate && _rate <= MPT_RATE_MCS23) || \ 680 (MPT_RATE_VHT3SS_MCS0 <= _rate && _rate <= MPT_RATE_VHT3SS_MCS9)) 681 #define MPT_IS_4SS_RATE(_rate) ((MPT_RATE_MCS24 <= _rate && _rate <= MPT_RATE_MCS31) || \ 682 (MPT_RATE_VHT4SS_MCS0 <= _rate && _rate <= MPT_RATE_VHT4SS_MCS9)) 683 684 typedef enum _POWER_MODE_ { 685 POWER_LOW = 0, 686 POWER_NORMAL 687 } POWER_MODE; 688 689 /* The following enumeration is used to define the value of Reg0xD00[30:28] or JaguarReg0x914[18:16]. */ 690 typedef enum _OFDM_TX_MODE { 691 OFDM_ALL_OFF = 0, 692 OFDM_ContinuousTx = 1, 693 OFDM_SingleCarrier = 2, 694 OFDM_SingleTone = 4, 695 } OFDM_TX_MODE; 696 697 698 #define RX_PKT_BROADCAST 1 699 #define RX_PKT_DEST_ADDR 2 700 #define RX_PKT_PHY_MATCH 3 701 702 typedef enum _ENCRY_CTRL_STATE_ { 703 HW_CONTROL, /* hw encryption& decryption */ 704 SW_CONTROL, /* sw encryption& decryption */ 705 HW_ENCRY_SW_DECRY, /* hw encryption & sw decryption */ 706 SW_ENCRY_HW_DECRY /* sw encryption & hw decryption */ 707 } ENCRY_CTRL_STATE; 708 709 typedef enum _MPT_TXPWR_DEF { 710 MPT_CCK, 711 MPT_OFDM, /* L and HT OFDM */ 712 MPT_OFDM_AND_HT, 713 MPT_HT, 714 MPT_VHT 715 } MPT_TXPWR_DEF; 716 717 718 #define IS_MPT_HT_RATE(_rate) (_rate >= MPT_RATE_MCS0 && _rate <= MPT_RATE_MCS31) 719 #define IS_MPT_VHT_RATE(_rate) (_rate >= MPT_RATE_VHT1SS_MCS0 && _rate <= MPT_RATE_VHT4SS_MCS9) 720 #define IS_MPT_CCK_RATE(_rate) (_rate >= MPT_RATE_1M && _rate <= MPT_RATE_11M) 721 #define IS_MPT_OFDM_RATE(_rate) (_rate >= MPT_RATE_6M && _rate <= MPT_RATE_54M) 722 723 typedef enum _mp_tx_pkt_payload{ 724 MP_TX_Payload_00 = 0, 725 MP_TX_Payload_a5, 726 MP_TX_Payload_5a, 727 MP_TX_Payload_ff, 728 MP_TX_Payload_prbs9, 729 MP_TX_Payload_default_random 730 } mp_tx_pkt_payload; 731 732 /*************************************************************************/ 733 #if 0 734 extern struct mp_xmit_frame *alloc_mp_xmitframe(struct mp_priv *pmp_priv); 735 extern int free_mp_xmitframe(struct xmit_priv *pxmitpriv, struct mp_xmit_frame *pmp_xmitframe); 736 #endif 737 enum rtw_mp_tx_method { 738 RTW_MP_SW_TX = 0, 739 RTW_MP_PMACT_TX, 740 RTW_MP_TMACT_TX, 741 RTW_MP_FW_PMACT_TX, 742 }; 743 744 enum rtw_mp_tx_cmd { 745 RTW_MP_TX_NONE = 0, 746 RTW_MP_TX_PACKETS, 747 RTW_MP_TX_CONTINUOUS, 748 RTW_MP_TX_SINGLE_TONE, 749 RTW_MP_TX_CCK_Carrier_Suppression, 750 RTW_MP_TX_CONFIG_PLCP_COMMON_INFO, 751 RTW_MP_TX_CMD_PHY_OK, 752 RTW_MP_TX_CONFIG_PLCP_PATTERN, 753 RTW_MP_TX_CONFIG_PLCP_USER_INFO, 754 RTW_MP_TX_MODE_SWITCH, 755 RTW_MP_TX_F2P, 756 RTW_MP_TX_TB_TEST, 757 RTW_MP_TX_DPD_BYPASS, 758 RTW_MP_TX_CHECK_TX_IDLE, 759 RTW_MP_TX_CMD_MAX, 760 }; 761 762 enum rtw_mp_pmac_mode { 763 RTW_MP_PMAC_NONE_TEST, 764 RTW_MP_PMAC_PKTS_TX, 765 RTW_MP_PMAC_PKTS_RX, 766 RTW_MP_PMAC_CONT_TX, 767 RTW_MP_PMAC_FW_TRIG_TX, 768 RTW_MP_PMAC_OFDM_SINGLE_TONE_TX, 769 RTW_MP_PMAC_CCK_CARRIER_SIPPRESSION_TX 770 }; 771 772 enum rtw_mp_ppdu_type { 773 RTW_MP_TYPE_CCK = 0, 774 RTW_MP_TYPE_LEGACY, 775 RTW_MP_TYPE_HT_MF, 776 RTW_MP_TYPE_HT_GF, 777 RTW_MP_TYPE_VHT, 778 RTW_MP_TYPE_HE_SU, 779 RTW_MP_TYPE_HE_ER_SU, 780 RTW_MP_TYPE_HE_MU_OFDMA, 781 RTW_MP_TYPE_HE_TB 782 }; 783 784 /* mp command class */ 785 enum rtw_mp_class { 786 RTW_MP_CLASS_CONFIG = 0, 787 RTW_MP_CLASS_TX = 1, 788 RTW_MP_CLASS_RX = 2, 789 RTW_MP_CLASS_EFUSE = 3, 790 RTW_MP_CLASS_REG = 4, 791 RTW_MP_CLASS_TXPWR = 5, 792 RTW_MP_CLASS_CAL = 6, 793 RTW_MP_CLASS_FLASH = 7, 794 RTW_MP_CLASS_MAX, 795 }; 796 797 /* mp rx command */ 798 enum rtw_mp_rx_cmd { 799 RTW_MP_RX_CMD_PHY_CRC_OK = 0, 800 RTW_MP_RX_CMD_PHY_CRC_ERR = 1, 801 RTW_MP_RX_CMD_MAC_CRC_OK = 2, 802 RTW_MP_RX_CMD_MAC_CRC_ERR = 3, 803 RTW_MP_RX_CMD_DRV_CRC_OK = 4, 804 RTW_MP_RX_CMD_DRV_CRC_ERR = 5, 805 RTW_MP_RX_CMD_GET_RSSI = 6, 806 RTW_MP_RX_CMD_GET_RXEVM = 7, 807 RTW_MP_RX_CMD_GET_PHYSTS = 8, 808 RTW_MP_RX_CMD_TRIGGER_RXEVM = 9, 809 RTW_MP_RX_CMD_SET_GAIN_OFFSET = 10, 810 RTW_MP_RX_CMD_MAX, 811 812 }; 813 814 /* mp config command */ 815 enum rtw_mp_config_cmdid { 816 RTW_MP_CONFIG_CMD_GET_BW, 817 RTW_MP_CONFIG_CMD_GET_RF_STATUS, 818 RTW_MP_CONFIG_CMD_SET_RATE_IDX, 819 RTW_MP_CONFIG_CMD_SET_RF_TXRX_PATH, 820 RTW_MP_CONFIG_CMD_SET_RESET_PHY_COUNT, 821 RTW_MP_CONFIG_CMD_SET_RESET_MAC_COUNT, 822 RTW_MP_CONFIG_CMD_SET_RESET_DRV_COUNT, 823 RTW_MP_CONFIG_CMD_PBC, 824 RTW_MP_CONFIG_CMD_START_DUT, 825 RTW_MP_CONFIG_CMD_STOP_DUT, 826 RTW_MP_CONFIG_CMD_GET_MIMPO_RSSI, 827 RTW_MP_CONFIG_CMD_GET_BOARD_TYPE, 828 RTW_MP_CONFIG_CMD_GET_MODULATION, 829 RTW_MP_CONFIG_CMD_GET_RF_MODE, 830 RTW_MP_CONFIG_CMD_GET_RF_PATH, 831 RTW_MP_CONFIG_CMD_SET_MODULATION, 832 RTW_MP_CONFIG_CMD_GET_DEVICE_INFO, 833 RTW_MP_CONFIG_CMD_SET_PHY_INDEX, 834 RTW_MP_CONFIG_CMD_GET_MAC_ADDR, 835 RTW_MP_CONFIG_CMD_SET_MAC_ADDR, 836 RTW_MP_CONFIG_CMD_SET_CH_BW, 837 RTW_MP_CONFIG_CMD_GET_TX_NSS, 838 RTW_MP_CONFIG_CMD_GET_RX_NSS, 839 RTW_MP_CONFIG_CMD_SWITCH_BT_PATH, 840 RTW_MP_CONFIG_CMD_GET_RFE_TYPE, 841 RTW_MP_CONFIG_CMD_GET_DEV_IDX, 842 RTW_MP_CONFIG_CMD_TRIGGER_FW_CONFLICT, 843 RTW_MP_CONFIG_CMD_MAX, 844 }; 845 846 typedef enum _mp_ant_path { 847 MP_ANTENNA_NONE = 0, 848 MP_ANTENNA_D = 1, 849 MP_ANTENNA_C = 2, 850 MP_ANTENNA_CD = 3, 851 MP_ANTENNA_B = 4, 852 MP_ANTENNA_BD = 5, 853 MP_ANTENNA_BC = 6, 854 MP_ANTENNA_BCD = 7, 855 MP_ANTENNA_A = 8, 856 MP_ANTENNA_AD = 9, 857 MP_ANTENNA_AC = 10, 858 MP_ANTENNA_ACD = 11, 859 MP_ANTENNA_AB = 12, 860 MP_ANTENNA_ABD = 13, 861 MP_ANTENNA_ABC = 14, 862 MP_ANTENNA_ABCD = 15 863 } mp_ant_path; 864 865 #define RTW_MP_TEST_NAME_LEN 32 866 #define RTW_MP_TEST_RPT_RSN_LEN 32 867 868 struct rtw_mp_test_rpt { 869 char name[RTW_MP_TEST_NAME_LEN]; 870 u8 status; 871 char rsn[RTW_MP_TEST_RPT_RSN_LEN]; 872 u32 total_time; // in ms 873 }; 874 875 struct rtw_mp_cmd_arg { 876 u8 mp_class; 877 u8 cmd; 878 u8 cmd_ok; 879 }; 880 881 struct rtw_mp_config_arg { 882 u8 mp_class; 883 u8 cmd; 884 u8 cmd_ok; 885 u8 status; 886 u8 channel; 887 u8 bandwidth; 888 u8 rate_idx; 889 u8 ant_tx; 890 u8 ant_rx; 891 u8 rf_path; 892 u8 get_rfstats; 893 u8 modulation; 894 u8 bustype; 895 u32 chipid; 896 u8 cur_phy; 897 u8 mac_addr[6]; 898 u8 sc_idx; 899 u8 dbcc_en; 900 u8 btc_mode; 901 u8 rfe_type; 902 u8 dev_id; 903 u32 offset; 904 u8 voltag; 905 }; 906 907 struct rtw_mp_tx_arg { 908 u8 mp_class; 909 u8 cmd; 910 u8 cmd_ok; 911 u8 status; 912 u8 tx_method; 913 u8 plcp_ppdu_type; /*offline gen*/ 914 u16 plcp_case_id; /*offline gen*/ 915 u8 bCarrierSuppression; 916 u8 is_cck; 917 u8 start_tx; 918 u16 tx_cnt; 919 u16 period; /* us */ 920 u16 tx_time; /* us */ 921 u32 tx_ok; 922 u8 tx_path; 923 u8 tx_mode; /* mode: 0 = tmac, 1 = pmac */ 924 u8 tx_concurrent_en; /* concurrent tx */ 925 u8 dpd_bypass; 926 /* plcp info */ 927 u32 dbw; /*0:BW20, 1:BW40, 2:BW80, 3:BW160/BW80+80*/ 928 u32 source_gen_mode; 929 u32 locked_clk; 930 u32 dyn_bw; 931 u32 ndp_en; 932 u32 long_preamble_en; /*bmode*/ 933 u32 stbc; 934 u32 gi; /*0:0.4,1:0.8,2:1.6,3:3.2*/ 935 u32 tb_l_len; 936 u32 tb_ru_tot_sts_max; 937 u32 vht_txop_not_allowed; 938 u32 tb_disam; 939 u32 doppler; 940 u32 he_ltf_type; /*0:1x,1:2x,2:4x*/ 941 u32 ht_l_len; 942 u32 preamble_puncture; 943 u32 he_mcs_sigb;/*0~5*/ 944 u32 he_dcm_sigb; 945 u32 he_sigb_compress_en; 946 u32 max_tx_time_0p4us; 947 u32 ul_flag; 948 u32 tb_ldpc_extra; 949 u32 bss_color; 950 u32 sr; 951 u32 beamchange_en; 952 u32 he_er_u106ru_en; 953 u32 ul_srp1; 954 u32 ul_srp2; 955 u32 ul_srp3; 956 u32 ul_srp4; 957 u32 mode; 958 u32 group_id; 959 u32 ppdu_type;/*0: bmode,1:Legacy,2:HT_MF,3:HT_GF,4:VHT,5:HE_SU,6:HE_ER_SU,7:HE_MU,8:HE_TB*/ 960 u32 txop; 961 u32 tb_strt_sts; 962 u32 tb_pre_fec_padding_factor; 963 u32 cbw; 964 u32 txsc; 965 u32 tb_mumimo_mode_en; 966 u32 nominal_t_pe; /* def = 2*/ 967 u32 ness; /* def = 0*/ 968 u32 n_user; 969 u32 tb_rsvd;/*def = 0*/ 970 /* plcp user info */ 971 u32 plcp_usr_idx; 972 u32 mcs; 973 u32 mpdu_len; 974 u32 n_mpdu; 975 u32 fec; 976 u32 dcm; 977 u32 aid; 978 u32 scrambler_seed; /* rand (1~255)*/ 979 u32 random_init_seed; /* rand (1~255)*/ 980 u32 apep; 981 u32 ru_alloc; 982 u32 nss; 983 u32 txbf; 984 u32 pwr_boost_db; 985 //struct mp_plcp_param_t plcp_param; /*online gen*/ 986 u32 data_rate; 987 u8 plcp_sts; 988 989 /*HE-TB Test*/ 990 u8 bSS_id_addr0; 991 u8 bSS_id_addr1; 992 u8 bSS_id_addr2; 993 u8 bSS_id_addr3; 994 u8 bSS_id_addr4; 995 u8 bSS_id_addr5; 996 u8 is_link_mode; 997 998 /* f2p cmd */ 999 u32 pref_AC_0; 1000 u32 aid12_0; 1001 u32 ul_mcs_0; 1002 u32 macid_0; 1003 u32 ru_pos_0; 1004 u32 ul_fec_code_0; 1005 u32 ul_dcm_0; 1006 u32 ss_alloc_0; 1007 u32 ul_tgt_rssi_0; 1008 u32 pref_AC_1; 1009 u32 aid12_1; 1010 u32 ul_mcs_1; 1011 u32 macid_1; 1012 u32 ru_pos_1; 1013 u32 ul_fec_code_1; 1014 u32 ul_dcm_1; 1015 u32 ss_alloc_1; 1016 u32 ul_tgt_rssi_1; 1017 u32 pref_AC_2; 1018 u32 aid12_2; 1019 u32 ul_mcs_2; 1020 u32 macid_2; 1021 u32 ru_pos_2; 1022 u32 ul_fec_code_2; 1023 u32 ul_dcm_2; 1024 u32 ss_alloc_2; 1025 u32 ul_tgt_rssi_2; 1026 u32 pref_AC_3; 1027 u32 aid12_3; 1028 u32 ul_mcs_3; 1029 u32 macid_3; 1030 u32 ru_pos_3; 1031 u32 ul_fec_code_3; 1032 u32 ul_dcm_3; 1033 u32 ss_alloc_3; 1034 u32 ul_tgt_rssi_3; 1035 u32 ul_bw; 1036 u32 gi_ltf; 1037 u32 num_he_ltf; 1038 u32 ul_stbc; 1039 u32 pkt_doppler; 1040 u32 ap_tx_power; 1041 u32 user_num; 1042 u32 pktnum; 1043 u32 pri20_bitmap; 1044 u32 datarate; 1045 u32 mulport_id; 1046 u32 pwr_ofset; 1047 u32 f2p_mode; 1048 u32 frexch_type; 1049 u32 sigb_len; 1050 /* dword 0 */ 1051 u32 cmd_qsel; 1052 u32 ls; 1053 u32 fs; 1054 u32 total_number; 1055 u32 seq; 1056 u32 length; 1057 /* dword 1 */ 1058 /* dword 0 */ 1059 u32 cmd_type; 1060 u32 cmd_sub_type; 1061 u32 dl_user_num; 1062 u32 bw; 1063 u32 tx_power; 1064 /* dword 1 */ 1065 u32 fw_define; 1066 u32 ss_sel_mode; 1067 u32 next_qsel; 1068 u32 twt_group; 1069 u32 dis_chk_slp; 1070 u32 ru_mu_2_su; 1071 u32 dl_t_pe; 1072 /* dword 2 */ 1073 u32 sigb_ch1_len; 1074 u32 sigb_ch2_len; 1075 u32 sigb_sym_num; 1076 u32 sigb_ch2_ofs; 1077 u32 dis_htp_ack; 1078 u32 tx_time_ref; 1079 u32 pri_user_idx; 1080 /* dword 3 */ 1081 u32 ampdu_max_txtime; 1082 u32 d3_group_id; 1083 u32 twt_chk_en; 1084 u32 twt_port_id; 1085 /* dword 4 */ 1086 u32 twt_start_time; 1087 /* dword 5 */ 1088 u32 twt_end_time; 1089 /* dword 6 */ 1090 u32 apep_len; 1091 u32 tri_pad; 1092 u32 ul_t_pe; 1093 u32 rf_gain_idx; 1094 u32 fixed_gain_en; 1095 u32 ul_gi_ltf; 1096 u32 ul_doppler; 1097 u32 d6_ul_stbc; 1098 /* dword 7 */ 1099 u32 ul_mid_per; 1100 u32 ul_cqi_rrp_tri; 1101 u32 sigb_dcm; 1102 u32 sigb_comp; 1103 u32 d7_doppler; 1104 u32 d7_stbc; 1105 u32 mid_per; 1106 u32 gi_ltf_size; 1107 u32 sigb_mcs; 1108 /* dword 8 */ 1109 u32 macid_u0; 1110 u32 ac_type_u0; 1111 u32 mu_sta_pos_u0; 1112 u32 dl_rate_idx_u0; 1113 u32 dl_dcm_en_u0; 1114 u32 ru_alo_idx_u0; 1115 /* dword 9 */ 1116 u32 pwr_boost_u0; 1117 u32 agg_bmp_alo_u0; 1118 u32 ampdu_max_txnum_u0; 1119 u32 user_define_u0; 1120 u32 user_define_ext_u0; 1121 /* dword 10 */ 1122 u32 ul_addr_idx_u0; 1123 u32 ul_dcm_u0; 1124 u32 ul_fec_cod_u0; 1125 u32 ul_ru_rate_u0; 1126 u32 ul_ru_alo_idx_u0; 1127 /* dword 11 */ 1128 /* dword 12 */ 1129 u32 macid_u1; 1130 u32 ac_type_u1; 1131 u32 mu_sta_pos_u1; 1132 u32 dl_rate_idx_u1; 1133 u32 dl_dcm_en_u1; 1134 u32 ru_alo_idx_u1; 1135 /* dword 13 */ 1136 u32 pwr_boost_u1; 1137 u32 agg_bmp_alo_u1; 1138 u32 ampdu_max_txnum_u1; 1139 u32 user_define_u1; 1140 u32 user_define_ext_u1; 1141 /* dword 14 */ 1142 u32 ul_addr_idx_u1; 1143 u32 ul_dcm_u1; 1144 u32 ul_fec_cod_u1; 1145 u32 ul_ru_rate_u1; 1146 u32 ul_ru_alo_idx_u1; 1147 /* dword 15 */ 1148 /* dword 16 */ 1149 u32 macid_u2; 1150 u32 ac_type_u2; 1151 u32 mu_sta_pos_u2; 1152 u32 dl_rate_idx_u2; 1153 u32 dl_dcm_en_u2; 1154 u32 ru_alo_idx_u2; 1155 /* dword 17 */ 1156 u32 pwr_boost_u2; 1157 u32 agg_bmp_alo_u2; 1158 u32 ampdu_max_txnum_u2; 1159 u32 user_define_u2; 1160 u32 user_define_ext_u2; 1161 /* dword 18 */ 1162 u32 ul_addr_idx_u2; 1163 u32 ul_dcm_u2; 1164 u32 ul_fec_cod_u2; 1165 u32 ul_ru_rate_u2; 1166 u32 ul_ru_alo_idx_u2; 1167 /* dword 19 */ 1168 /* dword 20 */ 1169 u32 macid_u3; 1170 u32 ac_type_u3; 1171 u32 mu_sta_pos_u3; 1172 u32 dl_rate_idx_u3; 1173 u32 dl_dcm_en_u3; 1174 u32 ru_alo_idx_u3; 1175 /* dword 21 */ 1176 u32 pwr_boost_u3; 1177 u32 agg_bmp_alo_u3; 1178 u32 ampdu_max_txnum_u3; 1179 u32 user_define_u3; 1180 u32 user_define_ext_u3; 1181 /* dword 22 */ 1182 u32 ul_addr_idx_u3; 1183 u32 ul_dcm_u3; 1184 u32 ul_fec_cod_u3; 1185 u32 ul_ru_rate_u3; 1186 u32 ul_ru_alo_idx_u3; 1187 /* dword 23 */ 1188 /* dword 24 */ 1189 u32 pkt_id_0; 1190 u32 valid_0; 1191 u32 ul_user_num_0; 1192 /* dword 25 */ 1193 u32 pkt_id_1; 1194 u32 valid_1; 1195 u32 ul_user_num_1; 1196 /* dword 26 */ 1197 u32 pkt_id_2; 1198 u32 valid_2; 1199 u32 ul_user_num_2; 1200 /* dword 27 */ 1201 u32 pkt_id_3; 1202 u32 valid_3; 1203 u32 ul_user_num_3; 1204 /* dword 28 */ 1205 u32 pkt_id_4; 1206 u32 valid_4; 1207 u32 ul_user_num_4; 1208 /* dword 29 */ 1209 u32 pkt_id_5; 1210 u32 valid_5; 1211 u32 ul_user_num_5; 1212 /* tx state*/ 1213 u8 tx_state; 1214 }; 1215 1216 1217 struct rtw_mp_rx_arg { 1218 u8 mp_class; 1219 u8 cmd; 1220 u8 cmd_ok; 1221 u8 status; 1222 u32 rx_ok; 1223 u32 rx_err; 1224 u8 rssi; 1225 u8 rx_path; 1226 u8 rx_evm; 1227 u8 user; 1228 u8 strm; 1229 u8 rxevm_table; 1230 u8 enable; 1231 u32 phy0_user0_rxevm; 1232 u32 phy0_user1_rxevm; 1233 u32 phy0_user2_rxevm; 1234 u32 phy0_user3_rxevm; 1235 u32 phy1_user0_rxevm; 1236 u32 phy1_user1_rxevm; 1237 u32 phy1_user2_rxevm; 1238 u32 phy1_user3_rxevm; 1239 s8 offset; 1240 u8 rf_path; 1241 u8 iscck; 1242 s16 rssi_ex; 1243 }; 1244 1245 /* mp tx power command */ 1246 enum rtw_mp_txpwr_cmd { 1247 RTW_MP_TXPWR_CMD_READ_PWR_TABLE = 0, 1248 RTW_MP_TXPWR_CMD_GET_PWR_TRACK_STATUS = 1, 1249 RTW_MP_TXPWR_CMD_SET_PWR_TRACK_STATUS = 2, 1250 RTW_MP_TXPWR_CMD_SET_TXPWR = 3, 1251 RTW_MP_TXPWR_CMD_GET_TXPWR = 4, 1252 RTW_MP_TXPWR_CMD_GET_TXPWR_INDEX = 5, 1253 RTW_MP_TXPWR_CMD_GET_THERMAL = 6, 1254 RTW_MP_TXPWR_CMD_GET_TSSI = 7, 1255 RTW_MP_TXPWR_CMD_SET_TSSI = 8, 1256 RTW_MP_TXPWR_CMD_GET_TXPWR_REF = 9, 1257 RTW_MP_TXPWR_CMD_GET_TXPWR_REF_CW = 10, 1258 RTW_MP_TXPWR_CMD_SET_TXPWR_INDEX = 11, 1259 RTW_MP_TXPWR_CMD_GET_TXINFOPWR = 12, 1260 RTW_MP_TXPWR_CMD_SET_RFMODE = 13, 1261 RTW_MP_TXPWR_CMD_SET_TSSI_OFFSET = 14, 1262 RTW_MP_TXPWR_CMD_GET_ONLINE_TSSI_DE = 15, 1263 RTW_MP_TXPWR_CMD_SET_PWR_LMT_EN = 16, 1264 RTW_MP_TXPWR_CMD_GET_PWR_LMT_EN = 17, 1265 RTW_MP_TXPWR_CMD_MAX, 1266 }; 1267 1268 enum rtw_mp_tssi_pwrtrk_type{ 1269 RTW_MP_TSSI_OFF = 0, 1270 RTW_MP_TSSI_ON, 1271 RTW_MP_TSSI_CAL 1272 }; 1273 1274 struct rtw_mp_txpwr_arg { 1275 u8 mp_class; 1276 u8 cmd; 1277 u8 cmd_ok; 1278 u8 status; 1279 s16 txpwr; 1280 u16 txpwr_index; 1281 u8 txpwr_track_status; 1282 u8 txpwr_status; 1283 u32 tssi; 1284 u8 thermal; 1285 u8 rfpath; 1286 u8 ofdm; 1287 u8 tx_path; 1288 u16 rate; 1289 u8 bandwidth; 1290 u8 channel; 1291 s16 table_item; /*get an element of power table*/ 1292 u8 dcm; 1293 u8 beamforming; 1294 u8 offset; 1295 s16 txpwr_ref; 1296 u8 is_cck; 1297 u8 rf_mode; 1298 u32 tssi_de_offset; 1299 s32 dbm; 1300 s32 pout; 1301 s32 online_tssi_de; 1302 bool pwr_lmt_en; 1303 u8 sharp_id; 1304 }; 1305 1306 /* mp reg command */ 1307 enum rtw_mp_reg_cmd { 1308 RTW_MP_REG_CMD_READ_MAC = 0, 1309 RTW_MP_REG_CMD_WRITE_MAC = 1, 1310 RTW_MP_REG_CMD_READ_RF = 2, 1311 RTW_MP_REG_CMD_WRITE_RF = 3, 1312 RTW_MP_REG_CMD_READ_SYN = 4, 1313 RTW_MP_REG_CMD_WRITE_SYN = 5, 1314 RTW_MP_REG_CMD_READ_BB = 6, 1315 RTW_MP_REG_CMD_WRITE_BB = 7, 1316 RTW_MP_REG_CMD_SET_XCAP = 8, 1317 RTW_MP_REG_CMD_GET_XCAP = 9, 1318 RTW_MP_REG_CMD_MAX, 1319 }; 1320 1321 struct rtw_mp_reg_arg { 1322 u8 mp_class; 1323 u8 cmd; 1324 u8 cmd_ok; 1325 u8 status; 1326 u32 io_offset; 1327 u32 io_value; 1328 u8 io_type; 1329 u8 ofdm; 1330 u8 rfpath; 1331 u8 sc_xo; 1332 u8 xsi_offset; 1333 u8 xsi_value; 1334 }; 1335 1336 struct rtw_mp_cal_arg { 1337 u8 mp_class; 1338 u8 cmd; 1339 u8 cmd_ok; 1340 u8 status; 1341 u8 cal_type; 1342 u8 enable; 1343 u8 rfpath; 1344 u16 io_value; 1345 u8 channel; 1346 u8 bandwidth; 1347 s32 xdbm; 1348 u8 path; 1349 u8 iq_path; 1350 u32 avg; 1351 u32 fft; 1352 s32 point; 1353 u32 upoint; 1354 u32 start_point; 1355 u32 stop_point; 1356 u32 buf; 1357 u32 outbuf[450]; 1358 }; 1359 1360 enum rtw_mp_cal_cmd { 1361 RTW_MP_CAL_CMD_TRIGGER_CAL = 0, 1362 RTW_MP_CAL_CMD_SET_CAPABILITY_CAL = 1, 1363 RTW_MP_CAL_CMD_GET_CAPABILITY_CAL = 2, 1364 RTW_MP_CAL_CMD_GET_TSSI_DE_VALUE = 3, 1365 RTW_MP_CAL_CMD_SET_TSSI_DE_TX_VERIFY = 4, 1366 RTW_MP_CAL_CMD_GET_TXPWR_FINAL_ABS = 5, 1367 RTW_MP_CAL_CMD_TRIGGER_DPK_TRACKING = 6, 1368 RTW_MP_CAL_CMD_SET_TSSI_AVG = 7, 1369 RTW_MP_CAL_CMD_PSD_INIT = 8, 1370 RTW_MP_CAL_CMD_PSD_RESTORE = 9, 1371 RTW_MP_CAL_CMD_PSD_GET_POINT_DATA = 10, 1372 RTW_MP_CAL_CMD_PSD_QUERY = 11, 1373 RTW_MP_CAL_CMD_MAX, 1374 }; 1375 1376 enum rtw_mp_calibration_type { 1377 RTW_MP_CAL_CHL_RFK = 0, 1378 RTW_MP_CAL_DACK = 1, 1379 RTW_MP_CAL_IQK = 2, 1380 RTW_MP_CAL_LCK = 3, 1381 RTW_MP_CAL_DPK = 4, 1382 RTW_MP_CAL_DPK_TRACK = 5, 1383 RTW_MP_CAL_TSSI = 6, 1384 RTW_MP_CAL_GAPK = 7, 1385 RTW_MP_CAL_MAX, 1386 }; 1387 1388 enum RTW_TEST_SUB_MODULE { 1389 RTW_TEST_SUB_MODULE_MP = 0, 1390 RTW_TEST_SUB_MODULE_FPGA = 1, 1391 RTW_TEST_SUB_MODULE_VERIFY = 2, 1392 RTW_TEST_SUB_MODULE_TOOL = 3, 1393 RTW_TEST_SUB_MODULE_TRX = 4, 1394 RTW_TEST_SUB_MODULE_UNKNOWN, 1395 }; 1396 1397 struct rtw_test_module_info { 1398 u8 tm_type; 1399 u8 tm_mode; 1400 }; 1401 1402 #define RTW_MAX_TEST_CMD_BUF 2000 1403 struct rtw_mp_test_cmdbuf { 1404 u8 type; 1405 u8 buf[RTW_MAX_TEST_CMD_BUF]; 1406 u16 len; 1407 }; 1408 1409 enum rtw_mp_nss 1410 { 1411 MP_NSS1, 1412 MP_NSS2, 1413 MP_NSS3, 1414 MP_NSS4 1415 }; 1416 1417 #define RU_TONE_STR(idx)\ 1418 (idx == MP_RU_TONE_26) ? "26-Tone" :\ 1419 (idx == MP_RU_TONE_52) ? "52-Tone" :\ 1420 (idx == MP_RU_TONE_106) ? "106-Tone" :\ 1421 (idx == MP_RU_TONE_242) ? "242-Tone" :\ 1422 (idx == MP_RU_TONE_484) ? "484-Tone" :\ 1423 (idx == MP_RU_TONE_966) ? "966-Tone" :\ 1424 "UNknow" 1425 1426 enum rtw_mp_resourceUnit 1427 { 1428 MP_RU_TONE_26 = 0, 1429 MP_RU_TONE_52, 1430 MP_RU_TONE_106, 1431 MP_RU_TONE_242, 1432 MP_RU_TONE_484, 1433 MP_RU_TONE_966 1434 }; 1435 1436 #define MP_IS_HT_HRATE(_rate) ((_rate) >= HRATE_MCS0 && (_rate) <= HRATE_MCS31) 1437 #define MP_IS_VHT_HRATE(_rate) ((_rate) >= HRATE_VHT_NSS1_MCS0 && (_rate) <= HRATE_VHT_NSS4_MCS9) 1438 #define MP_IS_CCK_HRATE(_rate) ((_rate) == HRATE_CCK1 || (_rate) == HRATE_CCK2 || \ 1439 (_rate) == HRATE_CCK5_5 || (_rate) == HRATE_CCK11) 1440 1441 #define MP_IS_OFDM_HRATE(_rate) ((_rate) >= HRATE_OFDM6 && (_rate) <= HRATE_OFDM54) 1442 #define MP_IS_HE_HRATE(_rate) ((_rate) >= HRATE_HE_NSS1_MCS0 && (_rate) <= HRATE_HE_NSS4_MCS11) 1443 1444 #define MP_IS_HT1SS_HRATE(_rate) ((_rate) >= HRATE_MCS0 && (_rate) <= HRATE_MCS7) 1445 #define MP_IS_HT2SS_HRATE(_rate) ((_rate) >= HRATE_MCS8 && (_rate) <= HRATE_MCS15) 1446 #define MP_IS_HT3SS_HRATE(_rate) ((_rate) >= HRATE_MCS16 && (_rate) <= HRATE_MCS23) 1447 #define MP_IS_HT4SS_HRATE(_rate) ((_rate) >= HRATE_MCS24 && (_rate) <= HRATE_MCS31) 1448 1449 #define MP_IS_VHT1SS_HRATE(_rate) ((_rate) >= HRATE_VHT_NSS1_MCS0 && (_rate) <= HRATE_VHT_NSS1_MCS9) 1450 #define MP_IS_VHT2SS_HRATE(_rate) ((_rate) >= HRATE_VHT_NSS2_MCS0 && (_rate) <= HRATE_VHT_NSS2_MCS9) 1451 #define MP_IS_VHT3SS_HRATE(_rate) ((_rate) >= HRATE_VHT_NSS3_MCS0 && (_rate) <= HRATE_VHT_NSS3_MCS9) 1452 #define MP_IS_VHT4SS_HRATE(_rate) ((_rate) >= HRATE_VHT_NSS4_MCS0 && (_rate) <= HRATE_VHT_NSS4_MCS9) 1453 1454 #define MP_IS_HE1SS_HRATE(_rate) ((_rate) >= HRATE_HE_NSS1_MCS0 && (_rate) <= HRATE_HE_NSS1_MCS11) 1455 #define MP_IS_HE2SS_HRATE(_rate) ((_rate) >= HRATE_HE_NSS2_MCS0 && (_rate) <= HRATE_HE_NSS2_MCS11) 1456 #define MP_IS_HE3SS_HRATE(_rate) ((_rate) >= HRATE_HE_NSS3_MCS0 && (_rate) <= HRATE_HE_NSS3_MCS11) 1457 #define MP_IS_HE4SS_HRATE(_rate) ((_rate) >= HRATE_HE_NSS4_MCS0 && (_rate) <= HRATE_HE_NSS4_MCS11) 1458 1459 #define MP_IS_1T_HRATE(_rate) (MP_IS_CCK_HRATE((_rate)) || MP_IS_OFDM_HRATE((_rate)) \ 1460 || MP_IS_HT1SS_HRATE((_rate)) || MP_IS_VHT1SS_HRATE((_rate)) \ 1461 || MP_IS_HE1SS_HRATE((_rate))) 1462 1463 #define MP_IS_2T_HRATE(_rate) (MP_IS_HT2SS_HRATE((_rate)) || MP_IS_VHT2SS_HRATE((_rate)) \ 1464 || MP_IS_HE2SS_HRATE((_rate))) 1465 1466 #define MP_IS_3T_HRATE(_rate) (MP_IS_HT3SS_HRATE((_rate)) || MP_IS_VHT3SS_HRATE((_rate)) \ 1467 || MP_IS_HE3SS_HRATE((_rate))) 1468 1469 #define MP_IS_4T_HRATE(_rate) (MP_IS_HT4SS_HRATE((_rate)) || MP_IS_VHT4SS_HRATE((_rate)) \ 1470 || MP_IS_HE4SS_HRATE((_rate))) 1471 1472 1473 1474 void rtw_mp_get_phl_cmd(_adapter *padapter, void* buf, u32 buflen); 1475 void rtw_mp_set_phl_cmd(_adapter *padapter, void* buf, u32 buflen); 1476 1477 bool rtw_mp_phl_config_arg(_adapter *padapter, enum rtw_mp_config_cmdid cmdid); 1478 void rtw_mp_phl_rx_physts(_adapter *padapter, struct rtw_mp_rx_arg *rx_arg, bool bstart); 1479 void rtw_mp_phl_rx_rssi(_adapter *padapter, struct rtw_mp_rx_arg *rx_arg); 1480 void rtw_mp_phl_rx_gain_offset(_adapter *padapter, struct rtw_mp_rx_arg *rx_arg, u8 path_num); 1481 void rtw_mp_phl_query_rx(_adapter *padapter, struct rtw_mp_rx_arg *rx_arg ,u8 rx_qurey_type); 1482 u8 rtw_mp_phl_txpower(_adapter *padapter, struct rtw_mp_txpwr_arg *ptxpwr_arg, u8 cmdid); 1483 void rtw_mp_set_crystal_cap(_adapter *padapter, u32 xcapvalue); 1484 u8 rtw_mp_phl_calibration(_adapter *padapter, struct rtw_mp_cal_arg *pcal_arg, u8 cmdid); 1485 u8 rtw_mp_phl_reg(_adapter *padapter, struct rtw_mp_reg_arg *reg_arg, u8 cmdid); 1486 1487 1488 u8 rtw_update_giltf(_adapter *padapter); 1489 void rtw_mp_update_coding(_adapter *padapter); 1490 u8 rtw_mp_update_ru_tone(_adapter *padapter); 1491 u8 rtw_mp_update_ru_alloc(_adapter *padapter); 1492 1493 bool rtw_mp_is_cck_rate(u16 rate); 1494 1495 extern s32 init_mp_priv(_adapter *padapter); 1496 extern void free_mp_priv(struct mp_priv *pmp_priv); 1497 extern s32 MPT_InitializeAdapter(_adapter *padapter, u8 Channel); 1498 extern void MPT_DeInitAdapter(_adapter *padapter); 1499 extern s32 mp_start_test(_adapter *padapter); 1500 extern void mp_stop_test(_adapter *padapter); 1501 1502 1503 extern void write_bbreg(_adapter *padapter, u32 addr, u32 bitmask, u32 val); 1504 extern u32 read_rfreg(_adapter *padapter, u8 rfpath, u32 addr); 1505 extern void write_rfreg(_adapter *padapter, u8 rfpath, u32 addr, u32 val); 1506 #ifdef CONFIG_ANTENNA_DIVERSITY 1507 u8 rtw_mp_set_antdiv(_adapter *padapter, BOOLEAN bMain); 1508 #endif 1509 void SetChannel(_adapter *adapter); 1510 void SetBandwidth(_adapter *adapter); 1511 int rtw_mp_txpoweridx(_adapter *adapter); 1512 u16 rtw_mp_txpower_dbm(_adapter *adapter, u8 rf_path); 1513 u16 rtw_mp_get_pwrtab_dbm(_adapter *adapter, u8 rfpath); 1514 1515 void SetAntenna(_adapter *adapter); 1516 void SetDataRate(_adapter *adapter); 1517 s32 SetThermalMeter(_adapter *adapter, u8 target_ther); 1518 void GetThermalMeter(_adapter *adapter, u8 rfpath ,u8 *value); 1519 void rtw_mp_continuous_tx(_adapter *adapter, u8 bstart); 1520 void rtw_mp_singlecarrier_tx(_adapter *adapter, u8 bstart); 1521 void rtw_mp_singletone_tx(_adapter *adapter, u8 bstart); 1522 void rtw_mp_carriersuppr_tx(_adapter *adapter, u8 bstart); 1523 void rtw_mp_txpwr_level(_adapter *adapter); 1524 void fill_txdesc_for_mp(_adapter *padapter, u8 *ptxdesc); 1525 void rtw_set_phl_packet_tx(_adapter *padapter, u8 bStart); 1526 u8 rtw_phl_mp_tx_cmd(_adapter *padapter, enum rtw_mp_tx_cmd cmdid, 1527 enum rtw_mp_tx_method tx_method, boolean bstart); 1528 1529 void rtw_mp_set_packet_tx(_adapter *padapter); 1530 void rtw_mp_reset_phy_count(_adapter *adapter); 1531 1532 s32 SetPowerTracking(_adapter *padapter, u8 enable); 1533 void GetPowerTracking(_adapter *padapter, u8 *enable); 1534 u32 mp_query_psd(_adapter *adapter, u8 *data); 1535 void rtw_mp_trigger_iqk(_adapter *padapter); 1536 void rtw_mp_trigger_lck(_adapter *padapter); 1537 void rtw_mp_trigger_dpk(_adapter *padapter); 1538 u8 rtw_mp_mode_check(_adapter *padapter); 1539 bool rtw_is_mp_tssitrk_on(_adapter *adapter); 1540 1541 void mpt_ProSetPMacTx(_adapter *adapter); 1542 void MP_PHY_SetRFPathSwitch(_adapter *adapter , BOOLEAN bMain); 1543 void mp_phy_switch_rf_path_set(_adapter *adapter , u8 *pstate); 1544 u8 MP_PHY_QueryRFPathSwitch(_adapter *adapter); 1545 u32 mpt_ProQueryCalTxPower(_adapter *adapter, u8 RfPath); 1546 u8 mpt_to_mgnt_rate(u32 MptRateIdx); 1547 u16 rtw_mp_rate_parse(_adapter *adapter, u8 *target_str); 1548 u32 mp_join(_adapter *padapter, u8 mode); 1549 u32 hal_mpt_query_phytxok(_adapter *adapter); 1550 u32 mpt_get_tx_power_finalabs_val(_adapter *padapter, u8 rf_path); 1551 void mpt_trigger_tssi_tracking(_adapter *adapter, u8 rf_path); 1552 u8 rtw_mpt_set_power_limit_en(_adapter *padapter, bool en_val); 1553 bool rtw_mpt_get_power_limit_en(_adapter *padapter); 1554 1555 u32 rtw_mp_get_tssi_de(_adapter *padapter, u8 rf_path); 1556 s32 rtw_mp_get_online_tssi_de(_adapter *padapter, s32 out_pwr, s32 tgdbm, u8 rf_path); 1557 u8 rtw_mp_set_tsside2verify(_adapter *padapter, u32 tssi_de, u8 rf_path); 1558 u8 rtw_mp_set_tssi_offset(_adapter *padapter, u32 tssi_offset, u8 rf_path); 1559 u8 rtw_mp_set_tssi_pwrtrk(_adapter *padapter, u8 tssi_state); 1560 u8 rtw_mp_get_tssi_pwrtrk(_adapter *padapter); 1561 1562 void rtw_mp_cal_trigger(_adapter *padapter, u8 cal_tye); 1563 void rtw_mp_cal_capab(_adapter *padapter, u8 cal_tye, u8 benable); 1564 1565 void 1566 PMAC_Get_Pkt_Param( 1567 PRT_PMAC_TX_INFO pPMacTxInfo, 1568 PRT_PMAC_PKT_INFO pPMacPktInfo 1569 ); 1570 void 1571 CCK_generator( 1572 PRT_PMAC_TX_INFO pPMacTxInfo, 1573 PRT_PMAC_PKT_INFO pPMacPktInfo 1574 ); 1575 void 1576 PMAC_Nsym_generator( 1577 PRT_PMAC_TX_INFO pPMacTxInfo, 1578 PRT_PMAC_PKT_INFO pPMacPktInfo 1579 ); 1580 void 1581 L_SIG_generator( 1582 u32 N_SYM, /* Max: 750*/ 1583 PRT_PMAC_TX_INFO pPMacTxInfo, 1584 PRT_PMAC_PKT_INFO pPMacPktInfo 1585 ); 1586 1587 void HT_SIG_generator( 1588 PRT_PMAC_TX_INFO pPMacTxInfo, 1589 PRT_PMAC_PKT_INFO pPMacPktInfo); 1590 1591 void VHT_SIG_A_generator( 1592 PRT_PMAC_TX_INFO pPMacTxInfo, 1593 PRT_PMAC_PKT_INFO pPMacPktInfo); 1594 1595 void VHT_SIG_B_generator( 1596 PRT_PMAC_TX_INFO pPMacTxInfo); 1597 1598 void VHT_Delimiter_generator( 1599 PRT_PMAC_TX_INFO pPMacTxInfo); 1600 1601 1602 int rtw_mp_write_reg(struct net_device *dev, 1603 struct iw_request_info *info, 1604 struct iw_point *wrqu, char *extra); 1605 int rtw_mp_read_reg(struct net_device *dev, 1606 struct iw_request_info *info, 1607 struct iw_point *wrqu, char *extra); 1608 int rtw_mp_write_rf(struct net_device *dev, 1609 struct iw_request_info *info, 1610 struct iw_point *wrqu, char *extra); 1611 int rtw_mp_read_rf(struct net_device *dev, 1612 struct iw_request_info *info, 1613 struct iw_point *wrqu, char *extra); 1614 int rtw_mp_start(struct net_device *dev, 1615 struct iw_request_info *info, 1616 struct iw_point *wrqu, char *extra); 1617 int rtw_mp_stop(struct net_device *dev, 1618 struct iw_request_info *info, 1619 struct iw_point *wrqu, char *extra); 1620 int rtw_mp_rate(struct net_device *dev, 1621 struct iw_request_info *info, 1622 struct iw_point *wrqu, char *extra); 1623 int rtw_mp_channel(struct net_device *dev, 1624 struct iw_request_info *info, 1625 struct iw_point *wrqu, char *extra); 1626 int rtw_mp_trxsc_offset(struct net_device *dev, 1627 struct iw_request_info *info, 1628 struct iw_point *wrqu, char *extra); 1629 int rtw_mp_bandwidth(struct net_device *dev, 1630 struct iw_request_info *info, 1631 struct iw_point *wrqu, char *extra); 1632 int rtw_mp_txpower_index(struct net_device *dev, 1633 struct iw_request_info *info, 1634 struct iw_point *wrqu, char *extra); 1635 int rtw_mp_txpower(struct net_device *dev, 1636 struct iw_request_info *info, 1637 struct iw_point *wrqu, char *extra); 1638 int rtw_mp_ant_tx(struct net_device *dev, 1639 struct iw_request_info *info, 1640 struct iw_point *wrqu, char *extra); 1641 int rtw_mp_ant_rx(struct net_device *dev, 1642 struct iw_request_info *info, 1643 struct iw_point *wrqu, char *extra); 1644 int rtw_set_ctx_destAddr(struct net_device *dev, 1645 struct iw_request_info *info, 1646 struct iw_point *wrqu, char *extra); 1647 int rtw_mp_ctx(struct net_device *dev, 1648 struct iw_request_info *info, 1649 struct iw_point *wrqu, char *extra); 1650 int rtw_mp_disable_bt_coexist(struct net_device *dev, 1651 struct iw_request_info *info, 1652 union iwreq_data *wrqu, char *extra); 1653 int rtw_mp_disable_bt_coexist(struct net_device *dev, 1654 struct iw_request_info *info, 1655 union iwreq_data *wrqu, char *extra); 1656 int rtw_mp_arx(struct net_device *dev, 1657 struct iw_request_info *info, 1658 struct iw_point *wrqu, char *extra); 1659 int rtw_mp_trx_query(struct net_device *dev, 1660 struct iw_request_info *info, 1661 struct iw_point *wrqu, char *extra); 1662 int rtw_mp_pwrtrk(struct net_device *dev, 1663 struct iw_request_info *info, 1664 struct iw_point *wrqu, char *extra); 1665 int rtw_mp_psd(struct net_device *dev, 1666 struct iw_request_info *info, 1667 struct iw_point *wrqu, char *extra); 1668 int rtw_mp_thermal(struct net_device *dev, 1669 struct iw_request_info *info, 1670 struct iw_point *wrqu, char *extra); 1671 int rtw_mp_reset_stats(struct net_device *dev, 1672 struct iw_request_info *info, 1673 struct iw_point *wrqu, char *extra); 1674 int rtw_mp_dump(struct net_device *dev, 1675 struct iw_request_info *info, 1676 struct iw_point *wrqu, char *extra); 1677 int rtw_mp_phypara(struct net_device *dev, 1678 struct iw_request_info *info, 1679 struct iw_point *wrqu, char *extra); 1680 int rtw_mp_SetRFPath(struct net_device *dev, 1681 struct iw_request_info *info, 1682 struct iw_point *wrqu, char *extra); 1683 int rtw_mp_switch_rf_path(struct net_device *dev, 1684 struct iw_request_info *info, 1685 struct iw_point *wrqu, char *extra); 1686 int rtw_mp_link(struct net_device *dev, 1687 struct iw_request_info *info, 1688 struct iw_point *wrqu, char *extra); 1689 int rtw_mp_QueryDrv(struct net_device *dev, 1690 struct iw_request_info *info, 1691 union iwreq_data *wrqu, char *extra); 1692 int rtw_mp_PwrCtlDM(struct net_device *dev, 1693 struct iw_request_info *info, 1694 struct iw_point *wrqu, char *extra); 1695 int rtw_mp_getver(struct net_device *dev, 1696 struct iw_request_info *info, 1697 union iwreq_data *wrqu, char *extra); 1698 int rtw_mp_mon(struct net_device *dev, 1699 struct iw_request_info *info, 1700 union iwreq_data *wrqu, char *extra); 1701 int rtw_mp_pwrlmt(struct net_device *dev, 1702 struct iw_request_info *info, 1703 union iwreq_data *wrqu, char *extra); 1704 int rtw_mp_dpk_track(struct net_device *dev, 1705 struct iw_request_info *info, 1706 union iwreq_data *wrqu, char *extra); 1707 int rtw_mp_dpk(struct net_device *dev, 1708 struct iw_request_info *info, 1709 union iwreq_data *wrqu, char *extra); 1710 #if 0 1711 int rtw_efuse_mask_file(struct net_device *dev, 1712 struct iw_request_info *info, 1713 union iwreq_data *wrqu, char *extra); 1714 int rtw_bt_efuse_mask_file(struct net_device *dev, 1715 struct iw_request_info *info, 1716 union iwreq_data *wrqu, char *extra); 1717 1718 int rtw_efuse_file_map(struct net_device *dev, 1719 struct iw_request_info *info, 1720 union iwreq_data *wrqu, char *extra); 1721 int rtw_efuse_file_map_store(struct net_device *dev, 1722 struct iw_request_info *info, 1723 union iwreq_data *wrqu, char *extra); 1724 int rtw_bt_efuse_file_map(struct net_device *dev, 1725 struct iw_request_info *info, 1726 union iwreq_data *wrqu, char *extra); 1727 #endif 1728 1729 int rtw_mp_SetBT(struct net_device *dev, 1730 struct iw_request_info *info, 1731 union iwreq_data *wrqu, char *extra); 1732 int rtw_mp_pretx_proc(_adapter *padapter, u8 bStartTest, char *extra); 1733 int rtw_mp_tx(struct net_device *dev, 1734 struct iw_request_info *info, 1735 union iwreq_data *wrqu, char *extra); 1736 int rtw_mp_rx(struct net_device *dev, 1737 struct iw_request_info *info, 1738 union iwreq_data *wrqu, char *extra); 1739 int rtw_mp_hwtx(struct net_device *dev, 1740 struct iw_request_info *info, 1741 union iwreq_data *wrqu, char *extra); 1742 u8 rtw_mp_hwrate2mptrate(u8 rate); 1743 int rtw_mp_iqk(struct net_device *dev, 1744 struct iw_request_info *info, 1745 struct iw_point *wrqu, char *extra); 1746 int rtw_mp_lck(struct net_device *dev, 1747 struct iw_request_info *info, 1748 struct iw_point *wrqu, char *extra); 1749 int rtw_mp_get_tsside(struct net_device *dev, 1750 struct iw_request_info *info, 1751 struct iw_point *wrqu, char *extra); 1752 int rtw_mp_set_tsside(struct net_device *dev, 1753 struct iw_request_info *info, 1754 struct iw_point *wrqu, char *extra); 1755 1756 int rtw_priv_mp_set(struct net_device *dev, 1757 struct iw_request_info *info, 1758 union iwreq_data *wdata, char *extra); 1759 1760 int rtw_priv_mp_get(struct net_device *dev, 1761 struct iw_request_info *info, 1762 union iwreq_data *wdata, char *extra); 1763 1764 int rtw_mp_set_phl_io(struct net_device *dev, 1765 struct iw_request_info *info, 1766 struct iw_point *wrqu, char *extra); 1767 1768 int rtw_mp_get_phl_io(struct net_device *dev, 1769 struct iw_request_info *info, 1770 struct iw_point *wrqu, char *extra); 1771 1772 int rtw_mp_tx_pattern_idx(struct net_device *dev, 1773 struct iw_request_info *info, 1774 union iwreq_data *wrqu, char *extra); 1775 1776 int rtw_mp_tx_plcp_tx_data(struct net_device *dev, 1777 struct iw_request_info *info, 1778 union iwreq_data *wrqu, char *extra); 1779 1780 int rtw_mp_tx_plcp_tx_user(struct net_device *dev, 1781 struct iw_request_info *info, 1782 union iwreq_data *wrqu, char *extra); 1783 1784 int rtw_mp_tx_method(struct net_device *dev, 1785 struct iw_request_info *info, 1786 union iwreq_data *wrqu, char *extra); 1787 1788 int rtw_mp_config_phy(struct net_device *dev, 1789 struct iw_request_info *info, 1790 union iwreq_data *wrqu, char *extra); 1791 1792 int rtw_mp_phl_rfk(struct net_device *dev, 1793 struct iw_request_info *info, 1794 union iwreq_data *wrqu, char *extra); 1795 int rtw_mp_phl_btc_path(struct net_device *dev, 1796 struct iw_request_info *info, 1797 union iwreq_data *wrqu, char *extra); 1798 int rtw_mp_get_he(struct net_device *dev, 1799 struct iw_request_info *info, 1800 union iwreq_data *wrqu, char *extra); 1801 1802 #endif /* _RTW_MP_H_ */ 1803