1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /****************************************************************************** 3 * 4 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. 5 * 6 ******************************************************************************/ 7 #ifndef __RTW_CMD_H_ 8 #define __RTW_CMD_H_ 9 10 #include <linux/completion.h> 11 12 #define C2H_MEM_SZ (16*1024) 13 14 #define FREE_CMDOBJ_SZ 128 15 16 #define MAX_CMDSZ 1024 17 #define MAX_RSPSZ 512 18 #define MAX_EVTSZ 1024 19 20 #define CMDBUFF_ALIGN_SZ 512 21 22 struct cmd_obj { 23 struct adapter *padapter; 24 u16 cmdcode; 25 u8 res; 26 u8 *parmbuf; 27 u32 cmdsz; 28 u8 *rsp; 29 u32 rspsz; 30 struct submit_ctx *sctx; 31 struct list_head list; 32 }; 33 34 /* cmd flags */ 35 enum { 36 RTW_CMDF_DIRECTLY = BIT0, 37 RTW_CMDF_WAIT_ACK = BIT1, 38 }; 39 40 struct cmd_priv { 41 struct completion cmd_queue_comp; 42 struct completion terminate_cmdthread_comp; 43 struct __queue cmd_queue; 44 u8 cmd_seq; 45 u8 *cmd_buf; /* shall be non-paged, and 4 bytes aligned */ 46 u8 *cmd_allocated_buf; 47 u8 *rsp_buf; /* shall be non-paged, and 4 bytes aligned */ 48 u8 *rsp_allocated_buf; 49 u32 cmd_issued_cnt; 50 u32 cmd_done_cnt; 51 u32 rsp_cnt; 52 atomic_t cmdthd_running; 53 /* u8 cmdthd_running; */ 54 u8 stop_req; 55 struct adapter *padapter; 56 struct mutex sctx_mutex; 57 }; 58 59 struct evt_priv { 60 struct work_struct c2h_wk; 61 bool c2h_wk_alive; 62 struct rtw_cbuf *c2h_queue; 63 #define C2H_QUEUE_MAX_LEN 10 64 65 atomic_t event_seq; 66 u8 *evt_buf; /* shall be non-paged, and 4 bytes aligned */ 67 u8 *evt_allocated_buf; 68 u32 evt_done_cnt; 69 u8 *c2h_mem; 70 u8 *allocated_c2h_mem; 71 }; 72 73 #define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \ 74 do {\ 75 INIT_LIST_HEAD(&pcmd->list);\ 76 pcmd->cmdcode = code;\ 77 pcmd->parmbuf = (u8 *)(pparm);\ 78 pcmd->cmdsz = sizeof(*pparm);\ 79 pcmd->rsp = NULL;\ 80 pcmd->rspsz = 0;\ 81 } while (0) 82 83 #define init_h2fwcmd_w_parm_no_parm_rsp(pcmd, code) \ 84 do {\ 85 INIT_LIST_HEAD(&pcmd->list);\ 86 pcmd->cmdcode = code;\ 87 pcmd->parmbuf = NULL;\ 88 pcmd->cmdsz = 0;\ 89 pcmd->rsp = NULL;\ 90 pcmd->rspsz = 0;\ 91 } while (0) 92 93 struct c2h_evt_hdr { 94 u8 id:4; 95 u8 plen:4; 96 u8 seq; 97 u8 payload[]; 98 }; 99 100 struct c2h_evt_hdr_88xx { 101 u8 id; 102 u8 seq; 103 u8 payload[12]; 104 u8 plen; 105 u8 trigger; 106 }; 107 108 #define c2h_evt_valid(c2h_evt) ((c2h_evt)->id || (c2h_evt)->plen) 109 110 int rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *obj); 111 extern struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv); 112 extern void rtw_free_cmd_obj(struct cmd_obj *pcmd); 113 114 void rtw_stop_cmd_thread(struct adapter *adapter); 115 int rtw_cmd_thread(void *context); 116 117 extern void rtw_free_cmd_priv(struct cmd_priv *pcmdpriv); 118 119 extern void rtw_free_evt_priv(struct evt_priv *pevtpriv); 120 extern void rtw_evt_notify_isr(struct evt_priv *pevtpriv); 121 122 enum { 123 NONE_WK_CID, 124 DYNAMIC_CHK_WK_CID, 125 DM_CTRL_WK_CID, 126 PBC_POLLING_WK_CID, 127 POWER_SAVING_CTRL_WK_CID,/* IPS, AUTOSuspend */ 128 LPS_CTRL_WK_CID, 129 ANT_SELECT_WK_CID, 130 P2P_PS_WK_CID, 131 P2P_PROTO_WK_CID, 132 CHECK_HIQ_WK_CID,/* for softap mode, check hi queue if empty */ 133 INTEl_WIDI_WK_CID, 134 C2H_WK_CID, 135 RTP_TIMER_CFG_WK_CID, 136 RESET_SECURITYPRIV, /* add for CONFIG_IEEE80211W, none 11w also can use */ 137 FREE_ASSOC_RESOURCES, /* add for CONFIG_IEEE80211W, none 11w also can use */ 138 DM_IN_LPS_WK_CID, 139 DM_RA_MSK_WK_CID, /* add for STA update RAMask when bandwidth change. */ 140 BEAMFORMING_WK_CID, 141 LPS_CHANGE_DTIM_CID, 142 BTINFO_WK_CID, 143 MAX_WK_CID 144 }; 145 146 enum { 147 LPS_CTRL_SCAN = 0, 148 LPS_CTRL_JOINBSS = 1, 149 LPS_CTRL_CONNECT = 2, 150 LPS_CTRL_DISCONNECT = 3, 151 LPS_CTRL_SPECIAL_PACKET = 4, 152 LPS_CTRL_LEAVE = 5, 153 LPS_CTRL_TRAFFIC_BUSY = 6, 154 }; 155 156 enum { 157 SWSI, 158 HWSI, 159 HWPI, 160 }; 161 162 /* 163 Caller Mode: Infra, Ad-HoC 164 165 Notes: To join a known BSS. 166 167 Command-Event Mode 168 169 */ 170 171 /* 172 Caller Mode: Infra, Ad-Hoc 173 174 Notes: To join the specified bss 175 176 Command Event Mode 177 178 */ 179 struct joinbss_parm { 180 struct wlan_bssid_ex network; 181 }; 182 183 /* 184 Caller Mode: Infra, Ad-HoC(C) 185 186 Notes: To disconnect the current associated BSS 187 188 Command Mode 189 190 */ 191 struct disconnect_parm { 192 u32 deauth_timeout_ms; 193 }; 194 195 /* 196 Caller Mode: AP, Ad-HoC(M) 197 198 Notes: To create a BSS 199 200 Command Mode 201 */ 202 struct createbss_parm { 203 struct wlan_bssid_ex network; 204 }; 205 206 /* 207 Caller Mode: AP, Ad-HoC, Infra 208 209 Notes: To set the NIC mode of RTL8711 210 211 Command Mode 212 213 The definition of mode: 214 215 #define IW_MODE_AUTO 0 Let the driver decides which AP to join 216 #define IW_MODE_ADHOC 1 Single cell network (Ad-Hoc Clients) 217 #define IW_MODE_INFRA 2 Multi cell network, roaming, .. 218 #define IW_MODE_MASTER 3 Synchronisation master or Access Point 219 #define IW_MODE_REPEAT 4 Wireless Repeater (forwarder) 220 #define IW_MODE_SECOND 5 Secondary master/repeater (backup) 221 #define IW_MODE_MONITOR 6 Passive monitor (listen only) 222 223 */ 224 struct setopmode_parm { 225 u8 mode; 226 u8 rsvd[3]; 227 }; 228 229 /* 230 Caller Mode: AP, Ad-HoC, Infra 231 232 Notes: To ask RTL8711 performing site-survey 233 234 Command-Event Mode 235 236 */ 237 238 #define RTW_SSID_SCAN_AMOUNT 9 /* for WEXT_CSCAN_AMOUNT 9 */ 239 #define RTW_CHANNEL_SCAN_AMOUNT (14+37) 240 struct sitesurvey_parm { 241 signed int scan_mode; /* active: 1, passive: 0 */ 242 u8 ssid_num; 243 u8 ch_num; 244 struct ndis_802_11_ssid ssid[RTW_SSID_SCAN_AMOUNT]; 245 struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT]; 246 }; 247 248 /* 249 Caller Mode: Any 250 251 Notes: To set the auth type of RTL8711. open/shared/802.1x 252 253 Command Mode 254 255 */ 256 struct setauth_parm { 257 u8 mode; /* 0: legacy open, 1: legacy shared 2: 802.1x */ 258 u8 _1x; /* 0: PSK, 1: TLS */ 259 u8 rsvd[2]; 260 }; 261 262 /* 263 Caller Mode: Infra 264 265 a. algorithm: wep40, wep104, tkip & aes 266 b. keytype: grp key/unicast key 267 c. key contents 268 269 when shared key ==> keyid is the camid 270 when 802.1x ==> keyid [0:1] ==> grp key 271 when 802.1x ==> keyid > 2 ==> unicast key 272 273 */ 274 struct setkey_parm { 275 u8 algorithm; /* encryption algorithm, could be none, wep40, TKIP, CCMP, wep104 */ 276 u8 keyid; 277 u8 grpkey; /* 1: this is the grpkey for 802.1x. 0: this is the unicast key for 802.1x */ 278 u8 set_tx; /* 1: main tx key for wep. 0: other key. */ 279 u8 key[16]; /* this could be 40 or 104 */ 280 }; 281 282 /* 283 When in AP or Ad-Hoc mode, this is used to 284 allocate an sw/hw entry for a newly associated sta. 285 286 Command 287 288 when shared key ==> algorithm/keyid 289 290 */ 291 struct set_stakey_parm { 292 u8 addr[ETH_ALEN]; 293 u8 algorithm; 294 u8 keyid; 295 u8 key[16]; 296 }; 297 298 struct set_stakey_rsp { 299 u8 addr[ETH_ALEN]; 300 u8 keyid; 301 u8 rsvd; 302 }; 303 304 /* 305 Caller Ad-Hoc/AP 306 307 Command -Rsp(AID == CAMID) mode 308 309 This is to force fw to add an sta_data entry per driver's request. 310 311 FW will write an cam entry associated with it. 312 313 */ 314 struct set_assocsta_parm { 315 u8 addr[ETH_ALEN]; 316 }; 317 318 struct set_assocsta_rsp { 319 u8 cam_id; 320 u8 rsvd[3]; 321 }; 322 323 /* 324 Caller Ad-Hoc/AP 325 326 Command mode 327 328 This is to force fw to del an sta_data entry per driver's request 329 330 FW will invalidate the cam entry associated with it. 331 332 */ 333 struct del_assocsta_parm { 334 u8 addr[ETH_ALEN]; 335 }; 336 337 /* 338 Caller Mode: AP/Ad-HoC(M) 339 340 Notes: To notify fw that given staid has changed its power state 341 342 Command Mode 343 344 */ 345 struct setstapwrstate_parm { 346 u8 staid; 347 u8 status; 348 u8 hwaddr[6]; 349 }; 350 351 /* 352 Caller Mode: Any 353 354 Notes: To setup the basic rate of RTL8711 355 356 Command Mode 357 358 */ 359 struct setbasicrate_parm { 360 u8 basicrates[NumRates]; 361 }; 362 363 /* 364 Caller Mode: Any 365 366 Notes: To read the current basic rate 367 368 Command-Rsp Mode 369 370 */ 371 struct getbasicrate_parm { 372 u32 rsvd; 373 }; 374 375 /* 376 Caller Mode: Any 377 378 Notes: To setup the data rate of RTL8711 379 380 Command Mode 381 382 */ 383 struct setdatarate_parm { 384 u8 mac_id; 385 u8 datarates[NumRates]; 386 }; 387 388 /* 389 Caller Mode: Any 390 391 Notes: To read the current data rate 392 393 Command-Rsp Mode 394 395 */ 396 struct getdatarate_parm { 397 u32 rsvd; 398 399 }; 400 401 /* 402 Caller Mode: Any 403 AP: AP can use the info for the contents of beacon frame 404 Infra: STA can use the info when sitesurveying 405 Ad-HoC(M): Like AP 406 Ad-HoC(C): Like STA 407 408 409 Notes: To set the phy capability of the NIC 410 411 Command Mode 412 413 */ 414 415 struct setphyinfo_parm { 416 struct regulatory_class class_sets[NUM_REGULATORYS]; 417 u8 status; 418 }; 419 420 struct getphyinfo_parm { 421 u32 rsvd; 422 }; 423 424 /* 425 Caller Mode: Any 426 427 Notes: To set the channel/modem/band 428 This command will be used when channel/modem/band is changed. 429 430 Command Mode 431 432 */ 433 struct setphy_parm { 434 u8 rfchannel; 435 u8 modem; 436 }; 437 438 /* 439 Caller Mode: Any 440 441 Notes: To get the current setting of channel/modem/band 442 443 Command-Rsp Mode 444 445 */ 446 struct getphy_parm { 447 u32 rsvd; 448 449 }; 450 451 struct Tx_Beacon_param { 452 struct wlan_bssid_ex network; 453 }; 454 455 /* 456 Notes: This command is used for H2C/C2H loopback testing 457 458 mac[0] == 0 459 ==> CMD mode, return H2C_SUCCESS. 460 The following condition must be true under CMD mode 461 mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0; 462 s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7; 463 s2 == (b1 << 8 | b0); 464 465 mac[0] == 1 466 ==> CMD_RSP mode, return H2C_SUCCESS_RSP 467 468 The rsp layout shall be: 469 rsp: parm: 470 mac[0] = mac[5]; 471 mac[1] = mac[4]; 472 mac[2] = mac[3]; 473 mac[3] = mac[2]; 474 mac[4] = mac[1]; 475 mac[5] = mac[0]; 476 s0 = s1; 477 s1 = swap16(s0); 478 w0 = swap32(w1); 479 b0 = b1 480 s2 = s0 + s1 481 b1 = b0 482 w1 = w0 483 484 mac[0] == 2 485 ==> CMD_EVENT mode, return H2C_SUCCESS 486 The event layout shall be: 487 event: parm: 488 mac[0] = mac[5]; 489 mac[1] = mac[4]; 490 mac[2] = event's sequence number, starting from 1 to parm's marc[3] 491 mac[3] = mac[2]; 492 mac[4] = mac[1]; 493 mac[5] = mac[0]; 494 s0 = swap16(s0) - event.mac[2]; 495 s1 = s1 + event.mac[2]; 496 w0 = swap32(w0); 497 b0 = b1 498 s2 = s0 + event.mac[2] 499 b1 = b0 500 w1 = swap32(w1) - event.mac[2]; 501 502 parm->mac[3] is the total event counts that host requested. 503 504 505 event will be the same with the cmd's param. 506 507 */ 508 509 /* CMD param Formart for driver extra cmd handler */ 510 struct drvextra_cmd_parm { 511 int ec_id; /* extra cmd id */ 512 int type; /* Can use this field as the type id or command size */ 513 int size; /* buffer size */ 514 unsigned char *pbuf; 515 }; 516 517 /*------------------- Below are used for RF/BB tuning ---------------------*/ 518 519 struct getcountjudge_rsp { 520 u8 count_judge[MAX_RATES_LENGTH]; 521 }; 522 523 struct addBaReq_parm { 524 unsigned int tid; 525 u8 addr[ETH_ALEN]; 526 }; 527 528 /*H2C Handler index: 46 */ 529 struct set_ch_parm { 530 u8 ch; 531 u8 bw; 532 u8 ch_offset; 533 }; 534 535 /*H2C Handler index: 59 */ 536 struct SetChannelPlan_param { 537 u8 channel_plan; 538 }; 539 540 /*H2C Handler index: 61 */ 541 struct SetChannelSwitch_param { 542 u8 new_ch_no; 543 }; 544 545 /*H2C Handler index: 62 */ 546 struct TDLSoption_param { 547 u8 addr[ETH_ALEN]; 548 u8 option; 549 }; 550 551 /*H2C Handler index: 64 */ 552 struct RunInThread_param { 553 void (*func)(void *); 554 void *context; 555 }; 556 557 558 #define GEN_CMD_CODE(cmd) cmd ## _CMD_ 559 560 561 /* 562 563 Result: 564 0x00: success 565 0x01: success, and check Response. 566 0x02: cmd ignored due to duplicated sequcne number 567 0x03: cmd dropped due to invalid cmd code 568 0x04: reserved. 569 570 */ 571 572 #define H2C_RSP_OFFSET 512 573 574 #define H2C_SUCCESS 0x00 575 #define H2C_SUCCESS_RSP 0x01 576 #define H2C_DUPLICATED 0x02 577 #define H2C_DROPPED 0x03 578 #define H2C_PARAMETERS_ERROR 0x04 579 #define H2C_REJECTED 0x05 580 #define H2C_CMD_OVERFLOW 0x06 581 #define H2C_RESERVED 0x07 582 583 u8 rtw_sitesurvey_cmd(struct adapter *padapter, struct ndis_802_11_ssid *ssid, int ssid_num, struct rtw_ieee80211_channel *ch, int ch_num); 584 extern u8 rtw_createbss_cmd(struct adapter *padapter); 585 int rtw_startbss_cmd(struct adapter *padapter, int flags); 586 587 struct sta_info; 588 extern u8 rtw_setstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 unicast_key, bool enqueue); 589 extern u8 rtw_clearstakey_cmd(struct adapter *padapter, struct sta_info *sta, u8 enqueue); 590 591 extern u8 rtw_joinbss_cmd(struct adapter *padapter, struct wlan_network *pnetwork); 592 u8 rtw_disassoc_cmd(struct adapter *padapter, u32 deauth_timeout_ms, bool enqueue); 593 extern u8 rtw_setopmode_cmd(struct adapter *padapter, enum ndis_802_11_network_infrastructure networktype, bool enqueue); 594 extern u8 rtw_setdatarate_cmd(struct adapter *padapter, u8 *rateset); 595 extern u8 rtw_setrfintfs_cmd(struct adapter *padapter, u8 mode); 596 597 extern u8 rtw_gettssi_cmd(struct adapter *padapter, u8 offset, u8 *pval); 598 extern u8 rtw_setfwdig_cmd(struct adapter *padapter, u8 type); 599 extern u8 rtw_setfwra_cmd(struct adapter *padapter, u8 type); 600 601 extern u8 rtw_addbareq_cmd(struct adapter *padapter, u8 tid, u8 *addr); 602 /* add for CONFIG_IEEE80211W, none 11w also can use */ 603 extern u8 rtw_reset_securitypriv_cmd(struct adapter *padapter); 604 extern u8 rtw_free_assoc_resources_cmd(struct adapter *padapter); 605 extern u8 rtw_dynamic_chk_wk_cmd(struct adapter *adapter); 606 607 u8 rtw_lps_ctrl_wk_cmd(struct adapter *padapter, u8 lps_ctrl_type, u8 enqueue); 608 u8 rtw_dm_in_lps_wk_cmd(struct adapter *padapter); 609 610 u8 rtw_dm_ra_mask_wk_cmd(struct adapter *padapter, u8 *psta); 611 612 extern u8 rtw_ps_cmd(struct adapter *padapter); 613 614 u8 rtw_chk_hi_queue_cmd(struct adapter *padapter); 615 616 extern u8 rtw_set_chplan_cmd(struct adapter *padapter, u8 chplan, u8 enqueue, u8 swconfig); 617 618 extern u8 rtw_c2h_packet_wk_cmd(struct adapter *padapter, u8 *pbuf, u16 length); 619 extern u8 rtw_c2h_wk_cmd(struct adapter *padapter, u8 *c2h_evt); 620 621 u8 rtw_drvextra_cmd_hdl(struct adapter *padapter, unsigned char *pbuf); 622 623 extern void rtw_survey_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd); 624 extern void rtw_disassoc_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd); 625 extern void rtw_joinbss_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd); 626 extern void rtw_createbss_cmd_callback(struct adapter *padapter, struct cmd_obj *pcmd); 627 extern void rtw_getbbrfreg_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd); 628 629 extern void rtw_setstaKey_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd); 630 extern void rtw_setassocsta_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd); 631 extern void rtw_getrttbl_cmdrsp_callback(struct adapter *padapter, struct cmd_obj *pcmd); 632 633 634 struct _cmd_callback { 635 u32 cmd_code; 636 void (*callback)(struct adapter *padapter, struct cmd_obj *cmd); 637 }; 638 639 enum { 640 GEN_CMD_CODE(_Read_MACREG), /*0*/ 641 GEN_CMD_CODE(_Write_MACREG), 642 GEN_CMD_CODE(_Read_BBREG), 643 GEN_CMD_CODE(_Write_BBREG), 644 GEN_CMD_CODE(_Read_RFREG), 645 GEN_CMD_CODE(_Write_RFREG), /*5*/ 646 GEN_CMD_CODE(_Read_EEPROM), 647 GEN_CMD_CODE(_Write_EEPROM), 648 GEN_CMD_CODE(_Read_EFUSE), 649 GEN_CMD_CODE(_Write_EFUSE), 650 651 GEN_CMD_CODE(_Read_CAM), /*10*/ 652 GEN_CMD_CODE(_Write_CAM), 653 GEN_CMD_CODE(_setBCNITV), 654 GEN_CMD_CODE(_setMBIDCFG), 655 GEN_CMD_CODE(_JoinBss), /*14*/ 656 GEN_CMD_CODE(_DisConnect), /*15*/ 657 GEN_CMD_CODE(_CreateBss), 658 GEN_CMD_CODE(_SetOpMode), 659 GEN_CMD_CODE(_SiteSurvey), /*18*/ 660 GEN_CMD_CODE(_SetAuth), 661 662 GEN_CMD_CODE(_SetKey), /*20*/ 663 GEN_CMD_CODE(_SetStaKey), 664 GEN_CMD_CODE(_SetAssocSta), 665 GEN_CMD_CODE(_DelAssocSta), 666 GEN_CMD_CODE(_SetStaPwrState), 667 GEN_CMD_CODE(_SetBasicRate), /*25*/ 668 GEN_CMD_CODE(_GetBasicRate), 669 GEN_CMD_CODE(_SetDataRate), 670 GEN_CMD_CODE(_GetDataRate), 671 GEN_CMD_CODE(_SetPhyInfo), 672 673 GEN_CMD_CODE(_GetPhyInfo), /*30*/ 674 GEN_CMD_CODE(_SetPhy), 675 GEN_CMD_CODE(_GetPhy), 676 GEN_CMD_CODE(_readRssi), 677 GEN_CMD_CODE(_readGain), 678 GEN_CMD_CODE(_SetAtim), /*35*/ 679 GEN_CMD_CODE(_SetPwrMode), 680 GEN_CMD_CODE(_JoinbssRpt), 681 GEN_CMD_CODE(_SetRaTable), 682 GEN_CMD_CODE(_GetRaTable), 683 684 GEN_CMD_CODE(_GetCCXReport), /*40*/ 685 GEN_CMD_CODE(_GetDTMReport), 686 GEN_CMD_CODE(_GetTXRateStatistics), 687 GEN_CMD_CODE(_SetUsbSuspend), 688 GEN_CMD_CODE(_SetH2cLbk), 689 GEN_CMD_CODE(_AddBAReq), /*45*/ 690 GEN_CMD_CODE(_SetChannel), /*46*/ 691 GEN_CMD_CODE(_SetTxPower), 692 GEN_CMD_CODE(_SwitchAntenna), 693 GEN_CMD_CODE(_SetCrystalCap), 694 GEN_CMD_CODE(_SetSingleCarrierTx), /*50*/ 695 696 GEN_CMD_CODE(_SetSingleToneTx),/*51*/ 697 GEN_CMD_CODE(_SetCarrierSuppressionTx), 698 GEN_CMD_CODE(_SetContinuousTx), 699 GEN_CMD_CODE(_SwitchBandwidth), /*54*/ 700 GEN_CMD_CODE(_TX_Beacon), /*55*/ 701 702 GEN_CMD_CODE(_Set_MLME_EVT), /*56*/ 703 GEN_CMD_CODE(_Set_Drv_Extra), /*57*/ 704 GEN_CMD_CODE(_Set_H2C_MSG), /*58*/ 705 706 GEN_CMD_CODE(_SetChannelPlan), /*59*/ 707 708 GEN_CMD_CODE(_SetChannelSwitch), /*60*/ 709 GEN_CMD_CODE(_TDLS), /*61*/ 710 GEN_CMD_CODE(_ChkBMCSleepq), /*62*/ 711 712 GEN_CMD_CODE(_RunInThreadCMD), /*63*/ 713 714 MAX_H2CCMD 715 }; 716 717 #define _GetBBReg_CMD_ _Read_BBREG_CMD_ 718 #define _SetBBReg_CMD_ _Write_BBREG_CMD_ 719 #define _GetRFReg_CMD_ _Read_RFREG_CMD_ 720 #define _SetRFReg_CMD_ _Write_RFREG_CMD_ 721 722 #endif /* _CMD_H_ */ 723