wlan: API changes for EXTScan in the firmware.
Firmware definitions for Extended Scan.
Change-Id: Ibf9dd4774c3eb7a96fc105e7f4615fce15d9b1aa
CRs-fixed: 677849
diff --git a/riva/inc/wlan_hal_msg.h b/riva/inc/wlan_hal_msg.h
index d67b852..f455732 100644
--- a/riva/inc/wlan_hal_msg.h
+++ b/riva/inc/wlan_hal_msg.h
@@ -122,6 +122,12 @@
#define WLAN_HAL_ROAM_SACN_PMK_SIZE 32
#define WLAN_HAL_ROAM_SCAN_RESERVED_BYTES 20
+#define WLAN_HAL_EXT_SCAN_MAX_CHANNELS 16
+#define WLAN_HAL_EXT_SCAN_MAX_BUCKETS 16
+#define WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS 128
+#define WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS 64
+#define WLAN_HAL_EXT_SCAN_MAX_RSSI_SAMPLE_SIZE 8
+
/* Message types for messages exchanged between WDI and HAL */
typedef enum
{
@@ -480,6 +486,32 @@
WLAN_HAL_LL_CLEAR_STATS_REQ = 266,
WLAN_HAL_LL_CLEAR_STATS_RSP = 267,
WLAN_HAL_LL_NOTIFY_STATS = 268,
+
+ /* WLAN EXT_SCAN Messages */
+ WLAN_HAL_EXT_SCAN_START_REQ = 269,
+ WLAN_HAL_EXT_SCAN_START_RSP = 270,
+ WLAN_HAL_EXT_SCAN_GET_CAP_REQ = 271,
+ WLAN_HAL_EXT_SCAN_GET_CAP_RSP = 272,
+ WLAN_HAL_EXT_SCAN_STOP_REQ = 273,
+ WLAN_HAL_EXT_SCAN_STOP_RSP = 274,
+ WLAN_HAL_EXT_SCAN_GET_SCAN_REQ = 275,
+ WLAN_HAL_EXT_SCAN_GET_SCAN_RSP = 276,
+
+ WLAN_HAL_BSSID_HOTLIST_SET_REQ = 277,
+ WLAN_HAL_BSSID_HOTLIST_SET_RSP = 278,
+ WLAN_HAL_BSSID_HOTLIST_RESET_REQ = 279,
+ WLAN_HAL_BSSID_HOTLIST_RESET_RSP = 280,
+
+ WLAN_HAL_SIG_RSSI_SET_REQ = 281,
+ WLAN_HAL_SIG_RSSI_SET_RSP = 282,
+ WLAN_HAL_SIG_RSSI_RESET_REQ = 283,
+ WLAN_HAL_SIG_RSSI_RESET_RSP = 284,
+
+ WLAN_HAL_EXT_SCAN_RESULT_IND = 285,
+ WLAN_HAL_BSSID_HOTLIST_RESULT_IND = 286,
+ WLAN_HAL_SIG_RSSI_RESULT_IND = 287,
+ WLAN_HAL_EXT_SCAN_PROGRESS_IND = 288,
+ WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND = 289,
WLAN_HAL_LL_LAST = WLAN_HAL_LL_NOTIFY_STATS,
WLAN_HAL_MSG_MAX = WLAN_HAL_MSG_TYPE_MAX_ENUM_SIZE
@@ -7644,6 +7676,468 @@
tANI_U8 result[1];
} tHalMacLlNotifyStats, *tpHalMacLlNotifyStats;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_START_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE enum PACKED_POST
+{
+ EXT_SCAN_CHANNEL_BAND_UNSPECIFIED = 0x0000,
+ EXT_SCAN_CHANNEL_BAND_BG = 0x0001, // 2.4 GHz
+ EXT_SCAN_CHANNEL_BAND_A = 0x0002, // 5 GHz without DFS
+ EXT_SCAN_CHANNEL_BAND_A_DFS = 0x0004, // 5 GHz DFS only
+ EXT_SCAN_CHANNEL_BAND_A_WITH_DFS = 0x0006, // 5 GHz with DFS
+ EXT_SCAN_CHANNEL_BAND_ABG = 0x0003, // 2.4 GHz + 5 GHz; no DFS
+ EXT_SCAN_CHANNEL_BAND_ABG_WITH_DFS = 0x0007, // 2.4 GHz + 5 GHz with DFS
+} tExtScanChannelBandMask;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 channel; // frequency
+ tANI_U32 dwellTimeMs; // dwell time hint
+ tANI_U8 passive; // 0 => active,
+ // 1 => passive scan; ignored for DFS
+}tExtScanChannelSpec, *tpExtScanChannelSpec;
+
+typedef PACKED_PRE struct PACKED_POST
+ {
+ /* bucket index, 0 based */
+ tANI_U8 bucketId;
+ /* when equal to EXT_SCAN_CHANNEL_BAND_UNSPECIFIED, use channel list */
+ tExtScanChannelBandMask channelBand;
+ /* multiplier to be applied to the periodic scan's base period */
+ tANI_U32 period;
+ /* 0 => normal reporting (reporting rssi history only,
+ when rssi history buffer is % full)
+ * 1 => same as 0 + report a scan completion event after scanning this bucket
+ * 2 => same as 1 + forward scan results (beacons/probe responses + IEs) in
+ real time to HAL (Required for L = P0)
+ * 3 => same as 2 + forward scan results (beacons/probe responses + IEs) in
+ real time to host (Not required for L = P3) */
+ tANI_U8 reportEvents;
+ /* number of channels */
+ tANI_U8 numChannels;
+ /* if channels to scan. In the TLV channelList[] */
+ tExtScanChannelSpec channelList[WLAN_HAL_EXT_SCAN_MAX_CHANNELS];
+}tExtScanBucketData, *tpExtScanBucketData;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U8 sessionId;
+ /* Base period (milliseconds) used by scan buckets to define periodicity
+ of the scans */
+ tANI_U32 basePeriod;
+ /* number of APs to store in each scan in the BSSID/RSSI history buffer
+ (keep the most significant, i.e. stronger RSSI) */
+ tANI_U32 maxApPerScan;
+ /* in %, when buffer is this much full, wake up host */
+ tANI_U32 reportThreshold;
+ /* This will be off channel minimum time */
+ tANI_U16 neighborScanChannelMinTime;
+ /* This will be out off channel max time */
+ tANI_U16 neighborScanChannelMaxTime;
+ /* This will be the home (BSS) channel time */
+ tANI_U16 homeAwayTime;
+ /* number of buckets (maximum 8) */
+ tANI_U8 numBuckets;
+ /* Buckets data */
+ tExtScanBucketData bucketData[WLAN_HAL_EXT_SCAN_MAX_BUCKETS];
+} tHalExtScanStartReq, *tpHalExtScanStartReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanStartReq extScanStartReq;
+}tHalExtScanStartReqMsg, *tpHalExtScanStartReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_START_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+}tHalExtScanStartRsp, *tpHalExtScanStartRsp;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanStartRsp extScanStartRsp;
+}tHalExtScanStartRspMsg, *tpHalExtScanStartRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_GET_CAP_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U8 sessionId;
+}tHalExtScanGetCapReq, *tpHalExtScanGetCapReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanGetCapReq extScanGetCapReq;
+}tHalExtScanGetCapReqMsg, *tpHalExtScanGetCapReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_GET_CAP_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+
+ tANI_U32 scanCacheSize;
+ tANI_U32 scanBuckets;
+ tANI_U32 maxApPerScan;
+ tANI_U32 maxRssiSampleSize;
+ tANI_U32 maxScanReportingThreshold;
+
+ tANI_U32 maxHotlistAPs;
+ tANI_U32 maxSignificantWifiChangeAPs;
+
+ tANI_U32 maxBssidHistoryEntries;
+}tHalExtScanGetCapRsp, *tpHalExtScanGetCapRsp;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanGetCapRsp extScanGetCapRsp;
+}tHalExtScanGetCapRspMsg, *tpHalExtScanGetCapRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_GET_SCAN_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U8 sessionId;
+ /*
+ * 1 return cached results and flush it
+ * 0 return cached results and do not flush
+ */
+ tANI_BOOLEAN flush;
+}tHalExtScanGetScanReq, *tpHalExtScanGetScanReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanGetScanReq getScanReq;
+}tHalExtScanGetScanReqMsg, *tpHalExtScanGetScanReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_GET_SCAN_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+}tHalExtScanGetScanRsp, *tpHalExtScanGetScanRsp;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanGetScanRsp getScanRsp;
+}tHalExtScanGetScanRspMsg, *tpHalExtScanGetScanRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_RESULT_IND
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U64 ts; // time of discovery
+ tANI_U8 ssid[32+1]; // null terminated SSID
+ tSirMacAddr bssid; // BSSID
+ tANI_U32 channel; // channel frequency in MHz
+ tANI_S32 rssi; // RSSI in dBm
+ tANI_U32 rtt; // RTT in nanoseconds - not expected
+ tANI_U32 rttSd; // standard deviation in rtt - not expected
+ tANI_U16 beaconPeriod; // period advertised in the beacon
+ tANI_U16 capability; // capabilities advertised in the beacon
+} tHalExtScanResultParams, *tpHalExtScanResultParams;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tANI_U32 requestId;
+ tANI_U32 scanResultSize;
+ tANI_BOOLEAN moreData;
+ tANI_U8 extScanResult[1];
+}tHalExtScanResultIndMsg, *tpHalExtScanResultIndMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_STOP_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U8 sessionId;
+}tHalExtScanStopReq, *tpHalExtScanStopReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanStopReq extScanStopReq;
+}tHalExtScanStopReqMsg, *tpHalExtScanStopReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_STOP_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+}tHalExtScanStopRsp, *tpHalExtScanStopRsp;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanStopRsp extScanStopRsp;
+}tHalExtScanStopRspMsg, *tpHalExtScanStopRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_PROGRESS_IND
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE enum PACKED_POST
+{
+ WLAN_HAL_EXT_SCAN_BUFFER_FULL,
+ WLAN_HAL_EXT_SCAN_COMPLETE,
+} tHalExtScanProgressEventType;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+ tHalExtScanProgressEventType extScanEventType;
+}tHalExtScanProgressInd, *tpHalExtScanProgressInd;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanProgressInd extScanProgressInd;
+}tHalExtScanProgressIndMsg, *tpHalExtScanProgressIndMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 numOfScanResAvailable;
+}tHalExtScanResAvailableInd, tpHalExtScanResAvailableInd;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalExtScanResAvailableInd extScanResAvailableInd;
+}tHalExtScanResAvailableIndMsg, *tpHalExtScanResAvailableIndMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_SIG_RSSI_SET_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ /* AP BSSID */
+ tSirMacAddr bssid;
+ /* low threshold - used in L for significant_change - not used in L for
+ hotlist*/
+ tANI_S32 lowRssiThreshold;
+ /* high threshold - used in L for significant rssi - used in L for hotlist */
+ tANI_S32 highRssiThreshold;
+ /* channel hint */
+ tANI_U32 channel;
+} tApThresholdParams, *tpApThresholdParams;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U8 sessionId;
+ /* number of samples for averaging RSSI */
+ tANI_U32 rssiSampleSize;
+ /* number of missed samples to confirm AP loss */
+ tANI_U32 lostApSampleSize;
+ /* number of APs breaching threshold required for firmware to generate event */
+ tANI_U32 minBreaching;
+ /* number of significant APs */
+ tANI_U32 numAp;
+ /* significant APs */
+ tApThresholdParams ap[WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS];
+} tHalSigRssiSetReq, *tpHalSigRssiSetReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalSigRssiSetReq extScanSigRssiReq;
+}tHalSigRssiSetReqMsg, *tpHalSigRssiSetReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_SIG_RSSI_SET_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+}tHalSigRssiSetRsp, *tpHalSigRssiSetRsp;
+
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalSigRssiSetRsp sigRssiSetRsp;
+}tHalSigRssiSetRspMsg, *tpHalSigRssiSetRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_SIG_RSSI_RESET_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+}tHalSigRssiResetReq, *tpHalSigRssiResetReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalSigRssiResetReq sigRssiResetReq;
+}tHalSigRssiResetReqMsg, *tpHalSigRssiResetReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_SIG_RSSI_RESET_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+}tHalSigRssiResetRsp, *tpHalSigRssiResetRsp;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalSigRssiResetRsp sigRssiResetRsp;
+}tHalSigRssiResetRspMsg, *tpHalSigRssiResetRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_SIG_RSSI_RESULT_IND
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ // BSSID
+ tSirMacAddr bssid;
+ // channel frequency in MHz
+ tANI_U32 channel;
+ // number of rssi samples
+ tANI_U8 numRssi;
+ // RSSI history in db
+ tANI_S32 rssi[WLAN_HAL_EXT_SCAN_MAX_RSSI_SAMPLE_SIZE];
+} tHalSigRssiResultParams, *tpHalSigRssiResultParams;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tANI_U32 requestId;
+ tANI_U32 numSigRssiBss;
+ tANI_BOOLEAN moreData;
+ tANI_U8 sigRssiResult[1];
+}tHalSigRssiResultIndMsg, *tpHalSigRssiResultIndMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_BSSID_HOTLIST_SET_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U8 sessionId;
+ // number of hotlist APs
+ tANI_U32 numAp;
+ // hotlist APs
+ tApThresholdParams ap[WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS];
+} tHalBssidHotlistSetReq, *tpHalBssidHotlistSetReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalBssidHotlistSetReq bssidHotlistSetReq;
+}tHalHotlistSetReqMsg, *tpHalHotlistSetReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_BSSID_HOTLIST_SET_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+}tHalHotlistSetRsp, *tpHalHotlistSetRsp;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalHotlistSetRsp hotlistSetRsp;
+}tHalHotlistSetRspMsg, *tpHalHotlistSetRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_BSSID_HOTLIST_RESET_REQ
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+}tHalHotlistResetReq, *tpHalHotlistResetReq;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalHotlistResetReq hotlistResetReq;
+}tHalHotlistResetReqMsg, *tpHalHotlistResetReqMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_BSSID_HOTLIST_RESET_RSP
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tANI_U32 requestId;
+ tANI_U32 status;
+}tHalHotlistResetRsp, *tpHalHotlistResetRsp;
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tHalHotlistResetRsp hotlistResetRsp;
+}tHalHotlistResetRspMsg, *tpHalHotlistResetRspMsg;
+
+/*---------------------------------------------------------------------------
+ * WLAN_HAL_BSSID_HOTLIST_RESULT_IND
+ *-------------------------------------------------------------------------*/
+
+typedef PACKED_PRE struct PACKED_POST
+{
+ tHalMsgHeader header;
+ tANI_U32 requestId;
+ tANI_U32 numHotlistBss;
+ tANI_BOOLEAN moreData;
+ tANI_U8 bssHotlist[1];
+}tHalHotlistResultIndMsg, *tpHalHotlistResultIndMsg;
+
+
#if defined(__ANI_COMPILER_PRAGMA_PACK_STACK)
#pragma pack(pop)
#elif defined(__ANI_COMPILER_PRAGMA_PACK)