linux/drivers/staging/rtl8712/rtl871x_cmd.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
   5 *
   6 * Modifications for inclusion into the Linux staging tree are
   7 * Copyright(c) 2010 Larry Finger. All rights reserved.
   8 *
   9 * Contact information:
  10 * WLAN FAE <wlanfae@realtek.com>
  11 * Larry Finger <Larry.Finger@lwfinger.net>
  12 *
  13 ******************************************************************************/
  14#ifndef __RTL871X_CMD_H_
  15#define __RTL871X_CMD_H_
  16
  17#include "wlan_bssdef.h"
  18#include "rtl871x_rf.h"
  19#define C2H_MEM_SZ (16*1024)
  20
  21#include "osdep_service.h"
  22#include "ieee80211.h"
  23
  24#define FREE_CMDOBJ_SZ  128
  25#define MAX_CMDSZ       512
  26#define MAX_RSPSZ       512
  27#define MAX_EVTSZ       1024
  28#define CMDBUFF_ALIGN_SZ 512
  29
  30struct cmd_obj {
  31        u16     cmdcode;
  32        u8      res;
  33        u8      *parmbuf;
  34        u32     cmdsz;
  35        u8      *rsp;
  36        u32     rspsz;
  37        struct list_head list;
  38};
  39
  40struct 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        struct _adapter *padapter;
  53};
  54
  55struct evt_obj {
  56        u16 evtcode;
  57        u8 res;
  58        u8 *parmbuf;
  59        u32 evtsz;
  60        struct list_head list;
  61};
  62
  63struct  evt_priv {
  64        struct  __queue evt_queue;
  65        u8      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        struct tasklet_struct event_tasklet;
  70};
  71
  72#define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \
  73do {\
  74        INIT_LIST_HEAD(&pcmd->list);\
  75        pcmd->cmdcode = code;\
  76        pcmd->parmbuf = (u8 *)(pparm);\
  77        pcmd->cmdsz = sizeof(*pparm);\
  78        pcmd->rsp = NULL;\
  79        pcmd->rspsz = 0;\
  80} while (0)
  81
  82void r8712_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *obj);
  83void r8712_enqueue_cmd_ex(struct cmd_priv *pcmdpriv, struct cmd_obj *obj);
  84struct cmd_obj *r8712_dequeue_cmd(struct  __queue *queue);
  85void r8712_free_cmd_obj(struct cmd_obj *pcmd);
  86int r8712_cmd_thread(void *context);
  87int r8712_init_cmd_priv(struct cmd_priv *pcmdpriv);
  88void r8712_free_cmd_priv(struct cmd_priv *pcmdpriv);
  89int r8712_init_evt_priv(struct evt_priv *pevtpriv);
  90void r8712_free_evt_priv(struct evt_priv *pevtpriv);
  91
  92enum rtl871x_drvint_cid {
  93        NONE_WK_CID,
  94        WDG_WK_CID,
  95        MAX_WK_CID
  96};
  97
  98enum RFINTFS {
  99        SWSI,
 100        HWSI,
 101        HWPI,
 102};
 103
 104/*
 105 * Caller Mode: Infra, Ad-HoC(C)
 106 * Notes: To enter USB suspend mode
 107 * Command Mode
 108 */
 109struct usb_suspend_parm {
 110        u32 action; /* 1: sleep, 0:resume */
 111};
 112
 113/*
 114 * Caller Mode: Infra, Ad-HoC(C)
 115 * Notes: To disconnect the current associated BSS
 116 * Command Mode
 117 */
 118struct disconnect_parm {
 119        u32 rsvd;
 120};
 121
 122/*
 123 * Caller Mode: AP, Ad-HoC, Infra
 124 * Notes: To set the NIC mode of RTL8711
 125 * Command Mode
 126 * The definition of mode:
 127 *
 128 * #define IW_MODE_AUTO 0       // Let the driver decides which AP to join
 129 * #define IW_MODE_ADHOC        1       // Single cell network (Ad-Hoc Clients)
 130 * #define IW_MODE_INFRA        2       // Multi cell network, roaming, ..
 131 * #define IW_MODE_MASTER       3       // Synchronisation master or AP
 132 * #define IW_MODE_REPEAT       4       // Wireless Repeater (forwarder)
 133 * #define IW_MODE_SECOND       5       // Secondary master/repeater (backup)
 134 * #define IW_MODE_MONITOR      6       // Passive monitor (listen only)
 135 */
 136struct  setopmode_parm {
 137        u8      mode;
 138        u8      rsvd[3];
 139};
 140
 141/*
 142 * Caller Mode: AP, Ad-HoC, Infra
 143 * Notes: To ask RTL8711 performing site-survey
 144 * Command-Event Mode
 145 */
 146struct sitesurvey_parm {
 147        __le32  passive_mode;   /*active: 1, passive: 0 */
 148        __le32  bsslimit;       /* 1 ~ 48 */
 149        __le32  ss_ssidlen;
 150        u8      ss_ssid[IW_ESSID_MAX_SIZE + 1];
 151};
 152
 153/*
 154 * Caller Mode: Any
 155 * Notes: To set the auth type of RTL8711. open/shared/802.1x
 156 * Command Mode
 157 */
 158struct setauth_parm {
 159        u8 mode;  /*0: legacy open, 1: legacy shared 2: 802.1x*/
 160        u8 _1x;   /*0: PSK, 1: TLS*/
 161        u8 rsvd[2];
 162};
 163
 164/*
 165 * Caller Mode: Infra
 166 * a. algorithm: wep40, wep104, tkip & aes
 167 * b. keytype: grp key/unicast key
 168 * c. key contents
 169 *
 170 * when shared key ==> keyid is the camid
 171 * when 802.1x ==> keyid [0:1] ==> grp key
 172 * when 802.1x ==> keyid > 2 ==> unicast key
 173 */
 174struct setkey_parm {
 175        u8      algorithm;      /* encryption algorithm, could be none, wep40,
 176                                 * TKIP, CCMP, wep104
 177                                 */
 178        u8      keyid;
 179        u8      grpkey;         /* 1: this is the grpkey for 802.1x.
 180                                 * 0: this is the unicast key for 802.1x
 181                                 */
 182        u8      key[16];        /* this could be 40 or 104 */
 183};
 184
 185/*
 186 * When in AP or Ad-Hoc mode, this is used to
 187 * allocate an sw/hw entry for a newly associated sta.
 188 * Command
 189 * when shared key ==> algorithm/keyid
 190 */
 191struct set_stakey_parm {
 192        u8      addr[ETH_ALEN];
 193        u8      algorithm;
 194        u8      key[16];
 195};
 196
 197struct set_stakey_rsp {
 198        u8      addr[ETH_ALEN];
 199        u8      keyid;
 200        u8      rsvd;
 201};
 202
 203struct SetMacAddr_param {
 204        u8      MacAddr[ETH_ALEN];
 205};
 206
 207/*
 208 *      Caller Ad-Hoc/AP
 209 *
 210 *      Command -Rsp(AID == CAMID) mode
 211 *
 212 *      This is to force fw to add an sta_data entry per driver's request.
 213 *
 214 *      FW will write an cam entry associated with it.
 215 *
 216 */
 217struct set_assocsta_parm {
 218        u8      addr[ETH_ALEN];
 219};
 220
 221struct set_assocsta_rsp {
 222        u8      cam_id;
 223        u8      rsvd[3];
 224};
 225
 226/*
 227 *      Caller Ad-Hoc/AP
 228 *
 229 *      Command mode
 230 *
 231 *      This is to force fw to del an sta_data entry per driver's request
 232 *
 233 *      FW will invalidate the cam entry associated with it.
 234 *
 235 */
 236struct del_assocsta_parm {
 237        u8      addr[ETH_ALEN];
 238};
 239
 240/*
 241 *      Caller Mode: AP/Ad-HoC(M)
 242 *
 243 *      Notes: To notify fw that given staid has changed its power state
 244 *
 245 *      Command Mode
 246 *
 247 */
 248struct setstapwrstate_parm {
 249        u8      staid;
 250        u8      status;
 251        u8      hwaddr[6];
 252};
 253
 254/*
 255 *      Caller Mode: Any
 256 *
 257 *      Notes: To setup the basic rate of RTL8711
 258 *
 259 *      Command Mode
 260 *
 261 */
 262struct  setbasicrate_parm {
 263        u8      basicrates[NumRates];
 264};
 265
 266/*
 267 *      Caller Mode: Any
 268 *
 269 *      Notes: To read the current basic rate
 270 *
 271 *      Command-Rsp Mode
 272 *
 273 */
 274struct getbasicrate_parm {
 275        u32 rsvd;
 276};
 277
 278struct getbasicrate_rsp {
 279        u8 basicrates[NumRates];
 280};
 281
 282/*
 283 *      Caller Mode: Any
 284 *
 285 *      Notes: To setup the data rate of RTL8711
 286 *
 287 *      Command Mode
 288 *
 289 */
 290struct setdatarate_parm {
 291        u8      mac_id;
 292        u8      datarates[NumRates];
 293};
 294
 295enum _RT_CHANNEL_DOMAIN {
 296        RT_CHANNEL_DOMAIN_FCC = 0,
 297        RT_CHANNEL_DOMAIN_IC = 1,
 298        RT_CHANNEL_DOMAIN_ETSI = 2,
 299        RT_CHANNEL_DOMAIN_SPAIN = 3,
 300        RT_CHANNEL_DOMAIN_FRANCE = 4,
 301        RT_CHANNEL_DOMAIN_MKK = 5,
 302        RT_CHANNEL_DOMAIN_MKK1 = 6,
 303        RT_CHANNEL_DOMAIN_ISRAEL = 7,
 304        RT_CHANNEL_DOMAIN_TELEC = 8,
 305
 306        /* Be compatible with old channel plan. No good! */
 307        RT_CHANNEL_DOMAIN_MIC = 9,
 308        RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN = 10,
 309        RT_CHANNEL_DOMAIN_WORLD_WIDE_13 = 11,
 310        RT_CHANNEL_DOMAIN_TELEC_NETGEAR = 12,
 311
 312        RT_CHANNEL_DOMAIN_NCC = 13,
 313        RT_CHANNEL_DOMAIN_5G = 14,
 314        RT_CHANNEL_DOMAIN_5G_40M = 15,
 315 /*===== Add new channel plan above this line===============*/
 316        RT_CHANNEL_DOMAIN_MAX,
 317};
 318
 319
 320struct SetChannelPlan_param {
 321        enum _RT_CHANNEL_DOMAIN ChannelPlan;
 322};
 323
 324/*
 325 *      Caller Mode: Any
 326 *
 327 *      Notes: To read the current data rate
 328 *
 329 *      Command-Rsp Mode
 330 *
 331 */
 332struct getdatarate_parm {
 333        u32 rsvd;
 334
 335};
 336struct getdatarate_rsp {
 337        u8 datarates[NumRates];
 338};
 339
 340
 341/*
 342 *      Caller Mode: Any
 343 *      AP: AP can use the info for the contents of beacon frame
 344 *      Infra: STA can use the info when sitesurveying
 345 *      Ad-HoC(M): Like AP
 346 *      Ad-HoC(C): Like STA
 347 *
 348 *
 349 *      Notes: To set the phy capability of the NIC
 350 *
 351 *      Command Mode
 352 *
 353 */
 354
 355/*
 356 *      Caller Mode: Any
 357 *
 358 *      Notes: To set the channel/modem/band
 359 *      This command will be used when channel/modem/band is changed.
 360 *
 361 *      Command Mode
 362 *
 363 */
 364/*
 365 *      Caller Mode: Any
 366 *
 367 *      Notes: To get the current setting of channel/modem/band
 368 *
 369 *      Command-Rsp Mode
 370 *
 371 */
 372struct  getphy_rsp {
 373        u8      rfchannel;
 374        u8      modem;
 375};
 376
 377struct readBB_parm {
 378        u8      offset;
 379};
 380struct readBB_rsp {
 381        u8      value;
 382};
 383
 384struct readTSSI_parm {
 385        u8      offset;
 386};
 387struct readTSSI_rsp {
 388        u8      value;
 389};
 390
 391struct writeBB_parm {
 392        u8      offset;
 393        u8      value;
 394};
 395
 396struct writePTM_parm {
 397        u8      type;
 398};
 399
 400struct readRF_parm {
 401        u8      offset;
 402};
 403struct readRF_rsp {
 404        u32     value;
 405};
 406
 407struct writeRF_parm {
 408        u32     offset;
 409        u32     value;
 410};
 411
 412struct setrfintfs_parm {
 413        u8      rfintfs;
 414};
 415
 416struct getrfintfs_parm {
 417        u8      rfintfs;
 418};
 419
 420/*
 421 *      Notes: This command is used for H2C/C2H loopback testing
 422 *
 423 *      mac[0] == 0
 424 *      ==> CMD mode, return H2C_SUCCESS.
 425 *      The following condition must be true under CMD mode
 426 *              mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0;
 427 *              s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7;
 428 *              s2 == (b1 << 8 | b0);
 429 *
 430 *      mac[0] == 1
 431 *      ==> CMD_RSP mode, return H2C_SUCCESS_RSP
 432 *
 433 *      The rsp layout shall be:
 434 *      rsp:                    parm:
 435 *              mac[0]  =   mac[5];
 436 *              mac[1]  =   mac[4];
 437 *              mac[2]  =   mac[3];
 438 *              mac[3]  =   mac[2];
 439 *              mac[4]  =   mac[1];
 440 *              mac[5]  =   mac[0];
 441 *              s0              =   s1;
 442 *              s1              =   swap16(s0);
 443 *              w0              =       swap32(w1);
 444 *              b0              =       b1
 445 *              s2              =       s0 + s1
 446 *              b1              =       b0
 447 *              w1              =       w0
 448 *
 449 *      mac[0] ==       2
 450 *      ==> CMD_EVENT mode, return      H2C_SUCCESS
 451 *      The event layout shall be:
 452 *      event:       parm:
 453 *      mac[0]  =   mac[5];
 454 *      mac[1]  =   mac[4];
 455 *      mac[2]  =   event's sequence number, starting from 1 to parm's marc[3]
 456 *      mac[3]  =   mac[2];
 457 *      mac[4]  =   mac[1];
 458 *      mac[5]  =   mac[0];
 459 *      s0              =   swap16(s0) - event.mac[2];
 460 *      s1              =   s1 + event.mac[2];
 461 *      w0              =       swap32(w0);
 462 *      b0              =       b1
 463 *      s2              =       s0 + event.mac[2]
 464 *      b1              =       b0
 465 *      w1              =       swap32(w1) - event.mac[2];
 466 *
 467 *      parm->mac[3] is the total event counts that host requested.
 468 *
 469 *
 470 *      event will be the same with the cmd's param.
 471 *
 472 */
 473
 474/* CMD param Formart for DRV INTERNAL CMD HDL*/
 475struct drvint_cmd_parm {
 476        int i_cid; /*internal cmd id*/
 477        int sz; /* buf sz*/
 478        unsigned char *pbuf;
 479};
 480
 481/*------------------- Below are used for RF/BB tunning ---------------------*/
 482
 483struct  setantenna_parm {
 484        u8      tx_antset;
 485        u8      rx_antset;
 486        u8      tx_antenna;
 487        u8      rx_antenna;
 488};
 489
 490struct  enrateadaptive_parm {
 491        u32     en;
 492};
 493
 494struct settxagctbl_parm {
 495        u32     txagc[MAX_RATES_LENGTH];
 496};
 497
 498struct gettxagctbl_parm {
 499        u32 rsvd;
 500};
 501struct gettxagctbl_rsp {
 502        u32     txagc[MAX_RATES_LENGTH];
 503};
 504
 505struct setagcctrl_parm {
 506        u32     agcctrl;        /* 0: pure hw, 1: fw */
 507};
 508
 509struct setssup_parm     {
 510        u32     ss_ForceUp[MAX_RATES_LENGTH];
 511};
 512
 513struct getssup_parm     {
 514        u32 rsvd;
 515};
 516struct getssup_rsp      {
 517        u8      ss_ForceUp[MAX_RATES_LENGTH];
 518};
 519
 520struct setssdlevel_parm {
 521        u8      ss_DLevel[MAX_RATES_LENGTH];
 522};
 523
 524struct getssdlevel_parm {
 525        u32 rsvd;
 526};
 527struct getssdlevel_rsp  {
 528        u8      ss_DLevel[MAX_RATES_LENGTH];
 529};
 530
 531struct setssulevel_parm {
 532        u8      ss_ULevel[MAX_RATES_LENGTH];
 533};
 534
 535struct getssulevel_parm {
 536        u32 rsvd;
 537};
 538struct getssulevel_rsp  {
 539        u8      ss_ULevel[MAX_RATES_LENGTH];
 540};
 541
 542struct  setcountjudge_parm {
 543        u8      count_judge[MAX_RATES_LENGTH];
 544};
 545
 546struct  getcountjudge_parm {
 547        u32 rsvd;
 548};
 549
 550struct  getcountjudge_rsp {
 551        u8      count_judge[MAX_RATES_LENGTH];
 552};
 553
 554struct setpwrmode_parm  {
 555        u8      mode;
 556        u8      flag_low_traffic_en;
 557        u8      flag_lpnav_en;
 558        u8      flag_rf_low_snr_en;
 559        u8      flag_dps_en; /* 1: dps, 0: 32k */
 560        u8      bcn_rx_en;
 561        u8      bcn_pass_cnt;     /* fw report one beacon information to
 562                                   * driver  when it receives bcn_pass_cnt
 563                                   * beacons.
 564                                   */
 565        u8      bcn_to;           /* beacon TO (ms). ¡§=0¡¨ no limit.*/
 566        u16     bcn_itv;
 567        u8      app_itv; /* only for VOIP mode. */
 568        u8      awake_bcn_itv;
 569        u8      smart_ps;
 570        u8      bcn_pass_time;  /* unit: 100ms */
 571};
 572
 573struct setatim_parm {
 574        u8 op;   /*0: add, 1:del*/
 575        u8 txid; /* id of dest station.*/
 576};
 577
 578struct setratable_parm {
 579        u8 ss_ForceUp[NumRates];
 580        u8 ss_ULevel[NumRates];
 581        u8 ss_DLevel[NumRates];
 582        u8 count_judge[NumRates];
 583};
 584
 585struct getratable_parm {
 586        uint rsvd;
 587};
 588struct getratable_rsp {
 589        u8 ss_ForceUp[NumRates];
 590        u8 ss_ULevel[NumRates];
 591        u8 ss_DLevel[NumRates];
 592        u8 count_judge[NumRates];
 593};
 594
 595/*to get TX,RX retry count*/
 596struct gettxretrycnt_parm {
 597        unsigned int rsvd;
 598};
 599
 600struct gettxretrycnt_rsp {
 601        unsigned long tx_retrycnt;
 602};
 603
 604struct getrxretrycnt_parm {
 605        unsigned int rsvd;
 606};
 607
 608struct getrxretrycnt_rsp {
 609        unsigned long rx_retrycnt;
 610};
 611
 612/*to get BCNOK,BCNERR count*/
 613struct getbcnokcnt_parm {
 614        unsigned int rsvd;
 615};
 616
 617struct getbcnokcnt_rsp {
 618        unsigned long bcnokcnt;
 619};
 620
 621struct getbcnerrcnt_parm {
 622        unsigned int rsvd;
 623};
 624struct getbcnerrcnt_rsp {
 625        unsigned long bcnerrcnt;
 626};
 627
 628/* to get current TX power level*/
 629struct getcurtxpwrlevel_parm {
 630        unsigned int rsvd;
 631};
 632
 633struct getcurtxpwrlevel_rsp {
 634        unsigned short tx_power;
 635};
 636
 637/*dynamic on/off DIG*/
 638struct setdig_parm {
 639        unsigned char dig_on;   /* 1:on , 0:off */
 640};
 641
 642/*dynamic on/off RA*/
 643struct setra_parm {
 644        unsigned char ra_on;    /* 1:on , 0:off */
 645};
 646
 647struct setprobereqextraie_parm {
 648        unsigned char e_id;
 649        unsigned char ie_len;
 650        unsigned char ie[0];
 651};
 652
 653struct setassocreqextraie_parm {
 654        unsigned char e_id;
 655        unsigned char ie_len;
 656        unsigned char ie[0];
 657};
 658
 659struct setproberspextraie_parm {
 660        unsigned char e_id;
 661        unsigned char ie_len;
 662        unsigned char ie[0];
 663};
 664
 665struct setassocrspextraie_parm {
 666        unsigned char e_id;
 667        unsigned char ie_len;
 668        unsigned char ie[0];
 669};
 670
 671struct addBaReq_parm {
 672        unsigned int tid;
 673};
 674
 675/*H2C Handler index: 46 */
 676struct SetChannel_parm {
 677        u32 curr_ch;
 678};
 679
 680/*H2C Handler index: 61 */
 681struct DisconnectCtrlEx_param {
 682        /* MAXTIME = (2 * FirstStageTO) + (TryPktCnt * TryPktInterval) */
 683        unsigned char EnableDrvCtrl;
 684        unsigned char TryPktCnt;
 685        unsigned char TryPktInterval; /* Unit: ms */
 686        unsigned char rsvd;
 687        unsigned int  FirstStageTO; /* Unit: ms */
 688};
 689
 690#define GEN_CMD_CODE(cmd)       cmd ## _CMD_
 691
 692/*
 693 * Result:
 694 * 0x00: success
 695 * 0x01: success, and check Response.
 696 * 0x02: cmd ignored due to duplicated sequence number
 697 * 0x03: cmd dropped due to invalid cmd code
 698 * 0x04: reserved.
 699 */
 700
 701#define H2C_RSP_OFFSET                  512
 702#define H2C_SUCCESS                     0x00
 703#define H2C_SUCCESS_RSP                 0x01
 704#define H2C_DUPLICATED                  0x02
 705#define H2C_DROPPED                     0x03
 706#define H2C_PARAMETERS_ERROR            0x04
 707#define H2C_REJECTED                    0x05
 708#define H2C_CMD_OVERFLOW                0x06
 709#define H2C_RESERVED                    0x07
 710
 711void r8712_setMacAddr_cmd(struct _adapter *padapter, u8 *mac_addr);
 712u8 r8712_sitesurvey_cmd(struct _adapter *padapter,
 713                        struct ndis_802_11_ssid *pssid);
 714int r8712_createbss_cmd(struct _adapter *padapter);
 715void r8712_setstakey_cmd(struct _adapter *padapter, u8 *psta, u8 unicast_key);
 716int r8712_joinbss_cmd(struct _adapter *padapter,
 717                      struct wlan_network *pnetwork);
 718void r8712_disassoc_cmd(struct _adapter *padapter);
 719void r8712_setopmode_cmd(struct _adapter *padapter,
 720                 enum NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
 721int r8712_setdatarate_cmd(struct _adapter *padapter, u8 *rateset);
 722void r8712_set_chplan_cmd(struct _adapter  *padapter, int chplan);
 723int r8712_getrfreg_cmd(struct _adapter *padapter, u8 offset, u8 *pval);
 724int r8712_setrfreg_cmd(struct _adapter  *padapter, u8 offset, u32 val);
 725void r8712_addbareq_cmd(struct _adapter *padapter, u8 tid);
 726void r8712_wdg_wk_cmd(struct _adapter *padapter);
 727void r8712_survey_cmd_callback(struct _adapter  *padapter,
 728                               struct cmd_obj *pcmd);
 729void r8712_disassoc_cmd_callback(struct _adapter  *padapter,
 730                                 struct cmd_obj *pcmd);
 731void r8712_joinbss_cmd_callback(struct _adapter  *padapter,
 732                                struct cmd_obj *pcmd);
 733void r8712_createbss_cmd_callback(struct _adapter *padapter,
 734                                  struct cmd_obj *pcmd);
 735void r8712_getbbrfreg_cmdrsp_callback(struct _adapter *padapter,
 736                                      struct cmd_obj *pcmd);
 737void r8712_readtssi_cmdrsp_callback(struct _adapter *padapter,
 738                                struct cmd_obj *pcmd);
 739void r8712_setstaKey_cmdrsp_callback(struct _adapter  *padapter,
 740                                     struct cmd_obj *pcmd);
 741void r8712_setassocsta_cmdrsp_callback(struct _adapter  *padapter,
 742                                       struct cmd_obj *pcmd);
 743void r8712_disconnectCtrlEx_cmd(struct _adapter *adapter, u32 enableDrvCtrl,
 744                        u32 tryPktCnt, u32 tryPktInterval, u32 firstStageTO);
 745
 746struct _cmd_callback {
 747        u32     cmd_code;
 748        void (*callback)(struct _adapter  *padapter, struct cmd_obj *cmd);
 749};
 750
 751#include "rtl8712_cmd.h"
 752
 753#endif /* _CMD_H_ */
 754
 755