support different wifi bt chip auto compatible
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / mt5931_kk / drv_wlan / include / nic / cmd_buf.h
1 /*
2 ** $Id:
3 */
4
5 /*! \file   "cmd_buf.h"
6     \brief  In this file we define the structure for Command Packet.
7
8                 In this file we define the structure for Command Packet and the control unit
9     of MGMT Memory Pool.
10 */
11
12 /*******************************************************************************
13 * Copyright (c) 2007 MediaTek Inc.
14 *
15 * All rights reserved. Copying, compilation, modification, distribution
16 * or any other use whatsoever of this material is strictly prohibited
17 * except in accordance with a Software License Agreement with
18 * MediaTek Inc.
19 ********************************************************************************
20 */
21
22 /*******************************************************************************
23 * LEGAL DISCLAIMER
24 *
25 * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND
26 * AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK
27 * SOFTWARE") RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE
28 * PROVIDED TO BUYER ON AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY
29 * DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
30 * LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
31 * PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE
32 * ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY
33 * WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK
34 * SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY
35 * WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE
36 * FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S SPECIFICATION OR TO
37 * CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
38 *
39 * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
40 * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL
41 * BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT
42 * ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY
43 * BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
44 *
45 * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
46 * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT
47 * OF LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING
48 * THEREOF AND RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN
49 * FRANCISCO, CA, UNDER THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE
50 * (ICC).
51 ********************************************************************************
52 */
53
54 /*
55 ** $Log: cmd_buf.h $
56  *
57  * 10 04 2010 cp.wu
58  * [WCXRP00000077] [MT6620 Wi-Fi][Driver][FW] Eliminate use of ENUM_NETWORK_TYPE_T and replaced by ENUM_NETWORK_TYPE_INDEX_T only
59  * remove ENUM_NETWORK_TYPE_T definitions
60  *
61  * 09 03 2010 kevin.huang
62  * NULL
63  * Refine #include sequence and solve recursive/nested #include issue
64  *
65  * 07 13 2010 cp.wu
66  * 
67  * 1) MMPDUs are now sent to MT6620 by CMD queue for keeping strict order of 1X/MMPDU/CMD packets
68  * 2) integrate with qmGetFrameAction() for deciding which MMPDU/1X could pass checking for sending
69  * 2) enhance CMD_INFO_T descriptor number from 10 to 32 to avoid descriptor underflow under concurrent network operation
70  *
71  * 07 08 2010 cp.wu
72  * 
73  * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
74  *
75  * 07 01 2010 cm.chang
76  * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver 
77  * Enable change log
78 */
79
80 #ifndef _CMD_BUF_H
81 #define _CMD_BUF_H
82
83 /*******************************************************************************
84 *                         C O M P I L E R   F L A G S
85 ********************************************************************************
86 */
87
88 /*******************************************************************************
89 *                    E X T E R N A L   R E F E R E N C E S
90 ********************************************************************************
91 */
92
93 /*******************************************************************************
94 *                              C O N S T A N T S
95 ********************************************************************************
96 */
97
98 /*******************************************************************************
99 *                             D A T A   T Y P E S
100 ********************************************************************************
101 */
102
103 typedef enum _COMMAND_TYPE {
104     COMMAND_TYPE_GENERAL_IOCTL,
105     COMMAND_TYPE_NETWORK_IOCTL,
106     COMMAND_TYPE_SECURITY_FRAME,
107     COMMAND_TYPE_MANAGEMENT_FRAME,
108     COMMAND_TYPE_NUM
109 } COMMAND_TYPE, *P_COMMAND_TYPE;
110
111 typedef VOID (*PFN_CMD_DONE_HANDLER) (
112     IN P_ADAPTER_T  prAdapter,
113     IN P_CMD_INFO_T prCmdInfo,
114     IN PUINT_8      pucEventBuf
115     );
116
117 typedef VOID (*PFN_CMD_TIMEOUT_HANDLER) (
118     IN P_ADAPTER_T  prAdapter,
119     IN P_CMD_INFO_T prCmdInfo
120     );
121
122 struct _CMD_INFO_T {
123     QUE_ENTRY_T rQueEntry;
124
125     COMMAND_TYPE    eCmdType;
126
127     UINT_16     u2InfoBufLen;   /* This is actual CMD buffer length */
128     PUINT_8     pucInfoBuffer;  /* May pointer to structure in prAdapter */
129     P_NATIVE_PACKET prPacket;   /* only valid when it's a security frame */
130
131     ENUM_NETWORK_TYPE_INDEX_T eNetworkType;
132     UINT_8      ucStaRecIndex;  /* only valid when it's a security frame */
133
134     PFN_CMD_DONE_HANDLER        pfCmdDoneHandler;
135     PFN_CMD_TIMEOUT_HANDLER     pfCmdTimeoutHandler;
136
137     BOOLEAN     fgIsOid; /* Used to check if we need indicate */
138
139     UINT_8      ucCID;
140     BOOLEAN     fgSetQuery;
141     BOOLEAN     fgNeedResp;
142     BOOLEAN     fgDriverDomainMCR; /* Access Driver Domain MCR, for CMD_ID_ACCESS_REG only */
143     UINT_8      ucCmdSeqNum;
144     UINT_32     u4SetInfoLen; /* Indicate how many byte we read for Set OID */
145
146     /* information indicating by OID/ioctl */
147     PVOID       pvInformationBuffer;
148     UINT_32     u4InformationBufferLength;
149
150     /* private data */
151     UINT_32     u4PrivateData;
152 };
153
154
155 /*******************************************************************************
156 *                            P U B L I C   D A T A
157 ********************************************************************************
158 */
159
160 /*******************************************************************************
161 *                           P R I V A T E   D A T A
162 ********************************************************************************
163 */
164
165 /*******************************************************************************
166 *                                 M A C R O S
167 ********************************************************************************
168 */
169
170 /*******************************************************************************
171 *                   F U N C T I O N   D E C L A R A T I O N S
172 ********************************************************************************
173 */
174 VOID
175 cmdBufInitialize (
176     IN P_ADAPTER_T prAdapter
177     );
178
179 P_CMD_INFO_T
180 cmdBufAllocateCmdInfo (
181     IN P_ADAPTER_T prAdapter,
182     IN UINT_32 u4Length
183     );
184
185 VOID
186 cmdBufFreeCmdInfo (
187     IN P_ADAPTER_T prAdapter,
188     IN P_CMD_INFO_T prCmdInfo
189     );
190
191 /*----------------------------------------------------------------------------*/
192 /* Routines for CMDs                                                          */
193 /*----------------------------------------------------------------------------*/
194 WLAN_STATUS
195 wlanSendSetQueryCmd (
196     IN P_ADAPTER_T  prAdapter,
197     UINT_8          ucCID,
198     BOOLEAN         fgSetQuery,
199     BOOLEAN         fgNeedResp,
200     BOOLEAN         fgIsOid,
201     PFN_CMD_DONE_HANDLER pfCmdDoneHandler,
202     PFN_CMD_TIMEOUT_HANDLER pfCmdTimeoutHandler,
203     UINT_32         u4SetQueryInfoLen,
204     PUINT_8         pucInfoBuffer,
205     OUT PVOID       pvSetQueryBuffer,
206     IN UINT_32      u4SetQueryBufferLen
207     );
208
209
210 /*******************************************************************************
211 *                              F U N C T I O N S
212 ********************************************************************************
213 */
214 #endif /* _CMD_BUF_H */
215
216