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