OSDN Git Service

Use the kernel's atomic operations directly
[android-x86/external-modules-rtl8723au.git] / include / rtw_cmd.h
old mode 100755 (executable)
new mode 100644 (file)
index 183d58e..98ba219
                u32     cmdsz;
                u8      *rsp;
                u32     rspsz;
-               //_sema         cmd_sem;
-               _list   list;
+               //struct semaphore              cmd_sem;
+               struct list_head        list;
        };
 
        struct cmd_priv {
-               _sema   cmd_queue_sema;
-               //_sema cmd_done_sema;
-               _sema   terminate_cmdthread_sema;
+               struct semaphore        cmd_queue_sema;
+               //struct semaphore      cmd_done_sema;
+               struct semaphore        terminate_cmdthread_sema;
                _queue  cmd_queue;
                u8      cmd_seq;
                u8      *cmd_buf;       //shall be non-paged, and 4 bytes aligned
                u8      res;
                u8      *parmbuf;
                u32     evtsz;
-               _list   list;
+               struct list_head        list;
        };
 #endif
 
        struct  evt_priv {
 #ifdef CONFIG_EVENT_THREAD_MODE
-               _sema   evt_notify;
-               _sema   terminate_evtthread_sema;
+               struct semaphore        evt_notify;
+               struct semaphore        terminate_evtthread_sema;
                _queue  evt_queue;
 #endif
 
+#define CONFIG_C2H_WK
+#ifdef CONFIG_C2H_WK
+               _workitem c2h_wk;
+               bool c2h_wk_alive;
+               struct rtw_cbuf *c2h_queue;
+               #define C2H_QUEUE_MAX_LEN 10
+#endif
+
 #ifdef CONFIG_H2CLBK
-               _sema   lbkevt_done;
+               struct semaphore        lbkevt_done;
                u8      lbkevt_limit;
                u8      lbkevt_num;
                u8      *cmdevt_parm;
 #endif
-               ATOMIC_T event_seq;
+               atomic_t event_seq;
                u8      *evt_buf;       //shall be non-paged, and 4 bytes aligned
                u8      *evt_allocated_buf;
                u32     evt_done_cnt;
-#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
-               u8      *c2h_mem;
-               u8      *allocated_c2h_mem;
-#endif
-
        };
 
 #define init_h2fwcmd_w_parm_no_rsp(pcmd, pparm, code) \
 do {\
-       _rtw_init_listhead(&pcmd->list);\
+       INIT_LIST_HEAD(&pcmd->list);\
        pcmd->cmdcode = code;\
        pcmd->parmbuf = (u8 *)(pparm);\
        pcmd->cmdsz = sizeof (*pparm);\
@@ -162,7 +165,6 @@ enum rtw_drvextra_cmd_id
        P2P_PS_WK_CID,
        P2P_PROTO_WK_CID,
        CHECK_HIQ_WK_CID,//for softap mode, check hi queue if empty
-       INTEl_WIDI_WK_CID,
        C2H_WK_CID,
        RTP_TIMER_CFG_WK_CID,
        MAX_WK_CID
@@ -226,7 +228,7 @@ Command Mode
 
 */
 struct disconnect_parm {
-       u32 rsvd;
+       u32 deauth_timeout_ms;
 };
 
 /*
@@ -273,11 +275,14 @@ Command-Event Mode
 */
 
 #define RTW_SSID_SCAN_AMOUNT 9 // for WEXT_CSCAN_AMOUNT 9
+#define RTW_CHANNEL_SCAN_AMOUNT (14+37)
 struct sitesurvey_parm {
-       sint scan_mode; //active: 1, passive: 0
-       sint bsslimit;  // 1 ~ 48
-       // for up to 9 probreq with specific ssid
+       int scan_mode;  //active: 1, passive: 0
+       /* int bsslimit;        // 1 ~ 48 */
+       u8 ssid_num;
+       u8 ch_num;
        NDIS_802_11_SSID ssid[RTW_SSID_SCAN_AMOUNT];
+       struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
 };
 
 /*
@@ -438,8 +443,8 @@ Command-Rsp Mode
 */
 struct getdatarate_parm {
        u32 rsvd;
-
 };
+
 struct getdatarate_rsp {
        u8 datarates[NumRates];
 };
@@ -497,8 +502,8 @@ Command-Rsp Mode
 */
 struct getphy_parm {
        u32 rsvd;
-
 };
+
 struct getphy_rsp {
        u8      rfchannel;
        u8      modem;
@@ -507,6 +512,7 @@ struct      getphy_rsp {
 struct readBB_parm {
        u8      offset;
 };
+
 struct readBB_rsp {
        u8      value;
 };
@@ -514,6 +520,7 @@ struct readBB_rsp {
 struct readTSSI_parm {
        u8      offset;
 };
+
 struct readTSSI_rsp {
        u8      value;
 };
@@ -526,6 +533,7 @@ struct writeBB_parm {
 struct readRF_parm {
        u8      offset;
 };
+
 struct readRF_rsp {
        u32     value;
 };
@@ -539,66 +547,11 @@ struct getrfintfs_parm {
        u8      rfintfs;
 };
 
-
 struct Tx_Beacon_param
 {
        WLAN_BSSID_EX network;
 };
 
-/*
-       Notes: This command is used for H2C/C2H loopback testing
-
-       mac[0] == 0
-       ==> CMD mode, return H2C_SUCCESS.
-       The following condition must be ture under CMD mode
-               mac[1] == mac[4], mac[2] == mac[3], mac[0]=mac[5]= 0;
-               s0 == 0x1234, s1 == 0xabcd, w0 == 0x78563412, w1 == 0x5aa5def7;
-               s2 == (b1 << 8 | b0);
-
-       mac[0] == 1
-       ==> CMD_RSP mode, return H2C_SUCCESS_RSP
-
-       The rsp layout shall be:
-       rsp:                    parm:
-               mac[0]  =   mac[5];
-               mac[1]  =   mac[4];
-               mac[2]  =   mac[3];
-               mac[3]  =   mac[2];
-               mac[4]  =   mac[1];
-               mac[5]  =   mac[0];
-               s0              =   s1;
-               s1              =   swap16(s0);
-               w0              =       swap32(w1);
-               b0              =       b1
-               s2              =       s0 + s1
-               b1              =       b0
-               w1              =       w0
-
-       mac[0] ==       2
-       ==> CMD_EVENT mode, return      H2C_SUCCESS
-       The event layout shall be:
-       event:                  parm:
-               mac[0]  =   mac[5];
-               mac[1]  =   mac[4];
-               mac[2]  =   event's sequence number, starting from 1 to parm's marc[3]
-               mac[3]  =   mac[2];
-               mac[4]  =   mac[1];
-               mac[5]  =   mac[0];
-               s0              =   swap16(s0) - event.mac[2];
-               s1              =   s1 + event.mac[2];
-               w0              =       swap32(w0);
-               b0              =       b1
-               s2              =       s0 + event.mac[2]
-               b1              =       b0
-               w1              =       swap32(w1) - event.mac[2];
-
-               parm->mac[3] is the total event counts that host requested.
-
-
-       event will be the same with the cmd's param.
-
-*/
-
 #ifdef CONFIG_H2CLBK
 
 struct seth2clbk_parm {
@@ -656,6 +609,7 @@ struct settxagctbl_parm {
 struct gettxagctbl_parm {
        u32 rsvd;
 };
+
 struct gettxagctbl_rsp {
        u32     txagc[MAX_RATES_LENGTH];
 };
@@ -664,7 +618,6 @@ struct setagcctrl_parm {
        u32     agcctrl;                // 0: pure hw, 1: fw
 };
 
-
 struct setssup_parm    {
        u32     ss_ForceUp[MAX_RATES_LENGTH];
 };
@@ -672,11 +625,11 @@ struct setssup_parm       {
 struct getssup_parm    {
        u32 rsvd;
 };
+
 struct getssup_rsp     {
        u8      ss_ForceUp[MAX_RATES_LENGTH];
 };
 
-
 struct setssdlevel_parm        {
        u8      ss_DLevel[MAX_RATES_LENGTH];
 };
@@ -684,6 +637,7 @@ struct setssdlevel_parm     {
 struct getssdlevel_parm        {
        u32 rsvd;
 };
+
 struct getssdlevel_rsp {
        u8      ss_DLevel[MAX_RATES_LENGTH];
 };
@@ -695,11 +649,11 @@ struct setssulevel_parm   {
 struct getssulevel_parm        {
        u32 rsvd;
 };
+
 struct getssulevel_rsp {
        u8      ss_ULevel[MAX_RATES_LENGTH];
 };
 
-
 struct setcountjudge_parm {
        u8      count_judge[MAX_RATES_LENGTH];
 };
@@ -707,11 +661,11 @@ struct    setcountjudge_parm {
 struct getcountjudge_parm {
        u32 rsvd;
 };
+
 struct getcountjudge_rsp {
        u8      count_judge[MAX_RATES_LENGTH];
 };
 
-
 struct setratable_parm {
        u8 ss_ForceUp[NumRates];
        u8 ss_ULevel[NumRates];
@@ -722,6 +676,7 @@ struct setratable_parm {
 struct getratable_parm {
                 uint rsvd;
 };
+
 struct getratable_rsp {
         u8 ss_ForceUp[NumRates];
         u8 ss_ULevel[NumRates];
@@ -729,7 +684,6 @@ struct getratable_rsp {
         u8 count_judge[NumRates];
 };
 
-
 //to get TX,RX retry count
 struct gettxretrycnt_parm{
        unsigned int rsvd;
@@ -764,6 +718,7 @@ struct getbcnerrcnt_rsp{
 struct getcurtxpwrlevel_parm{
        unsigned int rsvd;
 };
+
 struct getcurtxpwrlevel_rsp{
        unsigned short tx_power;
 };
@@ -792,98 +747,84 @@ struct setassocrspextraie_parm {
        unsigned char ie[0];
 };
 
-
-struct addBaReq_parm
-{
+struct addBaReq_parm {
        unsigned int tid;
        u8      addr[ETH_ALEN];
 };
 
 /*H2C Handler index: 46 */
-struct SetChannel_parm
-{
-       u32 curr_ch;
+struct set_ch_parm {
+       u8 ch;
+       u8 bw;
+       u8 ch_offset;
 };
 
 #ifdef MP_FIRMWARE_OFFLOAD
 /*H2C Handler index: 47 */
-struct SetTxPower_parm
-{
+struct SetTxPower_parm {
        u8 TxPower;
 };
 
 /*H2C Handler index: 48 */
-struct SwitchAntenna_parm
-{
+struct SwitchAntenna_parm {
        u16 antenna_tx;
        u16 antenna_rx;
-//     R_ANTENNA_SELECT_CCK cck_txrx;
        u8 cck_txrx;
 };
 
 /*H2C Handler index: 49 */
-struct SetCrystalCap_parm
-{
+struct SetCrystalCap_parm {
        u32 curr_crystalcap;
 };
 
 /*H2C Handler index: 50 */
-struct SetSingleCarrierTx_parm
-{
+struct SetSingleCarrierTx_parm {
        u8 bStart;
 };
 
 /*H2C Handler index: 51 */
-struct SetSingleToneTx_parm
-{
+struct SetSingleToneTx_parm {
        u8 bStart;
        u8 curr_rfpath;
 };
 
 /*H2C Handler index: 52 */
-struct SetCarrierSuppressionTx_parm
-{
+struct SetCarrierSuppressionTx_parm {
        u8 bStart;
        u32 curr_rateidx;
 };
 
 /*H2C Handler index: 53 */
-struct SetContinuousTx_parm
-{
+struct SetContinuousTx_parm {
        u8 bStart;
        u8 CCK_flag; /*1:CCK 2:OFDM*/
        u32 curr_rateidx;
 };
 
 /*H2C Handler index: 54 */
-struct SwitchBandwidth_parm
-{
+struct SwitchBandwidth_parm {
        u8 curr_bandwidth;
 };
 
 #endif /* MP_FIRMWARE_OFFLOAD */
 
 /*H2C Handler index: 59 */
-struct SetChannelPlan_param
-{
+struct SetChannelPlan_param {
        u8 channel_plan;
 };
 
 /*H2C Handler index: 60 */
-struct LedBlink_param
-{
+struct LedBlink_param {
        PLED_871x        pLed;
 };
 
 /*H2C Handler index: 61 */
-struct SetChannelSwitch_param
-{
+struct SetChannelSwitch_param {
        u8 new_ch_no;
 };
 
 /*H2C Handler index: 62 */
-struct TDLSoption_param
-{
+struct TDLSoption_param {
        u8 addr[ETH_ALEN];
        u8 option;
 };
@@ -913,34 +854,34 @@ Result:
 #define H2C_CMD_OVERFLOW               0x06
 #define H2C_RESERVED                   0x07
 
-extern u8 rtw_setassocsta_cmd(_adapter  *padapter, u8 *mac_addr);
-extern u8 rtw_setstandby_cmd(_adapter *padapter, uint action);
-extern u8 rtw_sitesurvey_cmd(_adapter  *padapter, NDIS_802_11_SSID *pssid, int ssid_max_num);
-extern u8 rtw_createbss_cmd(_adapter  *padapter);
-extern u8 rtw_createbss_cmd_ex(_adapter  *padapter, unsigned char *pbss, unsigned int sz);
-extern u8 rtw_setphy_cmd(_adapter  *padapter, u8 modem, u8 ch);
-extern u8 rtw_setstakey_cmd(_adapter  *padapter, u8 *psta, u8 unicast_key);
-extern u8 rtw_clearstakey_cmd(_adapter *padapter, u8 *psta, u8 entry, u8 enqueue);
-extern u8 rtw_joinbss_cmd(_adapter  *padapter, struct wlan_network* pnetwork);
-extern u8 rtw_disassoc_cmd(_adapter  *padapter);
-extern u8 rtw_setopmode_cmd(_adapter  *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
-extern u8 rtw_setdatarate_cmd(_adapter  *padapter, u8 *rateset);
-extern u8 rtw_setbasicrate_cmd(_adapter  *padapter, u8 *rateset);
-extern u8 rtw_setbbreg_cmd(_adapter * padapter, u8 offset, u8 val);
-extern u8 rtw_setrfreg_cmd(_adapter * padapter, u8 offset, u32 val);
-extern u8 rtw_getbbreg_cmd(_adapter * padapter, u8 offset, u8 * pval);
-extern u8 rtw_getrfreg_cmd(_adapter * padapter, u8 offset, u8 * pval);
-extern u8 rtw_setrfintfs_cmd(_adapter  *padapter, u8 mode);
-extern u8 rtw_setrttbl_cmd(_adapter  *padapter, struct setratable_parm *prate_table);
-extern u8 rtw_getrttbl_cmd(_adapter  *padapter, struct getratable_rsp *pval);
-
-extern u8 rtw_gettssi_cmd(_adapter  *padapter, u8 offset,u8 *pval);
-extern u8 rtw_setfwdig_cmd(_adapter*padapter, u8 type);
-extern u8 rtw_setfwra_cmd(_adapter*padapter, u8 type);
-
-extern u8 rtw_addbareq_cmd(_adapter*padapter, u8 tid, u8 *addr);
-
-extern u8 rtw_dynamic_chk_wk_cmd(_adapter *adapter);
+u8 rtw_setassocsta_cmd(_adapter  *padapter, u8 *mac_addr);
+u8 rtw_setstandby_cmd(_adapter *padapter, uint action);
+u8 rtw_sitesurvey_cmd(_adapter  *padapter, NDIS_802_11_SSID *ssid, int ssid_num, struct rtw_ieee80211_channel *ch, int ch_num);
+u8 rtw_createbss_cmd(_adapter  *padapter);
+u8 rtw_createbss_cmd_ex(_adapter  *padapter, unsigned char *pbss, unsigned int sz);
+u8 rtw_setphy_cmd(_adapter  *padapter, u8 modem, u8 ch);
+u8 rtw_setstakey_cmd(_adapter  *padapter, u8 *psta, u8 unicast_key);
+u8 rtw_clearstakey_cmd(_adapter *padapter, u8 *psta, u8 entry, u8 enqueue);
+u8 rtw_joinbss_cmd(_adapter  *padapter, struct wlan_network* pnetwork);
+u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, bool enqueue);
+u8 rtw_setopmode_cmd(_adapter  *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE networktype);
+u8 rtw_setdatarate_cmd(_adapter  *padapter, u8 *rateset);
+u8 rtw_setbasicrate_cmd(_adapter  *padapter, u8 *rateset);
+u8 rtw_setbbreg_cmd(_adapter * padapter, u8 offset, u8 val);
+u8 rtw_setrfreg_cmd(_adapter * padapter, u8 offset, u32 val);
+u8 rtw_getbbreg_cmd(_adapter * padapter, u8 offset, u8 * pval);
+u8 rtw_getrfreg_cmd(_adapter * padapter, u8 offset, u8 * pval);
+u8 rtw_setrfintfs_cmd(_adapter  *padapter, u8 mode);
+u8 rtw_setrttbl_cmd(_adapter  *padapter, struct setratable_parm *prate_table);
+u8 rtw_getrttbl_cmd(_adapter  *padapter, struct getratable_rsp *pval);
+
+u8 rtw_gettssi_cmd(_adapter  *padapter, u8 offset,u8 *pval);
+u8 rtw_setfwdig_cmd(_adapter*padapter, u8 type);
+u8 rtw_setfwra_cmd(_adapter*padapter, u8 type);
+
+u8 rtw_addbareq_cmd(_adapter*padapter, u8 tid, u8 *addr);
+
+u8 rtw_dynamic_chk_wk_cmd(_adapter *adapter);
 
 u8 rtw_lps_ctrl_wk_cmd(_adapter*padapter, u8 lps_ctrl_type, u8 enqueue);
 #if (RATE_ADAPTIVE_SUPPORT==1)
@@ -948,7 +889,7 @@ u8 rtw_rpt_timer_cfg_cmd(_adapter*padapter, u16 minRptTime);
 #endif
 
 #ifdef CONFIG_ANTENNA_DIVERSITY
-extern  u8 rtw_antenna_select_cmd(_adapter*padapter, u8 antenna,u8 enqueue);
+u8 rtw_antenna_select_cmd(_adapter*padapter, u8 antenna,u8 enqueue);
 #endif
 
 extern u8 rtw_ps_cmd(_adapter*padapter);
@@ -957,34 +898,33 @@ extern u8 rtw_ps_cmd(_adapter*padapter);
 u8 rtw_chk_hi_queue_cmd(_adapter*padapter);
 #endif
 
-extern u8 rtw_set_chplan_cmd(_adapter*padapter, u8 chplan, u8 enaueue);
-extern u8 rtw_led_blink_cmd(_adapter*padapter, PLED_871x pLed);
-extern u8 rtw_set_csa_cmd(_adapter*padapter, u8 new_ch_no);
-extern u8 rtw_tdls_cmd(_adapter*padapter, u8 *addr, u8 option);
+u8 rtw_set_ch_cmd(_adapter*padapter, u8 ch, u8 bw, u8 ch_offset, u8 enqueue);
+u8 rtw_set_chplan_cmd(_adapter*padapter, u8 chplan, u8 enqueue);
+u8 rtw_led_blink_cmd(_adapter*padapter, PLED_871x pLed);
+u8 rtw_set_csa_cmd(_adapter*padapter, u8 new_ch_no);
+u8 rtw_tdls_cmd(_adapter*padapter, u8 *addr, u8 option);
 
-extern u8 rtw_c2h_wk_cmd(PADAPTER padapter, u8 *c2h_evt);
+u8 rtw_c2h_wk_cmd(PADAPTER padapter, u8 *c2h_evt);
 
 u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf);
 
-extern void rtw_survey_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_disassoc_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_joinbss_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_createbss_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_getbbrfreg_cmdrsp_callback(_adapter  *padapter, struct cmd_obj *pcmd);
-extern void rtw_readtssi_cmdrsp_callback(_adapter*     padapter,  struct cmd_obj *pcmd);
-
-extern void rtw_setstaKey_cmdrsp_callback(_adapter  *padapter,  struct cmd_obj *pcmd);
-extern void rtw_setassocsta_cmdrsp_callback(_adapter  *padapter,  struct cmd_obj *pcmd);
-extern void rtw_getrttbl_cmdrsp_callback(_adapter  *padapter,  struct cmd_obj *pcmd);
+void rtw_survey_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
+void rtw_disassoc_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
+void rtw_joinbss_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
+void rtw_createbss_cmd_callback(_adapter  *padapter, struct cmd_obj *pcmd);
+void rtw_getbbrfreg_cmdrsp_callback(_adapter  *padapter, struct cmd_obj *pcmd);
+void rtw_readtssi_cmdrsp_callback(_adapter*    padapter,  struct cmd_obj *pcmd);
 
+void rtw_setstaKey_cmdrsp_callback(_adapter  *padapter,  struct cmd_obj *pcmd);
+void rtw_setassocsta_cmdrsp_callback(_adapter  *padapter,  struct cmd_obj *pcmd);
+void rtw_getrttbl_cmdrsp_callback(_adapter  *padapter,  struct cmd_obj *pcmd);
 
 struct _cmd_callback {
        u32     cmd_code;
        void (*callback)(_adapter  *padapter, struct cmd_obj *cmd);
 };
 
-enum rtw_h2c_cmd
-{
+enum rtw_h2c_cmd {
        GEN_CMD_CODE(_Read_MACREG) ,    /*0*/
        GEN_CMD_CODE(_Write_MACREG) ,
        GEN_CMD_CODE(_Read_BBREG) ,
@@ -1066,8 +1006,7 @@ enum rtw_h2c_cmd
 #define _SetRFReg_CMD_         _Write_RFREG_CMD_
 
 #ifdef _RTW_CMD_C_
-struct _cmd_callback   rtw_cmd_callback[] =
-{
+struct _cmd_callback   rtw_cmd_callback[] = {
        {GEN_CMD_CODE(_Read_MACREG), NULL}, /*0*/
        {GEN_CMD_CODE(_Write_MACREG), NULL},
        {GEN_CMD_CODE(_Read_BBREG), &rtw_getbbrfreg_cmdrsp_callback},
@@ -1139,6 +1078,8 @@ struct _cmd_callback      rtw_cmd_callback[] =
        {GEN_CMD_CODE(_SetChannelSwitch), NULL},/*61*/
        {GEN_CMD_CODE(_TDLS), NULL},/*62*/
 };
+#else
+extern struct _cmd_callback    rtw_cmd_callback[];
 #endif
 
 #endif // _CMD_H_