1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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.
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
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
23 #define RTWPRIV_VER_INFO 1
25 #define MAX_MP_XMITBUF_SZ 2048
26 #define NR_MP_XMITFRAME 8
28 struct mp_xmit_frame {
31 struct pkt_attrib attrib;
41 /* insert urb, irp, and irpcnt info below... */
42 /* max frag_cnt = 8 */
47 #if defined(PLATFORM_OS_XP) || defined(PLATFORM_LINUX)
60 #endif /* CONFIG_USB_HCI */
62 uint mem[(MAX_MP_XMITBUF_SZ >> 2)];
72 typedef void(*wi_act_func)(void *padapter);
74 #ifdef PLATFORM_WINDOWS
83 wi_act_func curractfunc;
84 /* Variable needed in each implementation of CurrActFunc. */
85 struct mp_wiparam param;
93 struct pkt_attrib attrib;
94 /* struct tx_desc desc; */
99 u32 buf_size, write_size;
100 _thread_hdl_ PktTxThread;
103 #define MP_MAX_LINES 1000
104 #define MP_MAX_LINES_BYTES 256
139 typedef struct _RT_PMAC_PKT_INFO {
145 } RT_PMAC_PKT_INFO, *PRT_PMAC_PKT_INFO;
147 typedef struct _RT_PMAC_TX_INFO {
148 u8 bEnPMacTx:1; /* 0: Disable PMac 1: Enable PMac */
149 u8 Mode:3; /* 0: Packet TX 3:Continuous TX */
151 u8 TX_RATE; /* MPT_RATE_E */
159 u8 BandWidth:3; /* 0: 20 1:40 2:80Mhz */
160 u8 m_STBC; /* bSTBC + 1 */
177 } RT_PMAC_TX_INFO, *PRT_PMAC_TX_INFO;
180 typedef VOID (*MPT_WORK_ITEM_HANDLER)(IN PVOID Adapter);
181 typedef struct _MPT_CONTEXT {
182 /* Indicate if we have started Mass Production Test. */
183 BOOLEAN bMassProdTest;
185 /* Indicate if the driver is unloading or unloaded. */
186 BOOLEAN bMptDrvUnload;
189 _timer MPh2c_timeout_timer;
190 /* Event used to sync H2c for BT control */
192 BOOLEAN MptH2cRspEvent;
193 BOOLEAN MptBtC2hEvent;
194 BOOLEAN bMPh2c_timeout;
196 /* 8190 PCI does not support NDIS_WORK_ITEM. */
197 /* Work Item for Mass Production Test. */
198 /* NDIS_WORK_ITEM MptWorkItem;
199 * RT_WORK_ITEM MptWorkItem; */
200 /* Event used to sync the case unloading driver and MptWorkItem is still in progress.
201 * NDIS_EVENT MptWorkItemEvent; */
202 /* To protect the following variables.
203 * NDIS_SPIN_LOCK MptWorkItemSpinLock; */
204 /* Indicate a MptWorkItem is scheduled and not yet finished. */
205 BOOLEAN bMptWorkItemInProgress;
206 /* An instance which implements function and context of MptWorkItem. */
207 MPT_WORK_ITEM_HANDLER CurrMptAct;
209 /* 1=Start, 0=Stop from UI. */
211 /* _TEST_MODE, defined in MPT_Req2.h */
213 /* Variable needed in each implementation of CurrMptAct. */
214 ULONG MptActType; /* Type of action performed in CurrMptAct. */
215 /* The Offset of IO operation is depend of MptActType. */
217 /* The Value of IO operation is depend of MptActType. */
219 /* The RfPath of IO operation is depend of MptActType. */
224 WIRELESS_MODE MptWirelessModeToSw; /* Wireless mode to switch. */
225 u8 MptChannelToSw; /* Channel to switch. */
226 u8 MptInitGainToSet; /* Initial gain to set. */
227 /* ULONG bMptAntennaA; */ /* TRUE if we want to use antenna A. */
228 ULONG MptBandWidth; /* bandwidth to switch. */
230 ULONG mpt_rate_index;/* rate index. */
232 /* Register value kept for Single Carrier Tx test. */
234 /* Register value kept for Single Carrier Tx test. */
236 /* For MP Tx Power index */
237 u8 TxPwrLevel[4]; /* rf-A, rf-B*/
239 /* Content of RCR Regsiter for Mass Production Test. */
241 /* TRUE if we only receive packets with specific pattern. */
242 BOOLEAN bMptFilterPattern;
243 /* Rx OK count, statistics used in Mass Production Test. */
245 /* Rx CRC32 error count, statistics used in Mass Production Test. */
246 ULONG MptRxCrcErrCnt;
248 BOOLEAN bCckContTx; /* TRUE if we are in CCK Continuous Tx test. */
249 BOOLEAN bOfdmContTx; /* TRUE if we are in OFDM Continuous Tx test. */
250 /* TRUE if we have start Continuous Tx test. */
251 BOOLEAN is_start_cont_tx;
253 /* TRUE if we are in Single Carrier Tx test. */
254 BOOLEAN bSingleCarrier;
255 /* TRUE if we are in Carrier Suppression Tx Test. */
257 BOOLEAN is_carrier_suppression;
259 /* TRUE if we are in Single Tone Tx test. */
261 BOOLEAN is_single_tone;
264 /* ACK counter asked by K.Y.. */
265 BOOLEAN bMptEnableAckCounter;
268 /* SD3 Willis For 8192S to save 1T/2T RF table for ACUT Only fro ACUT delete later ~~~! */
269 /* s1Byte BufOfLines[2][MAX_LINES_HWCONFIG_TXT][MAX_BYTES_LINE_HWCONFIG_TXT]; */
270 /* s1Byte BufOfLines[2][MP_MAX_LINES][MP_MAX_LINES_BYTES]; */
271 /* s4Byte RfReadLine[2]; */
273 u8 APK_bound[2]; /* for APK path A/path B */
274 BOOLEAN bMptIndexEven;
282 u4Byte backup0x58_RF_A;
283 u4Byte backup0x58_RF_B;
290 u1Byte mptOutBuf[100];
291 RT_PMAC_TX_INFO PMacTxInfo;
292 RT_PMAC_PKT_INFO PMacPktInfo;
297 } MPT_CONTEXT, *PMPT_CONTEXT;
301 /* #define RTPRIV_IOCTL_MP ( SIOCIWFIRSTPRIV + 0x17) */
330 MP_DISABLE_BT_COEXIST,
345 #ifdef CONFIG_APPEND_VENDOR_IE_ENABLE
353 #ifdef CONFIG_AP_WOWLAN
364 u32 mode;/* 0 for normal type packet, 1 for loopback packet (16bytes TXCMD) */
368 /* OID cmd handler */
369 struct mp_wiparam workparam;
370 /* u8 act_in_progress; */
380 u32 rx_bssidpktcount;
382 u32 rx_pktcount_filter_out;
383 u32 rx_crcerrpktcount;
385 BOOLEAN rx_bindicatePkt;
386 struct recv_stat rxstat;
391 u8 prime_channel_offset;
397 /* u32 curr_crystalcap; */
401 /* u8 curr_rfpath; */
406 /* uint ForcedDataRate; */
408 u8 mac_filter[ETH_ALEN];
411 struct wlan_network mp_network;
412 NDIS_802_11_MAC_ADDRESS network_macaddr;
414 #ifdef PLATFORM_WINDOWS
421 struct mp_wi_cntx wi_cntx;
426 u8 h2c_resp_parambuf[512];
430 NDIS_EVENT h2c_cmd_evt;
435 NDIS_EVENT scsir_full_evt;
436 NDIS_EVENT scsiw_empty_evt;
439 u8 *pallocated_mp_xmitframe_buf;
440 u8 *pmp_xmtframe_buf;
441 _queue free_mp_xmitqueue;
442 u32 free_mp_xmitframe_cnt;
444 BOOLEAN bTxBufCkFail;
447 BOOLEAN bloadefusemap;
455 typedef struct _IOCMD_STRUCT_ {
461 struct rf_reg_param {
467 struct bb_reg_param {
472 typedef struct _MP_FIRMWARE {
473 FIRMWARE_SOURCE eFWSource;
474 #ifdef CONFIG_EMBEDDED_FWIMG
477 u8 szFwBuffer[0x8000];
480 } RT_MP_FIRMWARE, *PRT_MP_FIRMWARE;
485 /* *********************************************************************** */
490 /* Hardware Registers */
493 #define IOCMD_CTRL_REG 0x102502C0
494 #define IOCMD_DATA_REG 0x102502C4
496 #define IOCMD_CTRL_REG 0x10250370
497 #define IOCMD_DATA_REG 0x10250374
500 #define IOCMD_GET_THERMAL_METER 0xFD000028
502 #define IOCMD_CLASS_BB_RF 0xF0
503 #define IOCMD_BB_READ_IDX 0x00
504 #define IOCMD_BB_WRITE_IDX 0x01
505 #define IOCMD_RF_READ_IDX 0x02
506 #define IOCMD_RF_WRIT_IDX 0x03
508 #define BB_REG_BASE_ADDR 0x800
512 #define _2MAC_MODE_ 0
513 #define _LOOPBOOK_MODE_ 1
515 typedef enum _MP_MODE_ {
520 MP_SINGLE_CARRIER_TX,
521 MP_CARRIER_SUPPRISSION_TX,
527 typedef enum _TEST_MODE {
532 OFDM_Single_Tone_TX ,
533 CCK_Carrier_Suppression_TX
537 typedef enum _MPT_BANDWIDTH {
539 MPT_BW_40MHZ_DUPLICATE = 1,
540 MPT_BW_40MHZ_ABOVE = 2,
541 MPT_BW_40MHZ_BELOW = 3,
544 MPT_BW_80MHZ_20_ABOVE = 6,
545 MPT_BW_80MHZ_20_BELOW = 7,
546 MPT_BW_80MHZ_20_BOTTOM = 8,
547 MPT_BW_80MHZ_20_TOP = 9,
548 MPT_BW_80MHZ_40_ABOVE = 10,
549 MPT_BW_80MHZ_40_BELOW = 11,
550 } MPT_BANDWIDTHE, *PMPT_BANDWIDTH;
552 #define MAX_RF_PATH_NUMS RF_PATH_MAX
555 extern u8 mpdatarate[NumRates];
557 /* MP set force data rate base on the definition. */
558 typedef enum _MPT_RATE_INDEX {
560 MPT_RATE_1M = 1 , /* 0 */
563 MPT_RATE_11M, /* 3 */
573 MPT_RATE_54M, /* 11 */
576 MPT_RATE_MCS0, /* 12 */
583 MPT_RATE_MCS7, /* 19 */
591 MPT_RATE_MCS15, /* 27 */
593 MPT_RATE_MCS17, /* #29 */
598 MPT_RATE_MCS22, /* #34 */
603 MPT_RATE_MCS27, /* #39 */
604 MPT_RATE_MCS28, /* #40 */
605 MPT_RATE_MCS29, /* #41 */
606 MPT_RATE_MCS30, /* #42 */
607 MPT_RATE_MCS31, /* #43 */
608 /* VHT rate. Total: 20*/
609 MPT_RATE_VHT1SS_MCS0 = 100,/* #44*/
610 MPT_RATE_VHT1SS_MCS1, /* # */
611 MPT_RATE_VHT1SS_MCS2,
612 MPT_RATE_VHT1SS_MCS3,
613 MPT_RATE_VHT1SS_MCS4,
614 MPT_RATE_VHT1SS_MCS5,
615 MPT_RATE_VHT1SS_MCS6, /* # */
616 MPT_RATE_VHT1SS_MCS7,
617 MPT_RATE_VHT1SS_MCS8,
618 MPT_RATE_VHT1SS_MCS9, /* #53 */
619 MPT_RATE_VHT2SS_MCS0, /* #54 */
620 MPT_RATE_VHT2SS_MCS1,
621 MPT_RATE_VHT2SS_MCS2,
622 MPT_RATE_VHT2SS_MCS3,
623 MPT_RATE_VHT2SS_MCS4,
624 MPT_RATE_VHT2SS_MCS5,
625 MPT_RATE_VHT2SS_MCS6,
626 MPT_RATE_VHT2SS_MCS7,
627 MPT_RATE_VHT2SS_MCS8,
628 MPT_RATE_VHT2SS_MCS9, /* #63 */
629 MPT_RATE_VHT3SS_MCS0,
630 MPT_RATE_VHT3SS_MCS1,
631 MPT_RATE_VHT3SS_MCS2,
632 MPT_RATE_VHT3SS_MCS3,
633 MPT_RATE_VHT3SS_MCS4,
634 MPT_RATE_VHT3SS_MCS5,
635 MPT_RATE_VHT3SS_MCS6, /* #126 */
636 MPT_RATE_VHT3SS_MCS7,
637 MPT_RATE_VHT3SS_MCS8,
638 MPT_RATE_VHT3SS_MCS9,
639 MPT_RATE_VHT4SS_MCS0,
640 MPT_RATE_VHT4SS_MCS1, /* #131 */
641 MPT_RATE_VHT4SS_MCS2,
642 MPT_RATE_VHT4SS_MCS3,
643 MPT_RATE_VHT4SS_MCS4,
644 MPT_RATE_VHT4SS_MCS5,
645 MPT_RATE_VHT4SS_MCS6, /* #136 */
646 MPT_RATE_VHT4SS_MCS7,
647 MPT_RATE_VHT4SS_MCS8,
648 MPT_RATE_VHT4SS_MCS9,
650 } MPT_RATE_E, *PMPT_RATE_E;
652 #define MAX_TX_PWR_INDEX_N_MODE 64 /* 0x3F */
654 #define MPT_IS_CCK_RATE(_value) (MPT_RATE_1M <= _value && _value <= MPT_RATE_11M)
655 #define MPT_IS_OFDM_RATE(_value) (MPT_RATE_6M <= _value && _value <= MPT_RATE_54M)
656 #define MPT_IS_HT_RATE(_value) (MPT_RATE_MCS0 <= _value && _value <= MPT_RATE_MCS31)
657 #define MPT_IS_HT_1S_RATE(_value) (MPT_RATE_MCS0 <= _value && _value <= MPT_RATE_MCS7)
658 #define MPT_IS_HT_2S_RATE(_value) (MPT_RATE_MCS8 <= _value && _value <= MPT_RATE_MCS15)
659 #define MPT_IS_HT_3S_RATE(_value) (MPT_RATE_MCS16 <= _value && _value <= MPT_RATE_MCS23)
660 #define MPT_IS_HT_4S_RATE(_value) (MPT_RATE_MCS24 <= _value && _value <= MPT_RATE_MCS31)
662 #define MPT_IS_VHT_RATE(_value) (MPT_RATE_VHT1SS_MCS0 <= _value && _value <= MPT_RATE_VHT4SS_MCS9)
663 #define MPT_IS_VHT_1S_RATE(_value) (MPT_RATE_VHT1SS_MCS0 <= _value && _value <= MPT_RATE_VHT1SS_MCS9)
664 #define MPT_IS_VHT_2S_RATE(_value) (MPT_RATE_VHT2SS_MCS0 <= _value && _value <= MPT_RATE_VHT2SS_MCS9)
665 #define MPT_IS_VHT_3S_RATE(_value) (MPT_RATE_VHT3SS_MCS0 <= _value && _value <= MPT_RATE_VHT3SS_MCS9)
666 #define MPT_IS_VHT_4S_RATE(_value) (MPT_RATE_VHT4SS_MCS0 <= _value && _value <= MPT_RATE_VHT4SS_MCS9)
668 #define MPT_IS_2SS_RATE(_rate) ((MPT_RATE_MCS8 <= _rate && _rate <= MPT_RATE_MCS15) || \
669 (MPT_RATE_VHT2SS_MCS0 <= _rate && _rate <= MPT_RATE_VHT2SS_MCS9))
670 #define MPT_IS_3SS_RATE(_rate) ((MPT_RATE_MCS16 <= _rate && _rate <= MPT_RATE_MCS23) || \
671 (MPT_RATE_VHT3SS_MCS0 <= _rate && _rate <= MPT_RATE_VHT3SS_MCS9))
672 #define MPT_IS_4SS_RATE(_rate) ((MPT_RATE_MCS24 <= _rate && _rate <= MPT_RATE_MCS31) || \
673 (MPT_RATE_VHT4SS_MCS0 <= _rate && _rate <= MPT_RATE_VHT4SS_MCS9))
675 typedef enum _POWER_MODE_ {
680 /* The following enumeration is used to define the value of Reg0xD00[30:28] or JaguarReg0x914[18:16]. */
681 typedef enum _OFDM_TX_MODE {
683 OFDM_ContinuousTx = 1,
684 OFDM_SingleCarrier = 2,
689 #define RX_PKT_BROADCAST 1
690 #define RX_PKT_DEST_ADDR 2
691 #define RX_PKT_PHY_MATCH 3
693 typedef enum _ENCRY_CTRL_STATE_ {
694 HW_CONTROL, /* hw encryption& decryption */
695 SW_CONTROL, /* sw encryption& decryption */
696 HW_ENCRY_SW_DECRY, /* hw encryption & sw decryption */
697 SW_ENCRY_HW_DECRY /* sw encryption & hw decryption */
700 typedef enum _MPT_TXPWR_DEF {
702 MPT_OFDM, /* L and HT OFDM */
709 #define IS_MPT_HT_RATE(_rate) (_rate >= MPT_RATE_MCS0 && _rate <= MPT_RATE_MCS31)
710 #define IS_MPT_VHT_RATE(_rate) (_rate >= MPT_RATE_VHT1SS_MCS0 && _rate <= MPT_RATE_VHT4SS_MCS9)
711 #define IS_MPT_CCK_RATE(_rate) (_rate >= MPT_RATE_1M && _rate <= MPT_RATE_11M)
712 #define IS_MPT_OFDM_RATE(_rate) (_rate >= MPT_RATE_6M && _rate <= MPT_RATE_54M)
713 /*************************************************************************/
715 extern struct mp_xmit_frame *alloc_mp_xmitframe(struct mp_priv *pmp_priv);
716 extern int free_mp_xmitframe(struct xmit_priv *pxmitpriv, struct mp_xmit_frame *pmp_xmitframe);
719 extern s32 init_mp_priv(PADAPTER padapter);
720 extern void free_mp_priv(struct mp_priv *pmp_priv);
721 extern s32 MPT_InitializeAdapter(PADAPTER padapter, u8 Channel);
722 extern void MPT_DeInitAdapter(PADAPTER padapter);
723 extern s32 mp_start_test(PADAPTER padapter);
724 extern void mp_stop_test(PADAPTER padapter);
726 extern u32 _read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask);
727 extern void _write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 bitmask, u32 val);
729 extern u32 read_macreg(_adapter *padapter, u32 addr, u32 sz);
730 extern void write_macreg(_adapter *padapter, u32 addr, u32 val, u32 sz);
731 extern u32 read_bbreg(_adapter *padapter, u32 addr, u32 bitmask);
732 extern void write_bbreg(_adapter *padapter, u32 addr, u32 bitmask, u32 val);
733 extern u32 read_rfreg(PADAPTER padapter, u8 rfpath, u32 addr);
734 extern void write_rfreg(PADAPTER padapter, u8 rfpath, u32 addr, u32 val);
736 void SetChannel(PADAPTER pAdapter);
737 void SetBandwidth(PADAPTER pAdapter);
738 int SetTxPower(PADAPTER pAdapter);
739 void SetAntenna(PADAPTER pAdapter);
740 void SetDataRate(PADAPTER pAdapter);
741 void SetAntenna(PADAPTER pAdapter);
742 s32 SetThermalMeter(PADAPTER pAdapter, u8 target_ther);
743 void GetThermalMeter(PADAPTER pAdapter, u8 *value);
744 void SetContinuousTx(PADAPTER pAdapter, u8 bStart);
745 void SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart);
746 void SetSingleToneTx(PADAPTER pAdapter, u8 bStart);
747 void SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart);
748 void PhySetTxPowerLevel(PADAPTER pAdapter);
749 void fill_txdesc_for_mp(PADAPTER padapter, u8 *ptxdesc);
750 void SetPacketTx(PADAPTER padapter);
751 void SetPacketRx(PADAPTER pAdapter, u8 bStartRx, u8 bAB);
752 void ResetPhyRxPktCount(PADAPTER pAdapter);
753 u32 GetPhyRxPktReceived(PADAPTER pAdapter);
754 u32 GetPhyRxPktCRC32Error(PADAPTER pAdapter);
755 s32 SetPowerTracking(PADAPTER padapter, u8 enable);
756 void GetPowerTracking(PADAPTER padapter, u8 *enable);
757 u32 mp_query_psd(PADAPTER pAdapter, u8 *data);
758 void rtw_mp_trigger_iqk(PADAPTER padapter);
759 void rtw_mp_trigger_lck(PADAPTER padapter);
763 void hal_mpt_SwitchRfSetting(PADAPTER pAdapter);
764 s32 hal_mpt_SetPowerTracking(PADAPTER padapter, u8 enable);
765 void hal_mpt_GetPowerTracking(PADAPTER padapter, u8 *enable);
766 void hal_mpt_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14);
767 void hal_mpt_SetChannel(PADAPTER pAdapter);
768 void hal_mpt_SetBandwidth(PADAPTER pAdapter);
769 void hal_mpt_SetTxPower(PADAPTER pAdapter);
770 void hal_mpt_SetDataRate(PADAPTER pAdapter);
771 void hal_mpt_SetAntenna(PADAPTER pAdapter);
772 s32 hal_mpt_SetThermalMeter(PADAPTER pAdapter, u8 target_ther);
773 void hal_mpt_TriggerRFThermalMeter(PADAPTER pAdapter);
774 u8 hal_mpt_ReadRFThermalMeter(PADAPTER pAdapter);
775 void hal_mpt_GetThermalMeter(PADAPTER pAdapter, u8 *value);
776 void hal_mpt_SetContinuousTx(PADAPTER pAdapter, u8 bStart);
777 void hal_mpt_SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart);
778 void hal_mpt_SetSingleToneTx(PADAPTER pAdapter, u8 bStart);
779 void hal_mpt_SetCarrierSuppressionTx(PADAPTER pAdapter, u8 bStart);
780 void mpt_ProSetPMacTx(PADAPTER Adapter);
781 void MP_PHY_SetRFPathSwitch(PADAPTER pAdapter , BOOLEAN bMain);
782 u8 MP_PHY_QueryRFPathSwitch(PADAPTER pAdapter);
783 ULONG mpt_ProQueryCalTxPower(PADAPTER pAdapter, u8 RfPath);
784 void MPT_PwrCtlDM(PADAPTER padapter, u32 bstart);
785 u8 mpt_to_mgnt_rate(u32 MptRateIdx);
786 u8 rtw_mpRateParseFunc(PADAPTER pAdapter, u8 *targetStr);
787 u32 mp_join(PADAPTER padapter, u8 mode);
788 u32 hal_mpt_query_phytxok(PADAPTER pAdapter);
792 PRT_PMAC_TX_INFO pPMacTxInfo,
793 PRT_PMAC_PKT_INFO pPMacPktInfo
797 PRT_PMAC_TX_INFO pPMacTxInfo,
798 PRT_PMAC_PKT_INFO pPMacPktInfo
802 PRT_PMAC_TX_INFO pPMacTxInfo,
803 PRT_PMAC_PKT_INFO pPMacPktInfo
807 UINT N_SYM, /* Max: 750*/
808 PRT_PMAC_TX_INFO pPMacTxInfo,
809 PRT_PMAC_PKT_INFO pPMacPktInfo
812 void HT_SIG_generator(
813 PRT_PMAC_TX_INFO pPMacTxInfo,
814 PRT_PMAC_PKT_INFO pPMacPktInfo);
816 void VHT_SIG_A_generator(
817 PRT_PMAC_TX_INFO pPMacTxInfo,
818 PRT_PMAC_PKT_INFO pPMacPktInfo);
820 void VHT_SIG_B_generator(
821 PRT_PMAC_TX_INFO pPMacTxInfo);
823 void VHT_Delimiter_generator(
824 PRT_PMAC_TX_INFO pPMacTxInfo);
827 int rtw_mp_write_reg(struct net_device *dev,
828 struct iw_request_info *info,
829 struct iw_point *wrqu, char *extra);
830 int rtw_mp_read_reg(struct net_device *dev,
831 struct iw_request_info *info,
832 struct iw_point *wrqu, char *extra);
833 int rtw_mp_write_rf(struct net_device *dev,
834 struct iw_request_info *info,
835 struct iw_point *wrqu, char *extra);
836 int rtw_mp_read_rf(struct net_device *dev,
837 struct iw_request_info *info,
838 struct iw_point *wrqu, char *extra);
839 int rtw_mp_start(struct net_device *dev,
840 struct iw_request_info *info,
841 struct iw_point *wrqu, char *extra);
842 int rtw_mp_stop(struct net_device *dev,
843 struct iw_request_info *info,
844 struct iw_point *wrqu, char *extra);
845 int rtw_mp_rate(struct net_device *dev,
846 struct iw_request_info *info,
847 struct iw_point *wrqu, char *extra);
848 int rtw_mp_channel(struct net_device *dev,
849 struct iw_request_info *info,
850 struct iw_point *wrqu, char *extra);
851 int rtw_mp_bandwidth(struct net_device *dev,
852 struct iw_request_info *info,
853 struct iw_point *wrqu, char *extra);
854 int rtw_mp_txpower_index(struct net_device *dev,
855 struct iw_request_info *info,
856 struct iw_point *wrqu, char *extra);
857 int rtw_mp_txpower(struct net_device *dev,
858 struct iw_request_info *info,
859 struct iw_point *wrqu, char *extra);
860 int rtw_mp_txpower(struct net_device *dev,
861 struct iw_request_info *info,
862 struct iw_point *wrqu, char *extra);
863 int rtw_mp_ant_tx(struct net_device *dev,
864 struct iw_request_info *info,
865 struct iw_point *wrqu, char *extra);
866 int rtw_mp_ant_rx(struct net_device *dev,
867 struct iw_request_info *info,
868 struct iw_point *wrqu, char *extra);
869 int rtw_set_ctx_destAddr(struct net_device *dev,
870 struct iw_request_info *info,
871 struct iw_point *wrqu, char *extra);
872 int rtw_mp_ctx(struct net_device *dev,
873 struct iw_request_info *info,
874 struct iw_point *wrqu, char *extra);
875 int rtw_mp_disable_bt_coexist(struct net_device *dev,
876 struct iw_request_info *info,
877 union iwreq_data *wrqu, char *extra);
878 int rtw_mp_disable_bt_coexist(struct net_device *dev,
879 struct iw_request_info *info,
880 union iwreq_data *wrqu, char *extra);
881 int rtw_mp_arx(struct net_device *dev,
882 struct iw_request_info *info,
883 struct iw_point *wrqu, char *extra);
884 int rtw_mp_trx_query(struct net_device *dev,
885 struct iw_request_info *info,
886 struct iw_point *wrqu, char *extra);
887 int rtw_mp_pwrtrk(struct net_device *dev,
888 struct iw_request_info *info,
889 struct iw_point *wrqu, char *extra);
890 int rtw_mp_psd(struct net_device *dev,
891 struct iw_request_info *info,
892 struct iw_point *wrqu, char *extra);
893 int rtw_mp_thermal(struct net_device *dev,
894 struct iw_request_info *info,
895 struct iw_point *wrqu, char *extra);
896 int rtw_mp_reset_stats(struct net_device *dev,
897 struct iw_request_info *info,
898 struct iw_point *wrqu, char *extra);
899 int rtw_mp_dump(struct net_device *dev,
900 struct iw_request_info *info,
901 struct iw_point *wrqu, char *extra);
902 int rtw_mp_phypara(struct net_device *dev,
903 struct iw_request_info *info,
904 struct iw_point *wrqu, char *extra);
905 int rtw_mp_SetRFPath(struct net_device *dev,
906 struct iw_request_info *info,
907 struct iw_point *wrqu, char *extra);
908 int rtw_mp_QueryDrv(struct net_device *dev,
909 struct iw_request_info *info,
910 union iwreq_data *wrqu, char *extra);
911 int rtw_mp_PwrCtlDM(struct net_device *dev,
912 struct iw_request_info *info,
913 struct iw_point *wrqu, char *extra);
914 int rtw_mp_getver(struct net_device *dev,
915 struct iw_request_info *info,
916 union iwreq_data *wrqu, char *extra);
917 int rtw_mp_mon(struct net_device *dev,
918 struct iw_request_info *info,
919 union iwreq_data *wrqu, char *extra);
920 int rtw_efuse_mask_file(struct net_device *dev,
921 struct iw_request_info *info,
922 union iwreq_data *wrqu, char *extra);
923 int rtw_efuse_file_map(struct net_device *dev,
924 struct iw_request_info *info,
925 union iwreq_data *wrqu, char *extra);
926 int rtw_mp_SetBT(struct net_device *dev,
927 struct iw_request_info *info,
928 union iwreq_data *wrqu, char *extra);
929 int rtw_mp_pretx_proc(PADAPTER padapter, u8 bStartTest, char *extra);
930 int rtw_mp_tx(struct net_device *dev,
931 struct iw_request_info *info,
932 union iwreq_data *wrqu, char *extra);
933 int rtw_mp_rx(struct net_device *dev,
934 struct iw_request_info *info,
935 union iwreq_data *wrqu, char *extra);
936 int rtw_mp_hwtx(struct net_device *dev,
937 struct iw_request_info *info,
938 union iwreq_data *wrqu, char *extra);
939 u8 HwRateToMPTRate(u8 rate);
940 int rtw_mp_iqk(struct net_device *dev,
941 struct iw_request_info *info,
942 struct iw_point *wrqu, char *extra);
943 int rtw_mp_lck(struct net_device *dev,
944 struct iw_request_info *info,
945 struct iw_point *wrqu, char *extra);
946 #endif /* _RTW_MP_H_ */