qcacld-3.0: Initial snapshot of ihelium wlan driver
qcacld-3.0: Initial snapshot of ihelium wlan driver
to match code-scanned SU Release 5.0.0.139. This is
open-source version of wlan for next Android release.
Change-Id: Icf598ca97da74f84bea607e4e902d1889806f507
diff --git a/core/sme/inc/sme_internal.h b/core/sme/inc/sme_internal.h
new file mode 100644
index 0000000..4ff54c7
--- /dev/null
+++ b/core/sme/inc/sme_internal.h
@@ -0,0 +1,223 @@
+/*
+ * Copyright (c) 2011-2015 The Linux Foundation. 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.
+ */
+
+/*
+ * This file was originally distributed by Qualcomm Atheros, Inc.
+ * under proprietary terms before Copyright ownership was assigned
+ * to the Linux Foundation.
+ */
+
+#if !defined(__SMEINTERNAL_H)
+#define __SMEINTERNAL_H
+
+/**
+ * \file sme_internal.h
+ *
+ * \brief prototype for SME internal structures and APIs used for SME and MAC
+ */
+
+/*--------------------------------------------------------------------------
+ Include Files
+ ------------------------------------------------------------------------*/
+#include "cdf_status.h"
+#include "cdf_lock.h"
+#include "cdf_trace.h"
+#include "cdf_memory.h"
+#include "cdf_types.h"
+#include "host_diag_core_event.h"
+#include "csr_link_list.h"
+#include "sme_power_save.h"
+
+/*--------------------------------------------------------------------------
+ Type declarations
+ ------------------------------------------------------------------------*/
+
+/* Mask can be only have one bit set */
+typedef enum eSmeCommandType {
+ eSmeNoCommand = 0,
+ eSmeDropCommand,
+ /* this is not a command, it is to identify this is a CSR command */
+ eSmeCsrCommandMask = 0x10000,
+ eSmeCommandScan,
+ eSmeCommandRoam,
+ eSmeCommandWmStatusChange,
+ eSmeCommandSetKey,
+ eSmeCommandAddStaSession,
+ eSmeCommandDelStaSession,
+#ifdef FEATURE_WLAN_TDLS
+ /*
+ * eSmeTdlsCommandMask = 0x80000,
+ * To identify TDLS commands <TODO>
+ * These can be considered as csr commands.
+ */
+ eSmeCommandTdlsSendMgmt,
+ eSmeCommandTdlsAddPeer,
+ eSmeCommandTdlsDelPeer,
+ eSmeCommandTdlsLinkEstablish,
+#endif
+ /* PMC */
+ eSmePmcCommandMask = 0x20000, /* To identify PMC commands */
+ eSmeCommandEnterBmps,
+ eSmeCommandExitBmps,
+ eSmeCommandEnterUapsd,
+ eSmeCommandExitUapsd,
+ eSmeCommandExitWowl,
+ eSmeCommandEnterStandby,
+ /* QOS */
+ eSmeQosCommandMask = 0x40000, /* To identify Qos commands */
+ eSmeCommandAddTs,
+ eSmeCommandDelTs,
+#ifdef FEATURE_OEM_DATA_SUPPORT
+ eSmeCommandOemDataReq = 0x80000, /* To identify the oem data commands */
+#endif
+ eSmeCommandRemainOnChannel,
+ e_sme_command_set_hw_mode,
+ e_sme_command_nss_update,
+ e_sme_command_set_dual_mac_config,
+} eSmeCommandType;
+
+typedef enum eSmeState {
+ SME_STATE_STOP,
+ SME_STATE_START,
+ SME_STATE_READY,
+} eSmeState;
+
+#define SME_IS_START(pMac) (SME_STATE_STOP != (pMac)->sme.state)
+#define SME_IS_READY(pMac) (SME_STATE_READY == (pMac)->sme.state)
+
+typedef struct sStatsExtEvent {
+ uint32_t vdev_id;
+ uint32_t event_data_len;
+ uint8_t event_data[];
+} tStatsExtEvent, *tpStatsExtEvent;
+
+#define MAX_ACTIVE_CMD_STATS 16
+
+typedef struct sActiveCmdStats {
+ eSmeCommandType command;
+ uint32_t reason;
+ uint32_t sessionId;
+ uint64_t timestamp;
+} tActiveCmdStats;
+
+typedef struct sSelfRecoveryStats {
+ tActiveCmdStats activeCmdStats[MAX_ACTIVE_CMD_STATS];
+ uint8_t cmdStatsIndx;
+} tSelfRecoveryStats;
+
+#ifdef WLAN_FEATURE_GTK_OFFLOAD
+/* GTK Offload Information Callback declaration */
+typedef void (*gtk_offload_get_info_callback)(void *callback_context,
+ tpSirGtkOffloadGetInfoRspParams
+ pGtkOffloadGetInfoRsp);
+#endif
+#ifdef FEATURE_WLAN_SCAN_PNO
+/*Pref netw found Cb declaration*/
+typedef void (*preferred_network_found_ind_cb)(void *callback_context,
+ tpSirPrefNetworkFoundInd
+ pPrefNetworkFoundInd);
+#endif
+
+typedef void (*ocb_callback)(void *context, void *response);
+typedef void (*sme_set_thermal_level_callback)(void *context, u_int8_t level);
+
+typedef struct tagSmeStruct {
+ eSmeState state;
+ cdf_mutex_t lkSmeGlobalLock;
+ uint32_t totalSmeCmd;
+ void *pSmeCmdBufAddr;
+ tDblLinkList smeCmdActiveList;
+ tDblLinkList smeCmdPendingList;
+ tDblLinkList smeCmdFreeList; /* preallocated roam cmd list */
+ tCDF_CON_MODE currDeviceMode;
+#ifdef FEATURE_WLAN_LPHB
+ void (*pLphbIndCb)(void *pHddCtx, tSirLPHBInd *indParam);
+#endif /* FEATURE_WLAN_LPHB */
+ /* pending scan command list */
+ tDblLinkList smeScanCmdPendingList;
+ /* active scan command list */
+ tDblLinkList smeScanCmdActiveList;
+#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
+ host_event_wlan_status_payload_type eventPayload;
+#endif
+#ifdef FEATURE_WLAN_CH_AVOID
+ void (*pChAvoidNotificationCb)(void *hdd_context, void *indi_param);
+#endif /* FEATURE_WLAN_CH_AVOID */
+#ifdef WLAN_FEATURE_LINK_LAYER_STATS
+ void (*pLinkLayerStatsIndCallback)(void *callbackContext,
+ int indType, void *pRsp);
+#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
+#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
+ void (*pAutoShutdownNotificationCb)(void);
+#endif
+ /* Maximum interfaces allowed by the host */
+ uint8_t max_intf_count;
+ void (*StatsExtCallback)(void *, tStatsExtEvent *);
+ /* linkspeed callback */
+ void (*pLinkSpeedIndCb)(tSirLinkSpeedInfo *indParam,
+ void *pDevContext);
+ void *pLinkSpeedCbContext;
+#ifdef FEATURE_WLAN_EXTSCAN
+ void (*pExtScanIndCb)(void *, const uint16_t, void *);
+#endif /* FEATURE_WLAN_EXTSCAN */
+#ifdef WLAN_FEATURE_NAN
+ void (*nanCallback)(void *, tSirNanEvent *);
+#endif
+ bool enableSelfRecovery;
+ tCsrLinkStatusCallback linkStatusCallback;
+ void *linkStatusContext;
+ /* get temperature event context and callback */
+ void *pTemperatureCbContext;
+ void (*pGetTemperatureCb)(int temperature, void *context);
+ uint8_t miracast_value;
+ struct ps_global_info ps_global_info;
+#ifdef WLAN_FEATURE_GTK_OFFLOAD
+ /* routine to call for GTK Offload Information */
+ gtk_offload_get_info_callback gtk_offload_get_info_cb;
+ /* value to be passed as parameter to routine specified above */
+ void *gtk_offload_get_info_cb_context;
+#endif /* WLAN_FEATURE_GTK_OFFLOAD */
+#ifdef FEATURE_WLAN_SCAN_PNO
+ /* routine to call for Preferred Network Found Indication */
+ preferred_network_found_ind_cb pref_netw_found_cb;
+ /* value to be passed as parameter to routine specified above */
+ void *preferred_network_found_ind_cb_ctx;
+#endif /* FEATURE_WLAN_SCAN_PNO */
+ void (*rssi_threshold_breached_cb)(void *, struct rssi_breach_event *);
+#ifdef WLAN_FEATURE_MEMDUMP
+ void (*fw_dump_callback)(void *context, struct fw_dump_rsp *rsp);
+#endif
+ hw_mode_transition_cb sme_hw_mode_trans_cb;
+ /* OCB callbacks */
+ void *ocb_set_config_context;
+ ocb_callback ocb_set_config_callback;
+ void *ocb_get_tsf_timer_context;
+ ocb_callback ocb_get_tsf_timer_callback;
+ void *dcc_get_stats_context;
+ ocb_callback dcc_get_stats_callback;
+ void *dcc_update_ndl_context;
+ ocb_callback dcc_update_ndl_callback;
+ void *dcc_stats_event_context;
+ ocb_callback dcc_stats_event_callback;
+ sme_set_thermal_level_callback set_thermal_level_cb;
+} tSmeStruct, *tpSmeStruct;
+
+#endif /* #if !defined( __SMEINTERNAL_H ) */