add MTK-combo-module,continue with commit 17f39ed917874e77e80411f33faba1b7ee8138c8
[firefly-linux-kernel-4.4.55.git] / drivers / mtk_wcn_combo / drv_wlan / 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  * 03 18 2011 cp.wu
58  * [WCXRP00000577] [MT6620 Wi-Fi][Driver][FW] Create V2.0 branch for firmware and driver
59  * create V2.0 driver release based on label "MT6620_WIFI_DRIVER_V2_0_110318_1600" from main trunk
60  *
61  * 10 04 2010 cp.wu
62  * [WCXRP00000077] [MT6620 Wi-Fi][Driver][FW] Eliminate use of ENUM_NETWORK_TYPE_T and replaced by ENUM_NETWORK_TYPE_INDEX_T only
63  * remove ENUM_NETWORK_TYPE_T definitions
64  *
65  * 09 03 2010 kevin.huang
66  * NULL
67  * Refine #include sequence and solve recursive/nested #include issue
68  *
69  * 07 13 2010 cp.wu
70  * 
71  * 1) MMPDUs are now sent to MT6620 by CMD queue for keeping strict order of 1X/MMPDU/CMD packets
72  * 2) integrate with qmGetFrameAction() for deciding which MMPDU/1X could pass checking for sending
73  * 2) enhance CMD_INFO_T descriptor number from 10 to 32 to avoid descriptor underflow under concurrent network operation
74  *
75  * 07 08 2010 cp.wu
76  * 
77  * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository.
78  *
79  * 07 01 2010 cm.chang
80  * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver 
81  * Enable change log
82 */
83
84 #ifndef _CMD_BUF_H
85 #define _CMD_BUF_H
86
87 /*******************************************************************************
88 *                         C O M P I L E R   F L A G S
89 ********************************************************************************
90 */
91
92 /*******************************************************************************
93 *                    E X T E R N A L   R E F E R E N C E S
94 ********************************************************************************
95 */
96
97 /*******************************************************************************
98 *                              C O N S T A N T S
99 ********************************************************************************
100 */
101
102 /*******************************************************************************
103 *                             D A T A   T Y P E S
104 ********************************************************************************
105 */
106
107 typedef enum _COMMAND_TYPE {
108     COMMAND_TYPE_GENERAL_IOCTL,
109     COMMAND_TYPE_NETWORK_IOCTL,
110     COMMAND_TYPE_SECURITY_FRAME,
111     COMMAND_TYPE_MANAGEMENT_FRAME,
112     COMMAND_TYPE_NUM
113 } COMMAND_TYPE, *P_COMMAND_TYPE;
114
115 typedef VOID (*PFN_CMD_DONE_HANDLER) (
116     IN P_ADAPTER_T  prAdapter,
117     IN P_CMD_INFO_T prCmdInfo,
118     IN PUINT_8      pucEventBuf
119     );
120
121 typedef VOID (*PFN_CMD_TIMEOUT_HANDLER) (
122     IN P_ADAPTER_T  prAdapter,
123     IN P_CMD_INFO_T prCmdInfo
124     );
125
126 struct _CMD_INFO_T {
127     QUE_ENTRY_T rQueEntry;
128
129     COMMAND_TYPE    eCmdType;
130
131     UINT_16     u2InfoBufLen;   /* This is actual CMD buffer length */
132     PUINT_8     pucInfoBuffer;  /* May pointer to structure in prAdapter */
133     P_NATIVE_PACKET prPacket;   /* only valid when it's a security frame */
134
135     ENUM_NETWORK_TYPE_INDEX_T eNetworkType;
136     UINT_8      ucStaRecIndex;  /* only valid when it's a security frame */
137
138     PFN_CMD_DONE_HANDLER        pfCmdDoneHandler;
139     PFN_CMD_TIMEOUT_HANDLER     pfCmdTimeoutHandler;
140
141     BOOLEAN     fgIsOid; /* Used to check if we need indicate */
142
143     UINT_8      ucCID;
144     BOOLEAN     fgSetQuery;
145     BOOLEAN     fgNeedResp;
146     BOOLEAN     fgDriverDomainMCR; /* Access Driver Domain MCR, for CMD_ID_ACCESS_REG only */
147     UINT_8      ucCmdSeqNum;
148     UINT_32     u4SetInfoLen; /* Indicate how many byte we read for Set OID */
149
150     /* information indicating by OID/ioctl */
151     PVOID       pvInformationBuffer;
152     UINT_32     u4InformationBufferLength;
153
154     /* private data */
155     UINT_32     u4PrivateData;
156 };
157
158
159 /*******************************************************************************
160 *                            P U B L I C   D A T A
161 ********************************************************************************
162 */
163
164 /*******************************************************************************
165 *                           P R I V A T E   D A T A
166 ********************************************************************************
167 */
168
169 /*******************************************************************************
170 *                                 M A C R O S
171 ********************************************************************************
172 */
173
174 /*******************************************************************************
175 *                   F U N C T I O N   D E C L A R A T I O N S
176 ********************************************************************************
177 */
178 VOID
179 cmdBufInitialize (
180     IN P_ADAPTER_T prAdapter
181     );
182
183 P_CMD_INFO_T
184 cmdBufAllocateCmdInfo (
185     IN P_ADAPTER_T prAdapter,
186     IN UINT_32 u4Length
187     );
188
189 VOID
190 cmdBufFreeCmdInfo (
191     IN P_ADAPTER_T prAdapter,
192     IN P_CMD_INFO_T prCmdInfo
193     );
194
195 /*----------------------------------------------------------------------------*/
196 /* Routines for CMDs                                                          */
197 /*----------------------------------------------------------------------------*/
198 WLAN_STATUS
199 wlanSendSetQueryCmd (
200     IN P_ADAPTER_T  prAdapter,
201     UINT_8          ucCID,
202     BOOLEAN         fgSetQuery,
203     BOOLEAN         fgNeedResp,
204     BOOLEAN         fgIsOid,
205     PFN_CMD_DONE_HANDLER pfCmdDoneHandler,
206     PFN_CMD_TIMEOUT_HANDLER pfCmdTimeoutHandler,
207     UINT_32         u4SetQueryInfoLen,
208     PUINT_8         pucInfoBuffer,
209     OUT PVOID       pvSetQueryBuffer,
210     IN UINT_32      u4SetQueryBufferLen
211     );
212
213
214 /*******************************************************************************
215 *                              F U N C T I O N S
216 ********************************************************************************
217 */
218 #endif /* _CMD_BUF_H */
219
220