summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSandeep Puligilla <spuligil@qca.qualcomm.com>2015-08-03 20:03:14 -0700
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2015-08-07 14:37:25 +0530
commite092c9dfcfcd84da8795df6d31bb516598e5418c (patch)
treeadee5d1b2fd857c64e0766082b74d5c435979f3d
parenta7edebfc4d93a6078a9298d483991f3d6b066750 (diff)
qcacld-2.0: CL 1354868 - update fw common interface files
add peak index into WMI_DFS_RADAR_EVENT support channel prediction reduction for PNO scan to save power consumption Add WMI support to enable unsolicited IPv6 Network Advertisement filtering Change-Id: I6e22ca8282c566f9f1c4c124bb1b8bf871b8cd15 CRs-Fixed: 865207
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h16
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h56
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c1
4 files changed, 71 insertions, 4 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
index 1c5e669fa949..8587e50aaec2 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -577,6 +577,7 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_soc_set_dual_mac_config_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_soc_set_dual_mac_config_response_event_fixed_param,
WMITLV_TAG_STRUC_WOW_IOAC_SOCK_PATTERN_T,
+ WMITLV_TAG_STRUC_wmi_wow_enable_icmpv6_na_flt_cmd_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -798,7 +799,8 @@ typedef enum {
OP(WMI_RSSI_BREACH_MONITOR_CONFIG_CMDID) \
OP(WMI_SOC_SET_PCL_CMDID) \
OP(WMI_SOC_SET_HW_MODE_CMDID) \
- OP(WMI_SOC_SET_DUAL_MAC_CONFIG_CMDID)
+ OP(WMI_SOC_SET_DUAL_MAC_CONFIG_CMDID) \
+ OP(WMI_WOW_ENABLE_ICMPV6_NA_FLT_CMDID)
/*
* IMPORTANT: Please add _ALL_ WMI Events Here.
@@ -1006,6 +1008,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID);
WMITLV_CREATE_PARAM_STRUC(WMI_WOW_ENABLE_CMDID);
+/* WOW ICMPv6 NA filtering command */
+#define WMITLV_TABLE_WMI_WOW_ENABLE_ICMPV6_NA_FLT_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_wow_enable_icmpv6_na_flt_cmd_fixed_param, wmi_wow_enable_icmpv6_na_flt_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_WOW_ENABLE_ICMPV6_NA_FLT_CMDID);
+
/* Remove Bcn Filter Cmd */
#define WMITLV_TABLE_WMI_RMV_BCN_FILTER_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_rmv_bcn_filter_cmd_fixed_param, wmi_rmv_bcn_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -1027,7 +1035,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_MODE);
/* Roam scan Rssi Threshold Cmd */
#define WMITLV_TABLE_WMI_ROAM_SCAN_RSSI_THRESHOLD(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_scan_rssi_threshold_fixed_param, wmi_roam_scan_rssi_threshold_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_scan_extended_threshold_param, extended_param, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_scan_extended_threshold_param, extended_param, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_earlystop_rssi_thres_param, earlystop_param, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_RSSI_THRESHOLD);
@@ -1393,7 +1402,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_LINK_STATS_CMDID);
#define WMITLV_TABLE_WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_nlo_config_cmd_fixed_param, wmi_nlo_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, nlo_configured_parameters, nlo_list, WMITLV_SIZE_VAR) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR)\
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, nlo_channel_prediction_cfg, channel_prediction_param, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_NETWORK_LIST_OFFLOAD_CONFIG_CMDID);
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index c99d73ff35d3..3ba8163c7afd 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -530,6 +530,8 @@ typedef enum {
WMI_EXTWOW_SET_APP_TYPE1_PARAMS_CMDID,
/* Extend WoW command to configure app type2 parameter */
WMI_EXTWOW_SET_APP_TYPE2_PARAMS_CMDID,
+ /* enable ICMPv6 Network advertisement filtering */
+ WMI_WOW_ENABLE_ICMPV6_NA_FLT_CMDID,
/* RTT measurement related cmd */
/** reques to make an RTT measurement */
@@ -5418,6 +5420,10 @@ typedef struct {
A_UINT32 hirssi_scan_delta;
/** 5G scan upper bound */
A_UINT32 hirssi_upper_bound;
+ /* The TLVs will follow.
+ * wmi_roam_scan_extended_threshold_param extended_param;
+ * wmi_roam_earlystop_rssi_thres_param earlystop_param;
+ */
} wmi_roam_scan_rssi_threshold_fixed_param;
#define WMI_ROAM_5G_BOOST_PENALIZE_ALGO_FIXED 0x0
@@ -5563,6 +5569,21 @@ typedef struct {
A_UINT32 rsn_mcastmgmtcipherset;
} wmi_ap_profile;
+/** Support early stop roaming scanning when finding a strong candidate AP
+ * A 'strong' candidate is
+ * 1) Is eligible candidate
+ * (all conditions are met in existing candidate selection).
+ * 2) Its rssi is better than earlystop threshold.
+ * Earlystop threshold will be relaxed as each channel is scanned.
+ */
+typedef struct {
+ A_UINT32 tlv_header;
+ /* Minimum RSSI threshold value for early stop, unit is dB above NF. */
+ A_UINT32 roam_earlystop_thres_min;
+ /* Maminum RSSI threshold value for early stop, unit is dB above NF. */
+ A_UINT32 roam_earlystop_thres_max;
+} wmi_roam_earlystop_rssi_thres_param;
+
/** Beacon filter wmi command info */
#define BCN_FLT_MAX_SUPPORTED_IES 256
@@ -6289,6 +6310,15 @@ typedef struct {
A_UINT32 reserved0;
} wmi_wow_hostwakeup_from_sleep_cmd_fixed_param;
+#define WOW_ICMPV6_NA_FILTER_DISABLE 0
+#define WOW_ICMPV6_NA_FILTER_ENABLE 1
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_wow_enable_icmpv6_na_flt_cmd_fixed_param */
+ A_UINT32 vdev_id;
+ A_UINT32 enable; /* WOW_ICMPV6_NA_FILTER_ENABLE/DISABLE */
+} wmi_wow_enable_icmpv6_na_flt_cmd_fixed_param;
+
typedef struct bitmap_pattern_s {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_WOW_BITMAP_PATTERN_T */
A_UINT32 patternbuf[WOW_DEFAULT_BITMAP_PATTERN_SIZE_DWORD];
@@ -6910,6 +6940,28 @@ typedef struct nlo_configured_parameters {
wmi_nlo_bcast_nw_param bcast_nw_type; /* indicates if the SSID is hidden or not */
} nlo_configured_parameters;
+/* Support channel prediction for PNO scan after scanning top_k_num channels
+ * if stationary_threshold is met.
+ */
+typedef struct nlo_channel_prediction_cfg {
+ /* Enable or disable this feature. */
+ A_UINT32 enable;
+ /* Top K channels will be scanned before deciding whether to further scan
+ * or stop. Minimum value is 3 and maximum is 5. */
+ A_UINT32 top_k_num;
+ /* Preconfigured stationary threshold.
+ * Lesser value means more conservative. Bigger value means more aggressive.
+ * Maximum is 100 and mininum is 0. */
+ A_UINT32 stationary_threshold;
+ /* Periodic full channel scan in milliseconds unit.
+ * After full_scan_period_ms since last full scan, channel prediction
+ * scan is suppressed and will do full scan.
+ * This is to help detecting sudden AP power-on or -off. Value 0 means no
+ * full scan at all (not recommended).
+ */
+ A_UINT32 full_scan_period_ms;
+} nlo_channel_prediction_cfg;
+
typedef struct wmi_nlo_config {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_nlo_config_cmd_fixed_param */
A_UINT32 flags;
@@ -6929,6 +6981,7 @@ typedef struct wmi_nlo_config {
/* The TLVs will follow.
* nlo_configured_parameters nlo_list[];
* A_UINT32 channel_list[];
+ * nlo_channel_prediction_cfg ch_prediction_cfg;
*/
} wmi_nlo_config_cmd_fixed_param;
@@ -8571,6 +8624,9 @@ typedef struct {
/** For 4-byte aligment padding */
A_UINT8 reserved;
+ /** index of peak magnitude bin (signed) */
+ A_INT32 peak_sidx;
+
} wmi_dfs_radar_event_fixed_param;
typedef struct {
diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h
index d1705d512430..497df600640b 100644
--- a/CORE/SERVICES/COMMON/wmi_version.h
+++ b/CORE/SERVICES/COMMON/wmi_version.h
@@ -36,7 +36,7 @@
#define __WMI_VER_MINOR_ 0
/** WMI revision number has to be incremented when there is a
* change that may or may not break compatibility. */
-#define __WMI_REVISION_ 134
+#define __WMI_REVISION_ 137
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work
diff --git a/CORE/SERVICES/WMI/wmi_unified.c b/CORE/SERVICES/WMI/wmi_unified.c
index 9e615c2b915a..5486452af662 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -636,6 +636,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
CASE_RETURN_STRING(WMI_SOC_SET_PCL_CMDID);
CASE_RETURN_STRING(WMI_SOC_SET_HW_MODE_CMDID);
CASE_RETURN_STRING(WMI_SOC_SET_DUAL_MAC_CONFIG_CMDID);
+ CASE_RETURN_STRING(WMI_WOW_ENABLE_ICMPV6_NA_FLT_CMDID);
}
return "Invalid WMI cmd";
}