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 #include <wlan_bssdef.h>
27 #define C2H_MEM_SZ (16*1024)
29 #include <osdep_service.h>
30 #include <ieee80211.h> /* <ieee80211/ieee80211.h> */
32 #define FREE_CMDOBJ_SZ 128
34 #define MAX_CMDSZ 1024
36 #define MAX_EVTSZ 1024
38 #define CMDBUFF_ALIGN_SZ 512
41 struct adapter
*padapter
;
48 struct list_head list
;
52 struct semaphore cmd_queue_sema
;
53 struct semaphore terminate_cmdthread_sema
;
54 struct __queue cmd_queue
;
56 u8
*cmd_buf
; /* shall be non-paged, and 4 bytes aligned */
57 u8
*cmd_allocated_buf
;
58 u8
*rsp_buf
; /* shall be non-paged, and 4 bytes aligned */
59 u8
*rsp_allocated_buf
;
64 struct adapter
*padapter
;
68 struct work_struct c2h_wk
;
70 struct rtw_cbuf
*c2h_queue
;
71 #define C2H_QUEUE_MAX_LEN 10
73 u8
*evt_buf
; /* shall be non-paged, and 4 bytes aligned */
74 u8
*evt_allocated_buf
;
78 #define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \
80 _rtw_init_listhead(&pcmd->list);\
81 pcmd->cmdcode = code;\
82 pcmd->parmbuf = (u8 *)(pparm);\
83 pcmd->cmdsz = sizeof(*pparm);\
95 #define c2h_evt_exist(c2h_evt) ((c2h_evt)->id || (c2h_evt)->plen)
97 u32
rtw_enqueue_cmd(struct cmd_priv
*pcmdpriv
, struct cmd_obj
*obj
);
98 struct cmd_obj
*rtw_dequeue_cmd(struct cmd_priv
*pcmdpriv
);
99 void rtw_free_cmd_obj(struct cmd_obj
*pcmd
);
101 int rtw_cmd_thread(void *context
);
103 u32
rtw_init_cmd_priv(struct cmd_priv
*pcmdpriv
);
104 void rtw_free_cmd_priv(struct cmd_priv
*pcmdpriv
);
106 u32
rtw_init_evt_priv(struct evt_priv
*pevtpriv
);
107 void rtw_free_evt_priv(struct evt_priv
*pevtpriv
);
108 void rtw_cmd_clr_isr(struct cmd_priv
*pcmdpriv
);
109 void rtw_evt_notify_isr(struct evt_priv
*pevtpriv
);
110 #ifdef CONFIG_88EU_P2P
111 u8
p2p_protocol_wk_cmd(struct adapter
*padapter
, int intCmdType
);
112 #endif /* CONFIG_88EU_P2P */
114 enum rtw_drvextra_cmd_id
{
119 POWER_SAVING_CTRL_WK_CID
,/* IPS,AUTOSuspend */
124 CHECK_HIQ_WK_CID
,/* for softap mode, check hi queue if empty */
127 RTP_TIMER_CFG_WK_CID
,
133 LPS_CTRL_JOINBSS
= 1,
134 LPS_CTRL_CONNECT
= 2,
135 LPS_CTRL_DISCONNECT
= 3,
136 LPS_CTRL_SPECIAL_PACKET
= 4,
147 Caller Mode: Infra, Ad-HoC(C)
149 Notes: To enter USB suspend mode
154 struct usb_suspend_parm
{
155 u32 action
;/* 1: sleep, 0:resume */
159 Caller Mode: Infra, Ad-HoC
161 Notes: To join a known BSS.
168 Caller Mode: Infra, Ad-Hoc
170 Notes: To join the specified bss
175 struct joinbss_parm
{
176 struct wlan_bssid_ex network
;
180 Caller Mode: Infra, Ad-HoC(C)
182 Notes: To disconnect the current associated BSS
187 struct disconnect_parm
{
188 u32 deauth_timeout_ms
;
192 Caller Mode: AP, Ad-HoC(M)
194 Notes: To create a BSS
198 struct createbss_parm
{
199 struct wlan_bssid_ex network
;
202 struct setopmode_parm
{
208 Caller Mode: AP, Ad-HoC, Infra
210 Notes: To ask RTL8711 performing site-survey
216 #define RTW_SSID_SCAN_AMOUNT 9 /* for WEXT_CSCAN_AMOUNT 9 */
217 #define RTW_CHANNEL_SCAN_AMOUNT (14+37)
218 struct sitesurvey_parm
{
219 int scan_mode
; /* active: 1, passive: 0 */
222 struct ndis_802_11_ssid ssid
[RTW_SSID_SCAN_AMOUNT
];
223 struct rtw_ieee80211_channel ch
[RTW_CHANNEL_SCAN_AMOUNT
];
229 Notes: To set the auth type of RTL8711. open/shared/802.1x
234 struct setauth_parm
{
235 u8 mode
; /* 0: legacy open, 1: legacy shared 2: 802.1x */
236 u8 _1x
; /* 0: PSK, 1: TLS */
243 a. algorithm: wep40, wep104, tkip & aes
244 b. keytype: grp key/unicast key
247 when shared key ==> keyid is the camid
248 when 802.1x ==> keyid [0:1] ==> grp key
249 when 802.1x ==> keyid > 2 ==> unicast key
253 u8 algorithm
; /* could be none, wep40, TKIP, CCMP, wep104 */
255 u8 grpkey
; /* 1: this is the grpkey for 802.1x.
256 * 0: this is the unicast key for 802.1x */
257 u8 set_tx
; /* 1: main tx key for wep. 0: other key. */
258 u8 key
[16]; /* this could be 40 or 104 */
262 When in AP or Ad-Hoc mode, this is used to
263 allocate an sw/hw entry for a newly associated sta.
267 when shared key ==> algorithm/keyid
270 struct set_stakey_parm
{
273 u8 id
;/* currently for erasing cam entry if
274 * algorithm == _NO_PRIVACY_ */
278 struct set_stakey_rsp
{
287 Command -Rsp(AID == CAMID) mode
289 This is to force fw to add an sta_data entry per driver's request.
291 FW will write an cam entry associated with it.
294 struct set_assocsta_parm
{
298 struct set_assocsta_rsp
{
308 This is to force fw to del an sta_data entry per driver's request
310 FW will invalidate the cam entry associated with it.
313 struct del_assocsta_parm
{
318 Caller Mode: AP/Ad-HoC(M)
320 Notes: To notify fw that given staid has changed its power state
325 struct setstapwrstate_parm
{
334 Notes: To setup the basic rate of RTL8711
339 struct setbasicrate_parm
{
340 u8 basicrates
[NumRates
];
346 Notes: To read the current basic rate
351 struct getbasicrate_parm
{
355 struct getbasicrate_rsp
{
356 u8 basicrates
[NumRates
];
362 Notes: To setup the data rate of RTL8711
367 struct setdatarate_parm
{
369 u8 datarates
[NumRates
];
375 Notes: To read the current data rate
380 struct getdatarate_parm
{
384 struct getdatarate_rsp
{
385 u8 datarates
[NumRates
];
390 AP: AP can use the info for the contents of beacon frame
391 Infra: STA can use the info when sitesurveying
395 Notes: To set the phy capability of the NIC
401 struct setphyinfo_parm
{
402 struct regulatory_class class_sets
[NUM_REGULATORYS
];
406 struct getphyinfo_parm
{
410 struct getphyinfo_rsp
{
411 struct regulatory_class class_sets
[NUM_REGULATORYS
];
418 Notes: To set the channel/modem/band
419 This command will be used when channel/modem/band is changed.
432 Notes: To get the current setting of channel/modem/band
453 struct readTSSI_parm
{
456 struct readTSSI_rsp
{
460 struct writeBB_parm
{
472 struct writeRF_parm
{
477 struct getrfintfs_parm
{
481 struct Tx_Beacon_param
483 struct wlan_bssid_ex network
;
487 Notes: This command is used for H2C/C2H loopback testing
490 ==> CMD mode, return H2C_SUCCESS.
491 The following condition must be ture under CMD mode
492 mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0;
493 s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7;
494 s2 == (b1 << 8 | b0);
497 ==> CMD_RSP mode, return H2C_SUCCESS_RSP
499 The rsp layout shall be:
516 ==> CMD_EVENT mode, return H2C_SUCCESS
517 The event layout shall be:
521 mac[2] = event's seq no, starting from 1 to parm's marc[3]
525 s0 = swap16(s0) - event.mac[2];
526 s1 = s1 + event.mac[2];
529 s2 = s0 + event.mac[2]
531 w1 = swap32(w1) - event.mac[2];
533 parm->mac[3] is the total event counts that host requested.
534 event will be the same with the cmd's param.
537 /* CMD param Format for driver extra cmd handler */
538 struct drvextra_cmd_parm
{
539 int ec_id
; /* extra cmd id */
540 int type_size
; /* Can use this field as the type id or command size */
544 /*------------------- Below are used for RF/BB tunning ---------------------*/
546 struct setantenna_parm
{
553 struct enrateadaptive_parm
{
557 struct settxagctbl_parm
{
558 u32 txagc
[MAX_RATES_LENGTH
];
561 struct gettxagctbl_parm
{
564 struct gettxagctbl_rsp
{
565 u32 txagc
[MAX_RATES_LENGTH
];
568 struct setagcctrl_parm
{
569 u32 agcctrl
; /* 0: pure hw, 1: fw */
572 struct setssup_parm
{
573 u32 ss_ForceUp
[MAX_RATES_LENGTH
];
576 struct getssup_parm
{
581 u8 ss_ForceUp
[MAX_RATES_LENGTH
];
584 struct setssdlevel_parm
{
585 u8 ss_DLevel
[MAX_RATES_LENGTH
];
588 struct getssdlevel_parm
{
592 struct getssdlevel_rsp
{
593 u8 ss_DLevel
[MAX_RATES_LENGTH
];
596 struct setssulevel_parm
{
597 u8 ss_ULevel
[MAX_RATES_LENGTH
];
600 struct getssulevel_parm
{
604 struct getssulevel_rsp
{
605 u8 ss_ULevel
[MAX_RATES_LENGTH
];
608 struct setcountjudge_parm
{
609 u8 count_judge
[MAX_RATES_LENGTH
];
612 struct getcountjudge_parm
{
616 struct getcountjudge_rsp
{
617 u8 count_judge
[MAX_RATES_LENGTH
];
620 struct setratable_parm
{
621 u8 ss_ForceUp
[NumRates
];
622 u8 ss_ULevel
[NumRates
];
623 u8 ss_DLevel
[NumRates
];
624 u8 count_judge
[NumRates
];
627 struct getratable_parm
{
631 struct getratable_rsp
{
632 u8 ss_ForceUp
[NumRates
];
633 u8 ss_ULevel
[NumRates
];
634 u8 ss_DLevel
[NumRates
];
635 u8 count_judge
[NumRates
];
638 /* to get TX,RX retry count */
640 struct gettxretrycnt_parm
{
644 struct gettxretrycnt_rsp
{
645 unsigned long tx_retrycnt
;
648 struct getrxretrycnt_parm
{
652 struct getrxretrycnt_rsp
{
653 unsigned long rx_retrycnt
;
656 /* to get BCNOK,BCNERR count */
657 struct getbcnokcnt_parm
{
661 struct getbcnokcnt_rsp
{
662 unsigned long bcnokcnt
;
665 struct getbcnerrcnt_parm
{
669 struct getbcnerrcnt_rsp
{
670 unsigned long bcnerrcnt
;
673 /* to get current TX power level */
674 struct getcurtxpwrlevel_parm
{
677 struct getcurtxpwrlevel_rspi
{
678 unsigned short tx_power
;
681 struct setprobereqextraie_parm
{
683 unsigned char ie_len
;
687 struct setassocreqextraie_parm
{
689 unsigned char ie_len
;
693 struct setproberspextraie_parm
{
695 unsigned char ie_len
;
699 struct setassocrspextraie_parm
{
701 unsigned char ie_len
;
705 struct addBaReq_parm
{
710 /*H2C Handler index: 46 */
717 /*H2C Handler index: 59 */
718 struct SetChannelPlan_param
723 /*H2C Handler index: 60 */
724 struct LedBlink_param
726 struct LED_871x
*pLed
;
729 /*H2C Handler index: 61 */
730 struct SetChannelSwitch_param
735 /*H2C Handler index: 62 */
736 struct TDLSoption_param
742 #define GEN_CMD_CODE(cmd) cmd ## _CMD_
748 0x01: success, and check Response.
749 0x02: cmd ignored due to duplicated sequcne number
750 0x03: cmd dropped due to invalid cmd code
755 #define H2C_RSP_OFFSET 512
757 #define H2C_SUCCESS 0x00
758 #define H2C_SUCCESS_RSP 0x01
759 #define H2C_DUPLICATED 0x02
760 #define H2C_DROPPED 0x03
761 #define H2C_PARAMETERS_ERROR 0x04
762 #define H2C_REJECTED 0x05
763 #define H2C_CMD_OVERFLOW 0x06
764 #define H2C_RESERVED 0x07
766 u8
rtw_setassocsta_cmd(struct adapter
*padapter
, u8
*mac_addr
);
767 u8
rtw_setstandby_cmd(struct adapter
*padapter
, uint action
);
768 u8
rtw_sitesurvey_cmd(struct adapter
*padapter
, struct ndis_802_11_ssid
*ssid
,
769 int ssid_num
, struct rtw_ieee80211_channel
*ch
,
771 u8
rtw_createbss_cmd(struct adapter
*padapter
);
772 u8
rtw_createbss_cmd_ex(struct adapter
*padapter
, unsigned char *pbss
,
774 u8
rtw_setphy_cmd(struct adapter
*padapter
, u8 modem
, u8 ch
);
775 u8
rtw_setstakey_cmd(struct adapter
*padapter
, u8
*psta
, u8 unicast_key
);
776 u8
rtw_clearstakey_cmd(struct adapter
*padapter
, u8
*psta
, u8 entry
, u8 enqueue
);
777 u8
rtw_joinbss_cmd(struct adapter
*padapter
, struct wlan_network
* pnetwork
);
778 u8
rtw_disassoc_cmd(struct adapter
*padapter
, u32 deauth_timeout_ms
, bool enqueue
);
779 u8
rtw_setopmode_cmd(struct adapter
*padapter
, enum ndis_802_11_network_infra networktype
);
780 u8
rtw_setdatarate_cmd(struct adapter
*padapter
, u8
*rateset
);
781 u8
rtw_setbasicrate_cmd(struct adapter
*padapter
, u8
*rateset
);
782 u8
rtw_setbbreg_cmd(struct adapter
* padapter
, u8 offset
, u8 val
);
783 u8
rtw_setrfreg_cmd(struct adapter
* padapter
, u8 offset
, u32 val
);
784 u8
rtw_getbbreg_cmd(struct adapter
* padapter
, u8 offset
, u8
* pval
);
785 u8
rtw_getrfreg_cmd(struct adapter
* padapter
, u8 offset
, u8
* pval
);
786 u8
rtw_setrfintfs_cmd(struct adapter
*padapter
, u8 mode
);
787 u8
rtw_setrttbl_cmd(struct adapter
*padapter
, struct setratable_parm
*prate_table
);
788 u8
rtw_getrttbl_cmd(struct adapter
*padapter
, struct getratable_rsp
*pval
);
790 u8
rtw_gettssi_cmd(struct adapter
*padapter
, u8 offset
,u8
*pval
);
791 u8
rtw_setfwdig_cmd(struct adapter
*padapter
, u8 type
);
792 u8
rtw_setfwra_cmd(struct adapter
*padapter
, u8 type
);
794 u8
rtw_addbareq_cmd(struct adapter
*padapter
, u8 tid
, u8
*addr
);
796 u8
rtw_dynamic_chk_wk_cmd(struct adapter
*adapter
);
798 u8
rtw_lps_ctrl_wk_cmd(struct adapter
*padapter
, u8 lps_ctrl_type
, u8 enqueue
);
799 u8
rtw_rpt_timer_cfg_cmd(struct adapter
*padapter
, u16 minRptTime
);
801 u8
rtw_antenna_select_cmd(struct adapter
*padapter
, u8 antenna
,u8 enqueue
);
802 u8
rtw_ps_cmd(struct adapter
*padapter
);
804 #ifdef CONFIG_88EU_AP_MODE
805 u8
rtw_chk_hi_queue_cmd(struct adapter
*padapter
);
808 u8
rtw_set_ch_cmd(struct adapter
*padapter
, u8 ch
, u8 bw
, u8 ch_offset
, u8 enqueue
);
809 u8
rtw_set_chplan_cmd(struct adapter
*padapter
, u8 chplan
, u8 enqueue
);
810 u8
rtw_led_blink_cmd(struct adapter
*padapter
, struct LED_871x
* pLed
);
811 u8
rtw_set_csa_cmd(struct adapter
*padapter
, u8 new_ch_no
);
812 u8
rtw_tdls_cmd(struct adapter
*padapter
, u8
*addr
, u8 option
);
814 u8
rtw_c2h_wk_cmd(struct adapter
*padapter
, u8
*c2h_evt
);
816 u8
rtw_drvextra_cmd_hdl(struct adapter
*padapter
, unsigned char *pbuf
);
818 void rtw_survey_cmd_callback(struct adapter
*padapter
, struct cmd_obj
*pcmd
);
819 void rtw_disassoc_cmd_callback(struct adapter
*padapter
, struct cmd_obj
*pcmd
);
820 void rtw_joinbss_cmd_callback(struct adapter
*padapter
, struct cmd_obj
*pcmd
);
821 void rtw_createbss_cmd_callback(struct adapter
*adapt
, struct cmd_obj
*pcmd
);
822 void rtw_getbbrfreg_cmdrsp_callback(struct adapter
*adapt
, struct cmd_obj
*cmd
);
823 void rtw_readtssi_cmdrsp_callback(struct adapter
*adapt
, struct cmd_obj
*cmd
);
825 void rtw_setstaKey_cmdrsp_callback(struct adapter
*adapt
, struct cmd_obj
*cmd
);
826 void rtw_setassocsta_cmdrsp_callback(struct adapter
*adapt
, struct cmd_obj
*cm
);
827 void rtw_getrttbl_cmdrsp_callback(struct adapter
*adapt
, struct cmd_obj
*cmd
);
829 struct _cmd_callback
{
831 void (*callback
)(struct adapter
*padapter
, struct cmd_obj
*cmd
);
835 GEN_CMD_CODE(_Read_MACREG
), /*0*/
836 GEN_CMD_CODE(_Write_MACREG
),
837 GEN_CMD_CODE(_Read_BBREG
),
838 GEN_CMD_CODE(_Write_BBREG
),
839 GEN_CMD_CODE(_Read_RFREG
),
840 GEN_CMD_CODE(_Write_RFREG
), /*5*/
841 GEN_CMD_CODE(_Read_EEPROM
),
842 GEN_CMD_CODE(_Write_EEPROM
),
843 GEN_CMD_CODE(_Read_EFUSE
),
844 GEN_CMD_CODE(_Write_EFUSE
),
846 GEN_CMD_CODE(_Read_CAM
), /*10*/
847 GEN_CMD_CODE(_Write_CAM
),
848 GEN_CMD_CODE(_setBCNITV
),
849 GEN_CMD_CODE(_setMBIDCFG
),
850 GEN_CMD_CODE(_JoinBss
), /*14*/
851 GEN_CMD_CODE(_DisConnect
), /*15*/
852 GEN_CMD_CODE(_CreateBss
),
853 GEN_CMD_CODE(_SetOpMode
),
854 GEN_CMD_CODE(_SiteSurvey
), /*18*/
855 GEN_CMD_CODE(_SetAuth
),
857 GEN_CMD_CODE(_SetKey
), /*20*/
858 GEN_CMD_CODE(_SetStaKey
),
859 GEN_CMD_CODE(_SetAssocSta
),
860 GEN_CMD_CODE(_DelAssocSta
),
861 GEN_CMD_CODE(_SetStaPwrState
),
862 GEN_CMD_CODE(_SetBasicRate
), /*25*/
863 GEN_CMD_CODE(_GetBasicRate
),
864 GEN_CMD_CODE(_SetDataRate
),
865 GEN_CMD_CODE(_GetDataRate
),
866 GEN_CMD_CODE(_SetPhyInfo
),
868 GEN_CMD_CODE(_GetPhyInfo
), /*30*/
869 GEN_CMD_CODE(_SetPhy
),
870 GEN_CMD_CODE(_GetPhy
),
871 GEN_CMD_CODE(_readRssi
),
872 GEN_CMD_CODE(_readGain
),
873 GEN_CMD_CODE(_SetAtim
), /*35*/
874 GEN_CMD_CODE(_SetPwrMode
),
875 GEN_CMD_CODE(_JoinbssRpt
),
876 GEN_CMD_CODE(_SetRaTable
),
877 GEN_CMD_CODE(_GetRaTable
),
879 GEN_CMD_CODE(_GetCCXReport
), /*40*/
880 GEN_CMD_CODE(_GetDTMReport
),
881 GEN_CMD_CODE(_GetTXRateStatistics
),
882 GEN_CMD_CODE(_SetUsbSuspend
),
883 GEN_CMD_CODE(_SetH2cLbk
),
884 GEN_CMD_CODE(_AddBAReq
), /*45*/
885 GEN_CMD_CODE(_SetChannel
), /*46*/
886 GEN_CMD_CODE(_SetTxPower
),
887 GEN_CMD_CODE(_SwitchAntenna
),
888 GEN_CMD_CODE(_SetCrystalCap
),
889 GEN_CMD_CODE(_SetSingleCarrierTx
), /*50*/
891 GEN_CMD_CODE(_SetSingleToneTx
),/*51*/
892 GEN_CMD_CODE(_SetCarrierSuppressionTx
),
893 GEN_CMD_CODE(_SetContinuousTx
),
894 GEN_CMD_CODE(_SwitchBandwidth
), /*54*/
895 GEN_CMD_CODE(_TX_Beacon
), /*55*/
897 GEN_CMD_CODE(_Set_MLME_EVT
), /*56*/
898 GEN_CMD_CODE(_Set_Drv_Extra
), /*57*/
899 GEN_CMD_CODE(_Set_H2C_MSG
), /*58*/
901 GEN_CMD_CODE(_SetChannelPlan
), /*59*/
902 GEN_CMD_CODE(_LedBlink
), /*60*/
904 GEN_CMD_CODE(_SetChannelSwitch
), /*61*/
905 GEN_CMD_CODE(_TDLS
), /*62*/
910 #define _GetBBReg_CMD_ _Read_BBREG_CMD_
911 #define _SetBBReg_CMD_ _Write_BBREG_CMD_
912 #define _GetRFReg_CMD_ _Read_RFREG_CMD_
913 #define _SetRFReg_CMD_ _Write_RFREG_CMD_
916 static struct _cmd_callback rtw_cmd_callback
[] =
918 {GEN_CMD_CODE(_Read_MACREG
), NULL
}, /*0*/
919 {GEN_CMD_CODE(_Write_MACREG
), NULL
},
920 {GEN_CMD_CODE(_Read_BBREG
), &rtw_getbbrfreg_cmdrsp_callback
},
921 {GEN_CMD_CODE(_Write_BBREG
), NULL
},
922 {GEN_CMD_CODE(_Read_RFREG
), &rtw_getbbrfreg_cmdrsp_callback
},
923 {GEN_CMD_CODE(_Write_RFREG
), NULL
}, /*5*/
924 {GEN_CMD_CODE(_Read_EEPROM
), NULL
},
925 {GEN_CMD_CODE(_Write_EEPROM
), NULL
},
926 {GEN_CMD_CODE(_Read_EFUSE
), NULL
},
927 {GEN_CMD_CODE(_Write_EFUSE
), NULL
},
929 {GEN_CMD_CODE(_Read_CAM
), NULL
}, /*10*/
930 {GEN_CMD_CODE(_Write_CAM
), NULL
},
931 {GEN_CMD_CODE(_setBCNITV
), NULL
},
932 {GEN_CMD_CODE(_setMBIDCFG
), NULL
},
933 {GEN_CMD_CODE(_JoinBss
), &rtw_joinbss_cmd_callback
}, /*14*/
934 {GEN_CMD_CODE(_DisConnect
), &rtw_disassoc_cmd_callback
}, /*15*/
935 {GEN_CMD_CODE(_CreateBss
), &rtw_createbss_cmd_callback
},
936 {GEN_CMD_CODE(_SetOpMode
), NULL
},
937 {GEN_CMD_CODE(_SiteSurvey
), &rtw_survey_cmd_callback
}, /*18*/
938 {GEN_CMD_CODE(_SetAuth
), NULL
},
940 {GEN_CMD_CODE(_SetKey
), NULL
}, /*20*/
941 {GEN_CMD_CODE(_SetStaKey
), &rtw_setstaKey_cmdrsp_callback
},
942 {GEN_CMD_CODE(_SetAssocSta
), &rtw_setassocsta_cmdrsp_callback
},
943 {GEN_CMD_CODE(_DelAssocSta
), NULL
},
944 {GEN_CMD_CODE(_SetStaPwrState
), NULL
},
945 {GEN_CMD_CODE(_SetBasicRate
), NULL
}, /*25*/
946 {GEN_CMD_CODE(_GetBasicRate
), NULL
},
947 {GEN_CMD_CODE(_SetDataRate
), NULL
},
948 {GEN_CMD_CODE(_GetDataRate
), NULL
},
949 {GEN_CMD_CODE(_SetPhyInfo
), NULL
},
951 {GEN_CMD_CODE(_GetPhyInfo
), NULL
}, /*30*/
952 {GEN_CMD_CODE(_SetPhy
), NULL
},
953 {GEN_CMD_CODE(_GetPhy
), NULL
},
954 {GEN_CMD_CODE(_readRssi
), NULL
},
955 {GEN_CMD_CODE(_readGain
), NULL
},
956 {GEN_CMD_CODE(_SetAtim
), NULL
}, /*35*/
957 {GEN_CMD_CODE(_SetPwrMode
), NULL
},
958 {GEN_CMD_CODE(_JoinbssRpt
), NULL
},
959 {GEN_CMD_CODE(_SetRaTable
), NULL
},
960 {GEN_CMD_CODE(_GetRaTable
), NULL
},
962 {GEN_CMD_CODE(_GetCCXReport
), NULL
}, /*40*/
963 {GEN_CMD_CODE(_GetDTMReport
), NULL
},
964 {GEN_CMD_CODE(_GetTXRateStatistics
), NULL
},
965 {GEN_CMD_CODE(_SetUsbSuspend
), NULL
},
966 {GEN_CMD_CODE(_SetH2cLbk
), NULL
},
967 {GEN_CMD_CODE(_AddBAReq
), NULL
}, /*45*/
968 {GEN_CMD_CODE(_SetChannel
), NULL
}, /*46*/
969 {GEN_CMD_CODE(_SetTxPower
), NULL
},
970 {GEN_CMD_CODE(_SwitchAntenna
), NULL
},
971 {GEN_CMD_CODE(_SetCrystalCap
), NULL
},
972 {GEN_CMD_CODE(_SetSingleCarrierTx
), NULL
}, /*50*/
974 {GEN_CMD_CODE(_SetSingleToneTx
), NULL
}, /*51*/
975 {GEN_CMD_CODE(_SetCarrierSuppressionTx
), NULL
},
976 {GEN_CMD_CODE(_SetContinuousTx
), NULL
},
977 {GEN_CMD_CODE(_SwitchBandwidth
), NULL
}, /*54*/
978 {GEN_CMD_CODE(_TX_Beacon
), NULL
},/*55*/
980 {GEN_CMD_CODE(_Set_MLME_EVT
), NULL
},/*56*/
981 {GEN_CMD_CODE(_Set_Drv_Extra
), NULL
},/*57*/
982 {GEN_CMD_CODE(_Set_H2C_MSG
), NULL
},/*58*/
983 {GEN_CMD_CODE(_SetChannelPlan
), NULL
},/*59*/
984 {GEN_CMD_CODE(_LedBlink
), NULL
},/*60*/
986 {GEN_CMD_CODE(_SetChannelSwitch
), NULL
},/*61*/
987 {GEN_CMD_CODE(_TDLS
), NULL
},/*62*/