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};
 336
 337struct getdatarate_rsp {
 338        u8 datarates[NumRates];
 339};
 340
 341
 342/*
 343 *      Caller Mode: Any
 344 *      AP: AP can use the info for the contents of beacon frame
 345 *      Infra: STA can use the info when sitesurveying
 346 *      Ad-HoC(M): Like AP
 347 *      Ad-HoC(C): Like STA
 348 *
 349 *
 350 *      Notes: To set the phy capability of the NIC
 351 *
 352 *      Command Mode
 353 *
 354 */
 355
 356/*
 357 *      Caller Mode: Any
 358 *
 359 *      Notes: To set the channel/modem/band
 360 *      This command will be used when channel/modem/band is changed.
 361 *
 362 *      Command Mode
 363 *
 364 */
 365/*
 366 *      Caller Mode: Any
 367 *
 368 *      Notes: To get the current setting of channel/modem/band
 369 *
 370 *      Command-Rsp Mode
 371 *
 372 */
 373struct  getphy_rsp {
 374        u8      rfchannel;
 375        u8      modem;
 376};
 377
 378struct readBB_parm {
 379        u8      offset;
 380};
 381
 382struct readBB_rsp {
 383        u8      value;
 384};
 385
 386struct readTSSI_parm {
 387        u8      offset;
 388};
 389
 390struct readTSSI_rsp {
 391        u8      value;
 392};
 393
 394struct writeBB_parm {
 395        u8      offset;
 396        u8      value;
 397};
 398
 399struct writePTM_parm {
 400        u8      type;
 401};
 402
 403struct readRF_parm {
 404        u8      offset;
 405};
 406
 407struct readRF_rsp {
 408        u32     value;
 409};
 410
 411struct writeRF_parm {
 412        u32     offset;
 413        u32     value;
 414};
 415
 416struct setrfintfs_parm {
 417        u8      rfintfs;
 418};
 419
 420struct getrfintfs_parm {
 421        u8      rfintfs;
 422};
 423
 424/*
 425 *      Notes: This command is used for H2C/C2H loopback testing
 426 *
 427 *      mac[0] == 0
 428 *      ==> CMD mode, return H2C_SUCCESS.
 429 *      The following condition must be true under CMD mode
 430 *              mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0;
 431 *              s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7;
 432 *              s2 == (b1 << 8 | b0);
 433 *
 434 *      mac[0] == 1
 435 *      ==> CMD_RSP mode, return H2C_SUCCESS_RSP
 436 *
 437 *      The rsp layout shall be:
 438 *      rsp:                    parm:
 439 *              mac[0]  =   mac[5];
 440 *              mac[1]  =   mac[4];
 441 *              mac[2]  =   mac[3];
 442 *              mac[3]  =   mac[2];
 443 *              mac[4]  =   mac[1];
 444 *              mac[5]  =   mac[0];
 445 *              s0              =   s1;
 446 *              s1              =   swap16(s0);
 447 *              w0              =       swap32(w1);
 448 *              b0              =       b1
 449 *              s2              =       s0 + s1
 450 *              b1              =       b0
 451 *              w1              =       w0
 452 *
 453 *      mac[0] ==       2
 454 *      ==> CMD_EVENT mode, return      H2C_SUCCESS
 455 *      The event layout shall be:
 456 *      event:       parm:
 457 *      mac[0]  =   mac[5];
 458 *      mac[1]  =   mac[4];
 459 *      mac[2]  =   event's sequence number, starting from 1 to parm's marc[3]
 460 *      mac[3]  =   mac[2];
 461 *      mac[4]  =   mac[1];
 462 *      mac[5]  =   mac[0];
 463 *      s0              =   swap16(s0) - event.mac[2];
 464 *      s1              =   s1 + event.mac[2];
 465 *      w0              =       swap32(w0);
 466 *      b0              =       b1
 467 *      s2              =       s0 + event.mac[2]
 468 *      b1              =       b0
 469 *      w1              =       swap32(w1) - event.mac[2];
 470 *
 471 *      parm->mac[3] is the total event counts that host requested.
 472 *
 473 *
 474 *      event will be the same with the cmd's param.
 475 *
 476 */
 477
 478/* CMD param Formart for DRV INTERNAL CMD HDL*/
 479struct drvint_cmd_parm {
 480        int i_cid; /*internal cmd id*/
 481        int sz; /* buf sz*/
 482        unsigned char *pbuf;
 483};
 484
 485/*------------------- Below are used for RF/BB tuning ---------------------*/
 486
 487struct  setantenna_parm {
 488        u8      tx_antset;
 489        u8      rx_antset;
 490        u8      tx_antenna;
 491        u8      rx_antenna;
 492};
 493
 494struct  enrateadaptive_parm {
 495        u32     en;
 496};
 497
 498struct settxagctbl_parm {
 499        u32     txagc[MAX_RATES_LENGTH];
 500};
 501
 502struct gettxagctbl_parm {
 503        u32 rsvd;
 504};
 505
 506struct gettxagctbl_rsp {
 507        u32     txagc[MAX_RATES_LENGTH];
 508};
 509
 510struct setagcctrl_parm {
 511        u32     agcctrl;        /* 0: pure hw, 1: fw */
 512};
 513
 514struct setssup_parm     {
 515        u32     ss_ForceUp[MAX_RATES_LENGTH];
 516};
 517
 518struct getssup_parm     {
 519        u32 rsvd;
 520};
 521
 522struct getssup_rsp      {
 523        u8      ss_ForceUp[MAX_RATES_LENGTH];
 524};
 525
 526struct setssdlevel_parm {
 527        u8      ss_DLevel[MAX_RATES_LENGTH];
 528};
 529
 530struct getssdlevel_parm {
 531        u32 rsvd;
 532};
 533
 534struct getssdlevel_rsp  {
 535        u8      ss_DLevel[MAX_RATES_LENGTH];
 536};
 537
 538struct setssulevel_parm {
 539        u8      ss_ULevel[MAX_RATES_LENGTH];
 540};
 541
 542struct getssulevel_parm {
 543        u32 rsvd;
 544};
 545
 546struct getssulevel_rsp  {
 547        u8      ss_ULevel[MAX_RATES_LENGTH];
 548};
 549
 550struct  setcountjudge_parm {
 551        u8      count_judge[MAX_RATES_LENGTH];
 552};
 553
 554struct  getcountjudge_parm {
 555        u32 rsvd;
 556};
 557
 558struct  getcountjudge_rsp {
 559        u8      count_judge[MAX_RATES_LENGTH];
 560};
 561
 562struct setpwrmode_parm  {
 563        u8      mode;
 564        u8      flag_low_traffic_en;
 565        u8      flag_lpnav_en;
 566        u8      flag_rf_low_snr_en;
 567        u8      flag_dps_en; /* 1: dps, 0: 32k */
 568        u8      bcn_rx_en;
 569        u8      bcn_pass_cnt;     /* fw report one beacon information to
 570                                   * driver  when it receives bcn_pass_cnt
 571                                   * beacons.
 572                                   */
 573        u8      bcn_to;           /* beacon TO (ms). ¡§=0¡¨ no limit.*/
 574        u16     bcn_itv;
 575        u8      app_itv; /* only for VOIP mode. */
 576        u8      awake_bcn_itv;
 577        u8      smart_ps;
 578        u8      bcn_pass_time;  /* unit: 100ms */
 579};
 580
 581struct setatim_parm {
 582        u8 op;   /*0: add, 1:del*/
 583        u8 txid; /* id of dest station.*/
 584};
 585
 586struct setratable_parm {
 587        u8 ss_ForceUp[NumRates];
 588        u8 ss_ULevel[NumRates];
 589        u8 ss_DLevel[NumRates];
 590        u8 count_judge[NumRates];
 591};
 592
 593struct getratable_parm {
 594        uint rsvd;
 595};
 596
 597struct getratable_rsp {
 598        u8 ss_ForceUp[NumRates];
 599        u8 ss_ULevel[NumRates];
 600        u8 ss_DLevel[NumRates];
 601        u8 count_judge[NumRates];
 602};
 603
 604/*to get TX,RX retry count*/
 605struct gettxretrycnt_parm {
 606        unsigned int rsvd;
 607};
 608
 609struct gettxretrycnt_rsp {
 610        unsigned long tx_retrycnt;
 611};
 612
 613struct getrxretrycnt_parm {
 614        unsigned int rsvd;
 615};
 616
 617struct getrxretrycnt_rsp {
 618        unsigned long rx_retrycnt;
 619};
 620
 621/*to get BCNOK,BCNERR count*/
 622struct getbcnokcnt_parm {
 623        unsigned int rsvd;
 624};
 625
 626struct getbcnokcnt_rsp {
 627        unsigned long bcnokcnt;
 628};
 629
 630struct getbcnerrcnt_parm {
 631        unsigned int rsvd;
 632};
 633
 634struct getbcnerrcnt_rsp {
 635        unsigned long bcnerrcnt;
 636};
 637
 638/* to get current TX power level*/
 639struct getcurtxpwrlevel_parm {
 640        unsigned int rsvd;
 641};
 642
 643struct getcurtxpwrlevel_rsp {
 644        unsigned short tx_power;
 645};
 646
 647/*dynamic on/off DIG*/
 648struct setdig_parm {
 649        unsigned char dig_on;   /* 1:on , 0:off */
 650};
 651
 652/*dynamic on/off RA*/
 653struct setra_parm {
 654        unsigned char ra_on;    /* 1:on , 0:off */
 655};
 656
 657struct setprobereqextraie_parm {
 658        unsigned char e_id;
 659        unsigned char ie_len;
 660        unsigned char ie[0];
 661};
 662
 663struct setassocreqextraie_parm {
 664        unsigned char e_id;
 665        unsigned char ie_len;
 666        unsigned char ie[0];
 667};
 668
 669struct setproberspextraie_parm {
 670        unsigned char e_id;
 671        unsigned char ie_len;
 672        unsigned char ie[0];
 673};
 674
 675struct setassocrspextraie_parm {
 676        unsigned char e_id;
 677        unsigned char ie_len;
 678        unsigned char ie[0];
 679};
 680
 681struct addBaReq_parm {
 682        unsigned int tid;
 683};
 684
 685/*H2C Handler index: 46 */
 686struct SetChannel_parm {
 687        u32 curr_ch;
 688};
 689
 690/*H2C Handler index: 61 */
 691struct DisconnectCtrlEx_param {
 692        /* MAXTIME = (2 * FirstStageTO) + (TryPktCnt * TryPktInterval) */
 693        unsigned char EnableDrvCtrl;
 694        unsigned char TryPktCnt;
 695        unsigned char TryPktInterval; /* Unit: ms */
 696        unsigned char rsvd;
 697        unsigned int  FirstStageTO; /* Unit: ms */
 698};
 699
 700#define GEN_CMD_CODE(cmd)       cmd ## _CMD_
 701
 702/*
 703 * Result:
 704 * 0x00: success
 705 * 0x01: success, and check Response.
 706 * 0x02: cmd ignored due to duplicated sequence number
 707 * 0x03: cmd dropped due to invalid cmd code
 708 * 0x04: reserved.
 709 */
 710
 711#define H2C_RSP_OFFSET                  512
 712#define H2C_SUCCESS                     0x00
 713#define H2C_SUCCESS_RSP                 0x01
 714#define H2C_DUPLICATED                  0x02
 715#define H2C_DROPPED                     0x03
 716#define H2C_PARAMETERS_ERROR            0x04
 717#define H2C_REJECTED                    0x05
 718#define H2C_CMD_OVERFLOW                0x06
 719#define H2C_RESERVED                    0x07
 720
 721void r8712_setMacAddr_cmd(struct _adapter *padapter, u8 *mac_addr);
 722u8 r8712_sitesurvey_cmd(struct _adapter *padapter,
 723                        struct ndis_802_11_ssid *pssid);
 724int r8712_createbss_cmd(struct _adapter *padapter);
 725void r8712_setstakey_cmd(struct _adapter *padapter, u8 *psta, u8 unicast_key);
 726int r8712_joinbss_cmd(struct _adapter *padapter,
 727                      struct wlan_network *pnetwork);
 728void r8712_disassoc_cmd(struct _adapter *padapter);
 729void r8712_setopmode_cmd(struct _adapter *padapter,
 730                 enum NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
 731int r8712_setdatarate_cmd(struct _adapter *padapter, u8 *rateset);
 732void r8712_set_chplan_cmd(struct _adapter  *padapter, int chplan);
 733int r8712_getrfreg_cmd(struct _adapter *padapter, u8 offset, u8 *pval);
 734int r8712_setrfreg_cmd(struct _adapter  *padapter, u8 offset, u32 val);
 735void r8712_addbareq_cmd(struct _adapter *padapter, u8 tid);
 736void r8712_wdg_wk_cmd(struct _adapter *padapter);
 737void r8712_survey_cmd_callback(struct _adapter  *padapter,
 738                               struct cmd_obj *pcmd);
 739void r8712_disassoc_cmd_callback(struct _adapter  *padapter,
 740                                 struct cmd_obj *pcmd);
 741void r8712_joinbss_cmd_callback(struct _adapter  *padapter,
 742                                struct cmd_obj *pcmd);
 743void r8712_createbss_cmd_callback(struct _adapter *padapter,
 744                                  struct cmd_obj *pcmd);
 745void r8712_getbbrfreg_cmdrsp_callback(struct _adapter *padapter,
 746                                      struct cmd_obj *pcmd);
 747void r8712_readtssi_cmdrsp_callback(struct _adapter *padapter,
 748                                struct cmd_obj *pcmd);
 749void r8712_setstaKey_cmdrsp_callback(struct _adapter  *padapter,
 750                                     struct cmd_obj *pcmd);
 751void r8712_setassocsta_cmdrsp_callback(struct _adapter  *padapter,
 752                                       struct cmd_obj *pcmd);
 753void r8712_disconnectCtrlEx_cmd(struct _adapter *adapter, u32 enableDrvCtrl,
 754                        u32 tryPktCnt, u32 tryPktInterval, u32 firstStageTO);
 755
 756struct _cmd_callback {
 757        u32     cmd_code;
 758        void (*callback)(struct _adapter  *padapter, struct cmd_obj *cmd);
 759};
 760
 761#include "rtl8712_cmd.h"
 762
 763#endif /* _CMD_H_ */
 764
 765