blob: 7a32214b283f1b2cef2e329fc379f8baaa442496 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22
23#if !defined( WLAN_HDD_SOFTAP_TX_RX_H )
24#define WLAN_HDD_SOFTAP_TX_RX_H
25
26/**===========================================================================
27
28 \file wlan_hdd_softap_tx_rx.h
29
30 \brief Linux HDD SOFTAP Tx/RX APIs
31 Copyright 2008 (c) Qualcomm, Incorporated.
32 All Rights Reserved.
33 Qualcomm Confidential and Proprietary.
34
35 ==========================================================================*/
36
37/*---------------------------------------------------------------------------
38 Include files
39 -------------------------------------------------------------------------*/
40#include <wlan_hdd_hostapd.h>
41
42/*---------------------------------------------------------------------------
43 Preprocessor definitions and constants
44 -------------------------------------------------------------------------*/
45#define HDD_SOFTAP_TX_BK_QUEUE_MAX_LEN (82*2)
46#define HDD_SOFTAP_TX_BE_QUEUE_MAX_LEN (78*2)
47#define HDD_SOFTAP_TX_VI_QUEUE_MAX_LEN (74*2)
48#define HDD_SOFTAP_TX_VO_QUEUE_MAX_LEN (70*2)
49
50/* SoftAP specific AC Weights */
51#define HDD_SOFTAP_BK_WEIGHT_DEFAULT 1
52#define HDD_SOFTAP_BE_WEIGHT_DEFAULT 3
53#define HDD_SOFTAP_VI_WEIGHT_DEFAULT 8
54#define HDD_SOFTAP_VO_WEIGHT_DEFAULT 18
55
56/*---------------------------------------------------------------------------
57 Type declarations
58 -------------------------------------------------------------------------*/
59
60/*---------------------------------------------------------------------------
61 Function declarations and documenation
62 -------------------------------------------------------------------------*/
63
64/**============================================================================
65 @brief hdd_softap_hard_start_xmit() - Function registered with the Linux OS for
66 transmitting packets
67
68 @param skb : [in] pointer to OS packet (sk_buff)
69 @param dev : [in] pointer to Libra softap network device
70
71 @return : NET_XMIT_DROP if packets are dropped
72 : NET_XMIT_SUCCESS if packet is enqueued succesfully
73 ===========================================================================*/
74extern int hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev);
75
76/**============================================================================
77 @brief hdd_softap_tx_timeout() - Function called by OS if there is any
78 timeout during transmission. Since HDD simply enqueues packet
79 and returns control to OS right away, this would never be invoked
80
81 @param dev : [in] pointer to Libra network device
82 @return : None
83 ===========================================================================*/
84extern void hdd_softap_tx_timeout(struct net_device *dev);
85
86/**============================================================================
87 @brief hdd_softap_stats() - Function registered with the Linux OS for
88 device TX/RX statistics
89
90 @param dev : [in] pointer to Libra network device
91
92 @return : pointer to net_device_stats structure
93 ===========================================================================*/
94extern struct net_device_stats* hdd_softap_stats(struct net_device *dev);
95
96/**============================================================================
97 @brief hdd_softap_init_tx_rx() - Init function to initialize Tx/RX
98 modules in HDD
99
100 @param pAdapter : [in] pointer to adapter context
101 @return : VOS_STATUS_E_FAILURE if any errors encountered
102 : VOS_STATUS_SUCCESS otherwise
103 ===========================================================================*/
104extern VOS_STATUS hdd_softap_init_tx_rx( hdd_adapter_t *pAdapter );
105
106/**============================================================================
107 @brief hdd_softap_deinit_tx_rx() - Deinit function to clean up Tx/RX
108 modules in HDD
109
110 @param pAdapter : [in] pointer to adapter context
111 @return : VOS_STATUS_E_FAILURE if any errors encountered
112 : VOS_STATUS_SUCCESS otherwise
113 ===========================================================================*/
114extern VOS_STATUS hdd_softap_deinit_tx_rx( hdd_adapter_t *pAdapter );
115
116/**============================================================================
117 @brief hdd_softap_init_tx_rx_sta() - Init function to initialize a station in Tx/RX
118 modules in HDD
119
120 @param pAdapter : [in] pointer to adapter context
121 @param STAId : [in] Station ID to deinit
122 @param pmacAddrSTA : [in] pointer to the MAC address of the station
123 @return : VOS_STATUS_E_FAILURE if any errors encountered
124 : VOS_STATUS_SUCCESS otherwise
125 ===========================================================================*/
126extern VOS_STATUS hdd_softap_init_tx_rx_sta( hdd_adapter_t *pAdapter, v_U8_t STAId, v_MACADDR_t *pmacAddrSTA);
127
128/**============================================================================
129 @brief hdd_softap_deinit_tx_rx_sta() - Deinit function to clean up a statioin in Tx/RX
130 modules in HDD
131
132 @param pAdapter : [in] pointer to adapter context
133 @param STAId : [in] Station ID to deinit
134 @return : VOS_STATUS_E_FAILURE if any errors encountered
135 : VOS_STATUS_SUCCESS otherwise
136 ===========================================================================*/
137extern VOS_STATUS hdd_softap_deinit_tx_rx_sta ( hdd_adapter_t *pAdapter, v_U8_t STAId );
138
139/**============================================================================
140 @brief hdd_disconnect_tx_rx() - Disconnect function to clean up Tx/RX
141 modules in HDD
142
143 @param pAdapter : [in] pointer to adapter context
144 @return : VOS_STATUS_E_FAILURE if any errors encountered
145 : VOS_STATUS_SUCCESS otherwise
146 ===========================================================================*/
147extern VOS_STATUS hdd_softap_disconnect_tx_rx( hdd_adapter_t *pAdapter );
148
149/**============================================================================
150 @brief hdd_tx_complete_cbk() - Callback function invoked by TL
151 to indicate that a packet has been transmitted across the SDIO bus
152 succesfully. OS packet resources can be released after this cbk.
153
154 @param vosContext : [in] pointer to VOS context
155 @param pVosPacket : [in] pointer to VOS packet (containing skb)
156 @param vosStatusIn : [in] status of the transmission
157
158 @return : VOS_STATUS_E_FAILURE if any errors encountered
159 : VOS_STATUS_SUCCESS otherwise
160 ===========================================================================*/
161extern VOS_STATUS hdd_softap_tx_complete_cbk( v_VOID_t *vosContext,
162 vos_pkt_t *pVosPacket,
163 VOS_STATUS vosStatusIn );
164
165/**============================================================================
166 @brief hdd_softap_tx_fetch_packet_cbk() - Callback function invoked by TL to
167 fetch a packet for transmission.
168
169 @param vosContext : [in] pointer to VOS context
170 @param staId : [in] Station for which TL is requesting a pkt
171 @param ucAC : [in] pointer to access category requested by TL
172 @param pVosPacket : [out] pointer to VOS packet packet pointer
173 @param pPktMetaInfo : [out] pointer to meta info for the pkt
174
175 @return : VOS_STATUS_E_EMPTY if no packets to transmit
176 : VOS_STATUS_E_FAILURE if any errors encountered
177 : VOS_STATUS_SUCCESS otherwise
178 ===========================================================================*/
179extern VOS_STATUS hdd_softap_tx_fetch_packet_cbk( v_VOID_t *vosContext,
180 v_U8_t *pStaId,
181 WLANTL_ACEnumType ucAC,
182 vos_pkt_t **ppVosPacket,
183 WLANTL_MetaInfoType *pPktMetaInfo );
184
185/**============================================================================
186 @brief hdd_softap_tx_low_resource_cbk() - Callback function invoked in the
187 case where VOS packets are not available at the time of the call to get
188 packets. This callback function is invoked by VOS when packets are
189 available.
190
191 @param pVosPacket : [in] pointer to VOS packet
192 @param userData : [in] opaque user data that was passed initially
193
194 @return : VOS_STATUS_E_FAILURE if any errors encountered,
195 : VOS_STATUS_SUCCESS otherwise
196 =============================================================================*/
197extern VOS_STATUS hdd_softap_tx_low_resource_cbk( vos_pkt_t *pVosPacket,
198 v_VOID_t *userData );
199
200/**============================================================================
201 @brief hdd_softap_rx_packet_cbk() - Receive callback registered with TL.
202 TL will call this to notify the HDD when a packet was received
203 for a registered STA.
204
205 @param vosContext : [in] pointer to VOS context
206 @param pVosPacket : [in] pointer to VOS packet (conatining sk_buff)
207 @param staId : [in] Station Id
208 @param pRxMetaInfo : [in] pointer to meta info for the received pkt(s)
209
210 @return : VOS_STATUS_E_FAILURE if any errors encountered,
211 : VOS_STATUS_SUCCESS otherwise
212 ===========================================================================*/
213extern VOS_STATUS hdd_softap_rx_packet_cbk( v_VOID_t *vosContext,
214 vos_pkt_t *pVosPacket,
215 v_U8_t staId,
216 WLANTL_RxMetaInfoType* pRxMetaInfo );
217
218/**============================================================================
219 @brief hdd_softap_DeregisterSTA - Deregister a station from TL block
220
221 @param pAdapter : [in] pointer to adapter context
222 @param STAId : [in] Station ID to deregister
223 @return : VOS_STATUS_E_FAILURE if any errors encountered
224 : VOS_STATUS_SUCCESS otherwise
225 ===========================================================================*/
226extern VOS_STATUS hdd_softap_DeregisterSTA( hdd_adapter_t *pAdapter, tANI_U8 staId );
227
228/**============================================================================
229 @brief hdd_softap_RegisterSTA - Register a station into TL block
230
231 @param pAdapter : [in] pointer to adapter context
232 @param STAId : [in] Station ID to deregister
233 @param fAuthRequired: [in] Station requires further security negotiation or not
234 @param fPrivacyBit : [in] privacy bit needs to be set or not
235 @param ucastSig : [in] Unicast Signature send to TL
236 @param bcastSig : [in] Broadcast Signature send to TL
237 @param pPeerMacAddress : [in] station MAC address
238 @param fWmmEnabled : [in] Wmm enabled sta or not
239 @return : VOS_STATUS_E_FAILURE if any errors encountered
240 : VOS_STATUS_SUCCESS otherwise
241 =========================================================================== */
242extern VOS_STATUS hdd_softap_RegisterSTA( hdd_adapter_t *pAdapter,
243 v_BOOL_t fAuthRequired,
244 v_BOOL_t fPrivacyBit,
245 v_U8_t staId,
246 v_U8_t ucastSig,
247 v_U8_t bcastSig,
248 v_MACADDR_t *pPeerMacAddress,
249 v_BOOL_t fWmmEnabled);
250
251/**============================================================================
252 @brief hdd_softap_Register_BC_STA - Register a default broadcast station into TL block
253
254 @param pAdapter : [in] pointer to adapter context
255 @param fPrivacyBit : [in] privacy bit needs to be set or not
256 @return : VOS_STATUS_E_FAILURE if any errors encountered
257 : VOS_STATUS_SUCCESS otherwise
258 =========================================================================== */
259extern VOS_STATUS hdd_softap_Register_BC_STA( hdd_adapter_t *pAdapter, v_BOOL_t fPrivacyBit);
260
261/**============================================================================
262 @brief hdd_softap_DeregisterSTA - DeRegister the default broadcast station into TL block
263
264 @param pAdapter : [in] pointer to adapter context
265 @return : VOS_STATUS_E_FAILURE if any errors encountered
266 : VOS_STATUS_SUCCESS otherwise
267 =========================================================================== */
268extern VOS_STATUS hdd_softap_Deregister_BC_STA( hdd_adapter_t *pAdapter);
269
270/**============================================================================
271 @brief hdd_softap_stop_bss - Helper function to stop bss and do cleanup in HDD and TL
272
273 @param pAdapter : [in] pointer to adapter context
274 @return : VOS_STATUS_E_FAILURE if any errors encountered
275 : VOS_STATUS_SUCCESS otherwise
276 =========================================================================== */
277extern VOS_STATUS hdd_softap_stop_bss( hdd_adapter_t *pHostapdAdapter);
278
279
280/**============================================================================
281 @brief hdd_softap_change_STA_state - Helper function to change station state by MAC address
282
283 @param pAdapter : [in] pointer to adapter context
284 @param pDestMacAddress : [in] pointer to station MAC address
285 @param state : [in] new station state
286 @return : VOS_STATUS_E_FAILURE if any errors encountered
287 : VOS_STATUS_SUCCESS otherwise
288 =========================================================================== */
289extern VOS_STATUS hdd_softap_change_STA_state( hdd_adapter_t *pAdapter, v_MACADDR_t *pDestMacAddress, WLANTL_STAStateType state);
290
291/**============================================================================
292 @brief hdd_softap_GetStaId - Helper function to get station Id from MAC address
293
294 @param pAdapter : [in] pointer to adapter context
295 @param pDestMacAddress : [in] pointer to station MAC address
296 @param staId : [out] station id
297 @return : VOS_STATUS_E_FAILURE if any errors encountered
298 : VOS_STATUS_SUCCESS otherwise
299 =========================================================================== */
300extern VOS_STATUS hdd_softap_GetStaId( hdd_adapter_t *pAdapter, v_MACADDR_t *pMacAddress, v_U8_t *staId);
301
302#endif // end #if !defined( WLAN_HDD_SOFTAP_TX_RX_H )