blob: a41cc1cfdeda0498d77ab2dcaf8b491b958c4ec7 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Hanumanth Reddy Pothula15bc0fa2017-02-03 17:24:17 +05302 * Copyright (c) 2012-2013, 2017 The Linux Foundation. All rights reserved.
Kiet Lam842dad02014-02-18 18:44:02 -08003 *
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 ===========================================================================*/
Hanumanth Reddy Pothula15bc0fa2017-02-03 17:24:17 +0530117extern VOS_STATUS hdd_softap_init_tx_rx(hdd_adapter_t *pAdapter, bool re_init);
Jeff Johnson295189b2012-06-20 16:38:30 -0700118
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 ===========================================================================*/
Hanumanth Reddy Pothula15bc0fa2017-02-03 17:24:17 +0530127extern VOS_STATUS hdd_softap_deinit_tx_rx(hdd_adapter_t *pAdapter,
128 bool re_init);
Jeff Johnson295189b2012-06-20 16:38:30 -0700129
130/**============================================================================
131 @brief hdd_softap_init_tx_rx_sta() - Init function to initialize a station in Tx/RX
132 modules in HDD
133
134 @param pAdapter : [in] pointer to adapter context
135 @param STAId : [in] Station ID to deinit
136 @param pmacAddrSTA : [in] pointer to the MAC address of the station
137 @return : VOS_STATUS_E_FAILURE if any errors encountered
138 : VOS_STATUS_SUCCESS otherwise
139 ===========================================================================*/
140extern VOS_STATUS hdd_softap_init_tx_rx_sta( hdd_adapter_t *pAdapter, v_U8_t STAId, v_MACADDR_t *pmacAddrSTA);
141
142/**============================================================================
143 @brief hdd_softap_deinit_tx_rx_sta() - Deinit function to clean up a statioin in Tx/RX
144 modules in HDD
145
146 @param pAdapter : [in] pointer to adapter context
147 @param STAId : [in] Station ID to deinit
148 @return : VOS_STATUS_E_FAILURE if any errors encountered
149 : VOS_STATUS_SUCCESS otherwise
150 ===========================================================================*/
151extern VOS_STATUS hdd_softap_deinit_tx_rx_sta ( hdd_adapter_t *pAdapter, v_U8_t STAId );
152
153/**============================================================================
154 @brief hdd_disconnect_tx_rx() - Disconnect function to clean up Tx/RX
155 modules in HDD
156
157 @param pAdapter : [in] pointer to adapter context
158 @return : VOS_STATUS_E_FAILURE if any errors encountered
159 : VOS_STATUS_SUCCESS otherwise
160 ===========================================================================*/
161extern VOS_STATUS hdd_softap_disconnect_tx_rx( hdd_adapter_t *pAdapter );
162
163/**============================================================================
164 @brief hdd_tx_complete_cbk() - Callback function invoked by TL
165 to indicate that a packet has been transmitted across the SDIO bus
166 succesfully. OS packet resources can be released after this cbk.
167
168 @param vosContext : [in] pointer to VOS context
169 @param pVosPacket : [in] pointer to VOS packet (containing skb)
170 @param vosStatusIn : [in] status of the transmission
171
172 @return : VOS_STATUS_E_FAILURE if any errors encountered
173 : VOS_STATUS_SUCCESS otherwise
174 ===========================================================================*/
175extern VOS_STATUS hdd_softap_tx_complete_cbk( v_VOID_t *vosContext,
176 vos_pkt_t *pVosPacket,
177 VOS_STATUS vosStatusIn );
178
179/**============================================================================
180 @brief hdd_softap_tx_fetch_packet_cbk() - Callback function invoked by TL to
181 fetch a packet for transmission.
182
183 @param vosContext : [in] pointer to VOS context
184 @param staId : [in] Station for which TL is requesting a pkt
185 @param ucAC : [in] pointer to access category requested by TL
186 @param pVosPacket : [out] pointer to VOS packet packet pointer
187 @param pPktMetaInfo : [out] pointer to meta info for the pkt
188
189 @return : VOS_STATUS_E_EMPTY if no packets to transmit
190 : VOS_STATUS_E_FAILURE if any errors encountered
191 : VOS_STATUS_SUCCESS otherwise
192 ===========================================================================*/
193extern VOS_STATUS hdd_softap_tx_fetch_packet_cbk( v_VOID_t *vosContext,
194 v_U8_t *pStaId,
195 WLANTL_ACEnumType ucAC,
196 vos_pkt_t **ppVosPacket,
197 WLANTL_MetaInfoType *pPktMetaInfo );
198
199/**============================================================================
200 @brief hdd_softap_tx_low_resource_cbk() - Callback function invoked in the
201 case where VOS packets are not available at the time of the call to get
202 packets. This callback function is invoked by VOS when packets are
203 available.
204
205 @param pVosPacket : [in] pointer to VOS packet
206 @param userData : [in] opaque user data that was passed initially
207
208 @return : VOS_STATUS_E_FAILURE if any errors encountered,
209 : VOS_STATUS_SUCCESS otherwise
210 =============================================================================*/
211extern VOS_STATUS hdd_softap_tx_low_resource_cbk( vos_pkt_t *pVosPacket,
212 v_VOID_t *userData );
213
214/**============================================================================
215 @brief hdd_softap_rx_packet_cbk() - Receive callback registered with TL.
216 TL will call this to notify the HDD when a packet was received
217 for a registered STA.
218
219 @param vosContext : [in] pointer to VOS context
220 @param pVosPacket : [in] pointer to VOS packet (conatining sk_buff)
221 @param staId : [in] Station Id
222 @param pRxMetaInfo : [in] pointer to meta info for the received pkt(s)
223
224 @return : VOS_STATUS_E_FAILURE if any errors encountered,
225 : VOS_STATUS_SUCCESS otherwise
226 ===========================================================================*/
227extern VOS_STATUS hdd_softap_rx_packet_cbk( v_VOID_t *vosContext,
228 vos_pkt_t *pVosPacket,
229 v_U8_t staId,
230 WLANTL_RxMetaInfoType* pRxMetaInfo );
231
232/**============================================================================
233 @brief hdd_softap_DeregisterSTA - Deregister a station from TL block
234
235 @param pAdapter : [in] pointer to adapter context
236 @param STAId : [in] Station ID to deregister
237 @return : VOS_STATUS_E_FAILURE if any errors encountered
238 : VOS_STATUS_SUCCESS otherwise
239 ===========================================================================*/
240extern VOS_STATUS hdd_softap_DeregisterSTA( hdd_adapter_t *pAdapter, tANI_U8 staId );
241
242/**============================================================================
243 @brief hdd_softap_RegisterSTA - Register a station into TL block
244
245 @param pAdapter : [in] pointer to adapter context
246 @param STAId : [in] Station ID to deregister
247 @param fAuthRequired: [in] Station requires further security negotiation or not
248 @param fPrivacyBit : [in] privacy bit needs to be set or not
249 @param ucastSig : [in] Unicast Signature send to TL
250 @param bcastSig : [in] Broadcast Signature send to TL
251 @param pPeerMacAddress : [in] station MAC address
252 @param fWmmEnabled : [in] Wmm enabled sta or not
253 @return : VOS_STATUS_E_FAILURE if any errors encountered
254 : VOS_STATUS_SUCCESS otherwise
255 =========================================================================== */
256extern VOS_STATUS hdd_softap_RegisterSTA( hdd_adapter_t *pAdapter,
257 v_BOOL_t fAuthRequired,
258 v_BOOL_t fPrivacyBit,
259 v_U8_t staId,
260 v_U8_t ucastSig,
261 v_U8_t bcastSig,
262 v_MACADDR_t *pPeerMacAddress,
263 v_BOOL_t fWmmEnabled);
264
265/**============================================================================
266 @brief hdd_softap_Register_BC_STA - Register a default broadcast station into TL block
267
268 @param pAdapter : [in] pointer to adapter context
269 @param fPrivacyBit : [in] privacy bit needs to be set or not
270 @return : VOS_STATUS_E_FAILURE if any errors encountered
271 : VOS_STATUS_SUCCESS otherwise
272 =========================================================================== */
273extern VOS_STATUS hdd_softap_Register_BC_STA( hdd_adapter_t *pAdapter, v_BOOL_t fPrivacyBit);
274
275/**============================================================================
276 @brief hdd_softap_DeregisterSTA - DeRegister the default broadcast station into TL block
277
278 @param pAdapter : [in] pointer to adapter context
279 @return : VOS_STATUS_E_FAILURE if any errors encountered
280 : VOS_STATUS_SUCCESS otherwise
281 =========================================================================== */
282extern VOS_STATUS hdd_softap_Deregister_BC_STA( hdd_adapter_t *pAdapter);
283
284/**============================================================================
285 @brief hdd_softap_stop_bss - Helper function to stop bss and do cleanup in HDD and TL
286
287 @param pAdapter : [in] pointer to adapter context
288 @return : VOS_STATUS_E_FAILURE if any errors encountered
289 : VOS_STATUS_SUCCESS otherwise
290 =========================================================================== */
291extern VOS_STATUS hdd_softap_stop_bss( hdd_adapter_t *pHostapdAdapter);
292
293
294/**============================================================================
295 @brief hdd_softap_change_STA_state - Helper function to change station state by MAC address
296
297 @param pAdapter : [in] pointer to adapter context
298 @param pDestMacAddress : [in] pointer to station MAC address
299 @param state : [in] new station state
300 @return : VOS_STATUS_E_FAILURE if any errors encountered
301 : VOS_STATUS_SUCCESS otherwise
302 =========================================================================== */
303extern VOS_STATUS hdd_softap_change_STA_state( hdd_adapter_t *pAdapter, v_MACADDR_t *pDestMacAddress, WLANTL_STAStateType state);
304
305/**============================================================================
306 @brief hdd_softap_GetStaId - Helper function to get station Id from MAC address
307
308 @param pAdapter : [in] pointer to adapter context
309 @param pDestMacAddress : [in] pointer to station MAC address
310 @param staId : [out] station id
311 @return : VOS_STATUS_E_FAILURE if any errors encountered
312 : VOS_STATUS_SUCCESS otherwise
313 =========================================================================== */
314extern VOS_STATUS hdd_softap_GetStaId( hdd_adapter_t *pAdapter, v_MACADDR_t *pMacAddress, v_U8_t *staId);
315
Madan Mohan Koyyalamudie68989b2013-09-10 01:15:19 +0530316/**============================================================================
317 @brief hdd_softap_GetConnectedStaId - Helper function to get station Id of the connected device
318
319 @param pAdapter : [in] pointer to adapter context
320 @param staId : [out] station id
321 @return : VOS_STATUS_E_FAILURE if any errors encountered
322 : VOS_STATUS_SUCCESS otherwise
323 =========================================================================== */
324extern VOS_STATUS hdd_softap_GetConnectedStaId( hdd_adapter_t *pAdapter, v_U8_t *staId);
325
Kiet Lambcf38522013-10-26 18:28:27 +0530326/**==========================================================================
327
328 \brief hdd_start_trafficMonitor() -
329 This function dynamically enable traffic monitor functonality
330 the command iwpriv wlanX setTrafficMon <value>.
331
332 @param pAdapter : [in] pointer to adapter context
333 @return : VOS_STATUS_E_FAILURE if any errors encountered
334
335 ========================================================================== */
Hanumanth Reddy Pothula15bc0fa2017-02-03 17:24:17 +0530336VOS_STATUS hdd_start_trafficMonitor(hdd_adapter_t *pAdapter, bool re_init);
Kiet Lambcf38522013-10-26 18:28:27 +0530337
338/**==========================================================================
339
340 \brief hdd_stop_trafficMonitor() -
341 This function dynamically disable traffic monitor functonality
342 the command iwpriv wlanX setTrafficMon <value>.
343
344 @param pAdapter : [in] pointer to adapter context
345 @return : VOS_STATUS_E_FAILURE if any errors encountered
346
347 ========================================================================== */
Hanumanth Reddy Pothula15bc0fa2017-02-03 17:24:17 +0530348VOS_STATUS hdd_stop_trafficMonitor( hdd_adapter_t *pAdapter, bool re_init);
Kiet Lambcf38522013-10-26 18:28:27 +0530349
Jeff Johnson295189b2012-06-20 16:38:30 -0700350#endif // end #if !defined( WLAN_HDD_SOFTAP_TX_RX_H )