prima: WLAN Driver Release 3.1.7.9

This is the initial release of the Prima WLAN Driver
diff --git a/CORE/HDD/inc/wlan_hdd_softap_tx_rx.h b/CORE/HDD/inc/wlan_hdd_softap_tx_rx.h
new file mode 100644
index 0000000..4f566d9
--- /dev/null
+++ b/CORE/HDD/inc/wlan_hdd_softap_tx_rx.h
@@ -0,0 +1,302 @@
+/*
+ * Copyright (c) 2012, Code Aurora Forum. All rights reserved.
+ *
+ * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+ *
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+
+#if !defined( WLAN_HDD_SOFTAP_TX_RX_H )
+#define WLAN_HDD_SOFTAP_TX_RX_H
+
+/**===========================================================================
+  
+  \file  wlan_hdd_softap_tx_rx.h
+  
+  \brief Linux HDD SOFTAP Tx/RX APIs
+         Copyright 2008 (c) Qualcomm, Incorporated.
+         All Rights Reserved.
+         Qualcomm Confidential and Proprietary.
+  
+  ==========================================================================*/
+  
+/*--------------------------------------------------------------------------- 
+  Include files
+  -------------------------------------------------------------------------*/ 
+#include <wlan_hdd_hostapd.h>
+
+/*--------------------------------------------------------------------------- 
+  Preprocessor definitions and constants
+  -------------------------------------------------------------------------*/ 
+#define HDD_SOFTAP_TX_BK_QUEUE_MAX_LEN (82*2)
+#define HDD_SOFTAP_TX_BE_QUEUE_MAX_LEN (78*2)
+#define HDD_SOFTAP_TX_VI_QUEUE_MAX_LEN (74*2)
+#define HDD_SOFTAP_TX_VO_QUEUE_MAX_LEN (70*2)
+
+/* SoftAP specific AC Weights */
+#define HDD_SOFTAP_BK_WEIGHT_DEFAULT                        1
+#define HDD_SOFTAP_BE_WEIGHT_DEFAULT                        3
+#define HDD_SOFTAP_VI_WEIGHT_DEFAULT                        8
+#define HDD_SOFTAP_VO_WEIGHT_DEFAULT                        18
+
+/*--------------------------------------------------------------------------- 
+  Type declarations
+  -------------------------------------------------------------------------*/ 
+ 
+/*--------------------------------------------------------------------------- 
+  Function declarations and documenation
+  -------------------------------------------------------------------------*/ 
+
+/**============================================================================
+  @brief hdd_softap_hard_start_xmit() - Function registered with the Linux OS for 
+  transmitting packets
+
+  @param skb      : [in]  pointer to OS packet (sk_buff)
+  @param dev      : [in] pointer to Libra softap network device
+  
+  @return         : NET_XMIT_DROP if packets are dropped
+                  : NET_XMIT_SUCCESS if packet is enqueued succesfully
+  ===========================================================================*/
+extern int hdd_softap_hard_start_xmit(struct sk_buff *skb, struct net_device *dev);
+
+/**============================================================================
+  @brief hdd_softap_tx_timeout() - Function called by OS if there is any
+  timeout during transmission. Since HDD simply enqueues packet
+  and returns control to OS right away, this would never be invoked
+
+  @param dev : [in] pointer to Libra network device
+  @return    : None
+  ===========================================================================*/
+extern void hdd_softap_tx_timeout(struct net_device *dev);
+
+/**============================================================================
+  @brief hdd_softap_stats() - Function registered with the Linux OS for 
+  device TX/RX statistics
+
+  @param dev      : [in] pointer to Libra network device
+  
+  @return         : pointer to net_device_stats structure
+  ===========================================================================*/
+extern struct net_device_stats* hdd_softap_stats(struct net_device *dev);
+
+/**============================================================================
+  @brief hdd_softap_init_tx_rx() - Init function to initialize Tx/RX
+  modules in HDD
+
+  @param pAdapter : [in] pointer to adapter context  
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_init_tx_rx( hdd_adapter_t *pAdapter );
+
+/**============================================================================
+  @brief hdd_softap_deinit_tx_rx() - Deinit function to clean up Tx/RX
+  modules in HDD
+
+  @param pAdapter : [in] pointer to adapter context  
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_deinit_tx_rx( hdd_adapter_t *pAdapter );
+
+/**============================================================================
+  @brief hdd_softap_init_tx_rx_sta() - Init function to initialize a station in Tx/RX
+  modules in HDD
+
+  @param pAdapter : [in] pointer to adapter context
+  @param STAId    : [in] Station ID to deinit
+  @param pmacAddrSTA  : [in] pointer to the MAC address of the station  
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_init_tx_rx_sta( hdd_adapter_t *pAdapter, v_U8_t STAId, v_MACADDR_t *pmacAddrSTA);
+
+/**============================================================================
+  @brief hdd_softap_deinit_tx_rx_sta() - Deinit function to clean up a statioin in Tx/RX
+  modules in HDD
+
+  @param pAdapter : [in] pointer to adapter context
+  @param STAId    : [in] Station ID to deinit 
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_deinit_tx_rx_sta ( hdd_adapter_t *pAdapter, v_U8_t STAId );
+
+/**============================================================================
+  @brief hdd_disconnect_tx_rx() - Disconnect function to clean up Tx/RX
+  modules in HDD
+
+  @param pAdapter : [in] pointer to adapter context  
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_disconnect_tx_rx( hdd_adapter_t *pAdapter );
+
+/**============================================================================
+  @brief hdd_tx_complete_cbk() - Callback function invoked by TL
+  to indicate that a packet has been transmitted across the SDIO bus
+  succesfully. OS packet resources can be released after this cbk.
+
+  @param vosContext   : [in] pointer to VOS context   
+  @param pVosPacket   : [in] pointer to VOS packet (containing skb) 
+  @param vosStatusIn  : [in] status of the transmission 
+
+  @return             : VOS_STATUS_E_FAILURE if any errors encountered 
+                      : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_tx_complete_cbk( v_VOID_t *vosContext, 
+                                       vos_pkt_t *pVosPacket, 
+                                       VOS_STATUS vosStatusIn );
+
+/**============================================================================
+  @brief hdd_softap_tx_fetch_packet_cbk() - Callback function invoked by TL to 
+  fetch a packet for transmission.
+
+  @param vosContext   : [in] pointer to VOS context  
+  @param staId        : [in] Station for which TL is requesting a pkt
+  @param ucAC         : [in] pointer to access category requested by TL
+  @param pVosPacket   : [out] pointer to VOS packet packet pointer
+  @param pPktMetaInfo : [out] pointer to meta info for the pkt 
+  
+  @return             : VOS_STATUS_E_EMPTY if no packets to transmit
+                      : VOS_STATUS_E_FAILURE if any errors encountered 
+                      : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_tx_fetch_packet_cbk( v_VOID_t *vosContext,
+                                           v_U8_t *pStaId,
+                                           WLANTL_ACEnumType    ucAC,
+                                           vos_pkt_t **ppVosPacket,
+                                           WLANTL_MetaInfoType *pPktMetaInfo );
+
+/**============================================================================
+  @brief hdd_softap_tx_low_resource_cbk() - Callback function invoked in the 
+  case where VOS packets are not available at the time of the call to get 
+  packets. This callback function is invoked by VOS when packets are 
+  available.
+
+  @param pVosPacket : [in]  pointer to VOS packet 
+  @param userData   : [in]  opaque user data that was passed initially 
+  
+  @return           : VOS_STATUS_E_FAILURE if any errors encountered, 
+                    : VOS_STATUS_SUCCESS otherwise
+  =============================================================================*/
+extern VOS_STATUS hdd_softap_tx_low_resource_cbk( vos_pkt_t *pVosPacket, 
+                                           v_VOID_t *userData );
+
+/**============================================================================
+  @brief hdd_softap_rx_packet_cbk() - Receive callback registered with TL.
+  TL will call this to notify the HDD when a packet was received 
+  for a registered STA.
+
+  @param vosContext   : [in] pointer to VOS context  
+  @param pVosPacket   : [in] pointer to VOS packet (conatining sk_buff) 
+  @param staId        : [in] Station Id
+  @param pRxMetaInfo  : [in] pointer to meta info for the received pkt(s) 
+
+  @return             : VOS_STATUS_E_FAILURE if any errors encountered, 
+                      : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_rx_packet_cbk( v_VOID_t *vosContext, 
+                                     vos_pkt_t *pVosPacket, 
+                                     v_U8_t staId,
+                                     WLANTL_RxMetaInfoType* pRxMetaInfo );
+
+/**============================================================================
+  @brief hdd_softap_DeregisterSTA - Deregister a station from TL block
+
+  @param pAdapter : [in] pointer to adapter context
+  @param STAId    : [in] Station ID to deregister
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  ===========================================================================*/
+extern VOS_STATUS hdd_softap_DeregisterSTA( hdd_adapter_t *pAdapter, tANI_U8 staId );
+
+/**============================================================================
+  @brief hdd_softap_RegisterSTA - Register a station into TL block
+
+  @param pAdapter : [in] pointer to adapter context
+  @param STAId    : [in] Station ID to deregister
+  @param fAuthRequired: [in] Station requires further security negotiation or not
+  @param fPrivacyBit  : [in] privacy bit needs to be set or not
+  @param ucastSig  : [in] Unicast Signature send to TL
+  @param bcastSig  : [in] Broadcast Signature send to TL
+  @param pPeerMacAddress  : [in] station MAC address
+  @param fWmmEnabled  : [in] Wmm enabled sta or not
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  =========================================================================== */
+extern VOS_STATUS hdd_softap_RegisterSTA( hdd_adapter_t *pAdapter,
+                                       v_BOOL_t fAuthRequired,
+                                       v_BOOL_t fPrivacyBit,    
+                                       v_U8_t staId,
+                                       v_U8_t ucastSig,
+                                       v_U8_t bcastSig,
+                                       v_MACADDR_t *pPeerMacAddress,
+                                       v_BOOL_t fWmmEnabled);
+
+/**============================================================================
+  @brief hdd_softap_Register_BC_STA - Register a default broadcast station into TL block
+
+  @param pAdapter : [in] pointer to adapter context
+  @param fPrivacyBit : [in] privacy bit needs to be set or not
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  =========================================================================== */
+extern VOS_STATUS hdd_softap_Register_BC_STA( hdd_adapter_t *pAdapter, v_BOOL_t fPrivacyBit);
+
+/**============================================================================
+  @brief hdd_softap_DeregisterSTA - DeRegister the default broadcast station into TL block
+
+  @param pAdapter : [in] pointer to adapter context
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  =========================================================================== */
+extern VOS_STATUS hdd_softap_Deregister_BC_STA( hdd_adapter_t *pAdapter);
+
+/**============================================================================
+  @brief hdd_softap_stop_bss - Helper function to stop bss and do cleanup in HDD and TL
+
+  @param pAdapter : [in] pointer to adapter context
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  =========================================================================== */
+extern VOS_STATUS hdd_softap_stop_bss( hdd_adapter_t *pHostapdAdapter);
+
+
+/**============================================================================
+  @brief hdd_softap_change_STA_state - Helper function to change station state by MAC address
+
+  @param pAdapter : [in] pointer to adapter context
+  @param pDestMacAddress : [in] pointer to station MAC address
+  @param state    : [in] new station state
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  =========================================================================== */
+extern VOS_STATUS hdd_softap_change_STA_state( hdd_adapter_t *pAdapter, v_MACADDR_t *pDestMacAddress, WLANTL_STAStateType state);
+
+/**============================================================================
+  @brief hdd_softap_GetStaId - Helper function to get station Id from MAC address
+
+  @param pAdapter : [in] pointer to adapter context
+  @param pDestMacAddress : [in] pointer to station MAC address
+  @param staId    : [out] station id
+  @return         : VOS_STATUS_E_FAILURE if any errors encountered 
+                  : VOS_STATUS_SUCCESS otherwise
+  =========================================================================== */
+extern VOS_STATUS hdd_softap_GetStaId( hdd_adapter_t *pAdapter, v_MACADDR_t *pMacAddress, v_U8_t *staId);
+
+#endif    // end #if !defined( WLAN_HDD_SOFTAP_TX_RX_H )