blob: d7c23ec8bb711de84648b1ffa67d13e94d3bf9fb [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam842dad02014-02-18 18:44:02 -08002 * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
3 *
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.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam842dad02014-02-18 18:44:02 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028#if !defined( WLAN_HDD_SOFTAP_TX_RX_H )
29#define WLAN_HDD_SOFTAP_TX_RX_H
30
31/**===========================================================================
32
33 \file wlan_hdd_softap_tx_rx.h
34
35 \brief Linux HDD SOFTAP Tx/RX APIs
Jeff Johnson295189b2012-06-20 16:38:30 -070036
37 ==========================================================================*/
38
39/*---------------------------------------------------------------------------
40 Include files
41 -------------------------------------------------------------------------*/
42#include <wlan_hdd_hostapd.h>
43
44/*---------------------------------------------------------------------------
45 Preprocessor definitions and constants
46 -------------------------------------------------------------------------*/
47#define HDD_SOFTAP_TX_BK_QUEUE_MAX_LEN (82*2)
48#define HDD_SOFTAP_TX_BE_QUEUE_MAX_LEN (78*2)
49#define HDD_SOFTAP_TX_VI_QUEUE_MAX_LEN (74*2)
50#define HDD_SOFTAP_TX_VO_QUEUE_MAX_LEN (70*2)
51
52/* SoftAP specific AC Weights */
53#define HDD_SOFTAP_BK_WEIGHT_DEFAULT 1
54#define HDD_SOFTAP_BE_WEIGHT_DEFAULT 3
55#define HDD_SOFTAP_VI_WEIGHT_DEFAULT 8
56#define HDD_SOFTAP_VO_WEIGHT_DEFAULT 18
57
58/*---------------------------------------------------------------------------
59 Type declarations
60 -------------------------------------------------------------------------*/
61
62/*---------------------------------------------------------------------------
63 Function declarations and documenation
64 -------------------------------------------------------------------------*/
65
66/**============================================================================
Bhargav Shahd0715912015-10-01 18:17:37 +053067 @brief hdd_softap_get_connected_sta() - Function to get numbeer of connected
68 stations with softap
69
70 @param pHostapdAdapter : [in] pointer to saftap adapter
71
72 @return : Number of connected peer with softap
73 ===========================================================================*/
74
75v_U8_t hdd_softap_get_connected_sta(hdd_adapter_t *pHostapdAdapter);
76
77/**============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070078 @brief hdd_softap_hard_start_xmit() - Function registered with the Linux OS for
79 transmitting packets
80
81 @param skb : [in] pointer to OS packet (sk_buff)
82 @param dev : [in] pointer to Libra softap network device
83
84 @return : NET_XMIT_DROP if packets are dropped
85 : NET_XMIT_SUCCESS if packet is enqueued succesfully
86 ===========================================================================*/
87extern int hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev);
88
89/**============================================================================
90 @brief hdd_softap_tx_timeout() - Function called by OS if there is any
91 timeout during transmission. Since HDD simply enqueues packet
92 and returns control to OS right away, this would never be invoked
93
94 @param dev : [in] pointer to Libra network device
95 @return : None
96 ===========================================================================*/
97extern void hdd_softap_tx_timeout(struct net_device *dev);
98
99/**============================================================================
100 @brief hdd_softap_stats() - Function registered with the Linux OS for
101 device TX/RX statistics
102
103 @param dev : [in] pointer to Libra network device
104
105 @return : pointer to net_device_stats structure
106 ===========================================================================*/
107extern struct net_device_stats* hdd_softap_stats(struct net_device *dev);
108
109/**============================================================================
110 @brief hdd_softap_init_tx_rx() - Init function to initialize Tx/RX
111 modules in HDD
112
113 @param pAdapter : [in] pointer to adapter context
114 @return : VOS_STATUS_E_FAILURE if any errors encountered
115 : VOS_STATUS_SUCCESS otherwise
116 ===========================================================================*/
117extern VOS_STATUS hdd_softap_init_tx_rx( hdd_adapter_t *pAdapter );
118
119/**============================================================================
120 @brief hdd_softap_deinit_tx_rx() - Deinit function to clean up Tx/RX
121 modules in HDD
122
123 @param pAdapter : [in] pointer to adapter context
124 @return : VOS_STATUS_E_FAILURE if any errors encountered
125 : VOS_STATUS_SUCCESS otherwise
126 ===========================================================================*/
127extern VOS_STATUS hdd_softap_deinit_tx_rx( hdd_adapter_t *pAdapter );
128
129/**============================================================================
130 @brief hdd_softap_init_tx_rx_sta() - Init function to initialize a station in Tx/RX
131 modules in HDD
132
133 @param pAdapter : [in] pointer to adapter context
134 @param STAId : [in] Station ID to deinit
135 @param pmacAddrSTA : [in] pointer to the MAC address of the station
136 @return : VOS_STATUS_E_FAILURE if any errors encountered
137 : VOS_STATUS_SUCCESS otherwise
138 ===========================================================================*/
139extern VOS_STATUS hdd_softap_init_tx_rx_sta( hdd_adapter_t *pAdapter, v_U8_t STAId, v_MACADDR_t *pmacAddrSTA);
140
141/**============================================================================
142 @brief hdd_softap_deinit_tx_rx_sta() - Deinit function to clean up a statioin in Tx/RX
143 modules in HDD
144
145 @param pAdapter : [in] pointer to adapter context
146 @param STAId : [in] Station ID to deinit
147 @return : VOS_STATUS_E_FAILURE if any errors encountered
148 : VOS_STATUS_SUCCESS otherwise
149 ===========================================================================*/
150extern VOS_STATUS hdd_softap_deinit_tx_rx_sta ( hdd_adapter_t *pAdapter, v_U8_t STAId );
151
152/**============================================================================
153 @brief hdd_disconnect_tx_rx() - Disconnect function to clean up Tx/RX
154 modules in HDD
155
156 @param pAdapter : [in] pointer to adapter context
157 @return : VOS_STATUS_E_FAILURE if any errors encountered
158 : VOS_STATUS_SUCCESS otherwise
159 ===========================================================================*/
160extern VOS_STATUS hdd_softap_disconnect_tx_rx( hdd_adapter_t *pAdapter );
161
162/**============================================================================
163 @brief hdd_tx_complete_cbk() - Callback function invoked by TL
164 to indicate that a packet has been transmitted across the SDIO bus
165 succesfully. OS packet resources can be released after this cbk.
166
167 @param vosContext : [in] pointer to VOS context
168 @param pVosPacket : [in] pointer to VOS packet (containing skb)
169 @param vosStatusIn : [in] status of the transmission
170
171 @return : VOS_STATUS_E_FAILURE if any errors encountered
172 : VOS_STATUS_SUCCESS otherwise
173 ===========================================================================*/
174extern VOS_STATUS hdd_softap_tx_complete_cbk( v_VOID_t *vosContext,
175 vos_pkt_t *pVosPacket,
176 VOS_STATUS vosStatusIn );
177
178/**============================================================================
179 @brief hdd_softap_tx_fetch_packet_cbk() - Callback function invoked by TL to
180 fetch a packet for transmission.
181
182 @param vosContext : [in] pointer to VOS context
183 @param staId : [in] Station for which TL is requesting a pkt
184 @param ucAC : [in] pointer to access category requested by TL
185 @param pVosPacket : [out] pointer to VOS packet packet pointer
186 @param pPktMetaInfo : [out] pointer to meta info for the pkt
187
188 @return : VOS_STATUS_E_EMPTY if no packets to transmit
189 : VOS_STATUS_E_FAILURE if any errors encountered
190 : VOS_STATUS_SUCCESS otherwise
191 ===========================================================================*/
192extern VOS_STATUS hdd_softap_tx_fetch_packet_cbk( v_VOID_t *vosContext,
193 v_U8_t *pStaId,
194 WLANTL_ACEnumType ucAC,
195 vos_pkt_t **ppVosPacket,
196 WLANTL_MetaInfoType *pPktMetaInfo );
197
198/**============================================================================
199 @brief hdd_softap_tx_low_resource_cbk() - Callback function invoked in the
200 case where VOS packets are not available at the time of the call to get
201 packets. This callback function is invoked by VOS when packets are
202 available.
203
204 @param pVosPacket : [in] pointer to VOS packet
205 @param userData : [in] opaque user data that was passed initially
206
207 @return : VOS_STATUS_E_FAILURE if any errors encountered,
208 : VOS_STATUS_SUCCESS otherwise
209 =============================================================================*/
210extern VOS_STATUS hdd_softap_tx_low_resource_cbk( vos_pkt_t *pVosPacket,
211 v_VOID_t *userData );
212
213/**============================================================================
214 @brief hdd_softap_rx_packet_cbk() - Receive callback registered with TL.
215 TL will call this to notify the HDD when a packet was received
216 for a registered STA.
217
218 @param vosContext : [in] pointer to VOS context
219 @param pVosPacket : [in] pointer to VOS packet (conatining sk_buff)
220 @param staId : [in] Station Id
221 @param pRxMetaInfo : [in] pointer to meta info for the received pkt(s)
222
223 @return : VOS_STATUS_E_FAILURE if any errors encountered,
224 : VOS_STATUS_SUCCESS otherwise
225 ===========================================================================*/
226extern VOS_STATUS hdd_softap_rx_packet_cbk( v_VOID_t *vosContext,
227 vos_pkt_t *pVosPacket,
228 v_U8_t staId,
229 WLANTL_RxMetaInfoType* pRxMetaInfo );
230
231/**============================================================================
232 @brief hdd_softap_DeregisterSTA - Deregister a station from TL block
233
234 @param pAdapter : [in] pointer to adapter context
235 @param STAId : [in] Station ID to deregister
236 @return : VOS_STATUS_E_FAILURE if any errors encountered
237 : VOS_STATUS_SUCCESS otherwise
238 ===========================================================================*/
239extern VOS_STATUS hdd_softap_DeregisterSTA( hdd_adapter_t *pAdapter, tANI_U8 staId );
240
241/**============================================================================
242 @brief hdd_softap_RegisterSTA - Register a station into TL block
243
244 @param pAdapter : [in] pointer to adapter context
245 @param STAId : [in] Station ID to deregister
246 @param fAuthRequired: [in] Station requires further security negotiation or not
247 @param fPrivacyBit : [in] privacy bit needs to be set or not
248 @param ucastSig : [in] Unicast Signature send to TL
249 @param bcastSig : [in] Broadcast Signature send to TL
250 @param pPeerMacAddress : [in] station MAC address
251 @param fWmmEnabled : [in] Wmm enabled sta or not
252 @return : VOS_STATUS_E_FAILURE if any errors encountered
253 : VOS_STATUS_SUCCESS otherwise
254 =========================================================================== */
255extern VOS_STATUS hdd_softap_RegisterSTA( hdd_adapter_t *pAdapter,
256 v_BOOL_t fAuthRequired,
257 v_BOOL_t fPrivacyBit,
258 v_U8_t staId,
259 v_U8_t ucastSig,
260 v_U8_t bcastSig,
261 v_MACADDR_t *pPeerMacAddress,
262 v_BOOL_t fWmmEnabled);
263
264/**============================================================================
265 @brief hdd_softap_Register_BC_STA - Register a default broadcast station into TL block
266
267 @param pAdapter : [in] pointer to adapter context
268 @param fPrivacyBit : [in] privacy bit needs to be set or not
269 @return : VOS_STATUS_E_FAILURE if any errors encountered
270 : VOS_STATUS_SUCCESS otherwise
271 =========================================================================== */
272extern VOS_STATUS hdd_softap_Register_BC_STA( hdd_adapter_t *pAdapter, v_BOOL_t fPrivacyBit);
273
274/**============================================================================
275 @brief hdd_softap_DeregisterSTA - DeRegister the default broadcast station into TL block
276
277 @param pAdapter : [in] pointer to adapter context
278 @return : VOS_STATUS_E_FAILURE if any errors encountered
279 : VOS_STATUS_SUCCESS otherwise
280 =========================================================================== */
281extern VOS_STATUS hdd_softap_Deregister_BC_STA( hdd_adapter_t *pAdapter);
282
283/**============================================================================
284 @brief hdd_softap_stop_bss - Helper function to stop bss and do cleanup in HDD and TL
285
286 @param pAdapter : [in] pointer to adapter context
287 @return : VOS_STATUS_E_FAILURE if any errors encountered
288 : VOS_STATUS_SUCCESS otherwise
289 =========================================================================== */
290extern VOS_STATUS hdd_softap_stop_bss( hdd_adapter_t *pHostapdAdapter);
291
292
293/**============================================================================
294 @brief hdd_softap_change_STA_state - Helper function to change station state by MAC address
295
296 @param pAdapter : [in] pointer to adapter context
297 @param pDestMacAddress : [in] pointer to station MAC address
298 @param state : [in] new station state
299 @return : VOS_STATUS_E_FAILURE if any errors encountered
300 : VOS_STATUS_SUCCESS otherwise
301 =========================================================================== */
302extern VOS_STATUS hdd_softap_change_STA_state( hdd_adapter_t *pAdapter, v_MACADDR_t *pDestMacAddress, WLANTL_STAStateType state);
303
304/**============================================================================
305 @brief hdd_softap_GetStaId - Helper function to get station Id from MAC address
306
307 @param pAdapter : [in] pointer to adapter context
308 @param pDestMacAddress : [in] pointer to station MAC address
309 @param staId : [out] station id
310 @return : VOS_STATUS_E_FAILURE if any errors encountered
311 : VOS_STATUS_SUCCESS otherwise
312 =========================================================================== */
313extern VOS_STATUS hdd_softap_GetStaId( hdd_adapter_t *pAdapter, v_MACADDR_t *pMacAddress, v_U8_t *staId);
314
Madan Mohan Koyyalamudie68989b2013-09-10 01:15:19 +0530315/**============================================================================
316 @brief hdd_softap_GetConnectedStaId - Helper function to get station Id of the connected device
317
318 @param pAdapter : [in] pointer to adapter context
319 @param staId : [out] station id
320 @return : VOS_STATUS_E_FAILURE if any errors encountered
321 : VOS_STATUS_SUCCESS otherwise
322 =========================================================================== */
323extern VOS_STATUS hdd_softap_GetConnectedStaId( hdd_adapter_t *pAdapter, v_U8_t *staId);
324
Kiet Lambcf38522013-10-26 18:28:27 +0530325/**==========================================================================
326
327 \brief hdd_start_trafficMonitor() -
328 This function dynamically enable traffic monitor functonality
329 the command iwpriv wlanX setTrafficMon <value>.
330
331 @param pAdapter : [in] pointer to adapter context
332 @return : VOS_STATUS_E_FAILURE if any errors encountered
333
334 ========================================================================== */
335VOS_STATUS hdd_start_trafficMonitor( hdd_adapter_t *pAdapter );
336
337/**==========================================================================
338
339 \brief hdd_stop_trafficMonitor() -
340 This function dynamically disable traffic monitor functonality
341 the command iwpriv wlanX setTrafficMon <value>.
342
343 @param pAdapter : [in] pointer to adapter context
344 @return : VOS_STATUS_E_FAILURE if any errors encountered
345
346 ========================================================================== */
347VOS_STATUS hdd_stop_trafficMonitor( hdd_adapter_t *pAdapter );
348
Jeff Johnson295189b2012-06-20 16:38:30 -0700349#endif // end #if !defined( WLAN_HDD_SOFTAP_TX_RX_H )