summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-02-08 00:19:51 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-02-08 00:19:51 -0800
commit10d305d994eba9737b690d641bc3a9ef1dc35307 (patch)
treecc48449bf786da0c001870791e3f3ca937806d8f
parentd5b620973ddd0cb50c69e90ef12ec0d700d8a26d (diff)
parentb620c37a791e6f046acb5d73fee8e2f4c422044d (diff)
Merge "qcacld-2.0: CL 2759760 - update fw common interface files" into wlan-cld2.driver.lnx.1.0-dev
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h7
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h38
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c1
4 files changed, 47 insertions, 1 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
index 823deefd36ad..bee1b43f34b8 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -781,6 +781,7 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_request_radio_chan_stats_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_radio_chan_stats,
WMITLV_TAG_STRUC_wmi_radio_chan_stats_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_roam_per_config_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -1096,6 +1097,7 @@ typedef enum {
OP(WMI_11D_SCAN_START_CMDID) \
OP(WMI_11D_SCAN_STOP_CMDID) \
OP(WMI_REQUEST_RADIO_CHAN_STATS_CMDID) \
+ OP(WMI_ROAM_PER_CONFIG_CMDID) \
/* add new CMD_LIST elements above this line */
/*
@@ -1434,6 +1436,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_CMD);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, non_prefer_ch_attr, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SET_MBO_PARAM_CMDID);
+/* Roam PER configure cmd */
+#define WMITLV_TABLE_WMI_ROAM_PER_CONFIG_CMDID(id, op, buf, len) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_roam_per_config_fixed_param, wmi_roam_per_config_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_PER_CONFIG_CMDID);
#define WMITLV_TABLE_WMI_VDEV_PLMREQ_START_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_plmreq_start_cmd_fixed_param, wmi_vdev_plmreq_start_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index 72f76ac14d8a..26e769462b46 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -559,6 +559,8 @@ typedef enum {
WMI_ROAM_CONFIGURE_MAWC_CMDID,
/** configure MultiBand Operation(refer WFA MBO spec) parameter */
WMI_ROAM_SET_MBO_PARAM_CMDID, /* DEPRECATED */
+ /** configure packet error rate threshold for triggering roaming */
+ WMI_ROAM_PER_CONFIG_CMDID,
/** offload scan specific commands */
/** set offload scan AP profile */
@@ -15733,6 +15735,41 @@ typedef struct {
} wmi_extscan_configure_mawc_cmd_fixed_param;
typedef struct {
+ /*
+ * TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_roam_per_config_fixed_param
+ */
+ A_UINT32 tlv_header;
+ /* Unique id identifying the VDEV */
+ A_UINT32 vdev_id;
+ /* enable(1) or disable(0) packet error rate trigger for roaming */
+ A_UINT32 enable;
+ /* high_rate_thresh, low_rate_thresh, pkt_err_rate_thresh_pct:
+ * If PER monitoring as a trigger for roaming is enabled,
+ * it is controlled by high_rate_thresh, low_rate_thresh, and
+ * pkt_err_rate_thresh_pct.
+ * PER monitoring is performed only when the time-averaged throughput
+ * is less than high_rate_thresh.
+ * During PER monitoring, the target keeps track of the PHY rate for
+ * each of the first N PPDUs within a time window.
+ * If the number of PPDUs with PHY rate < low_rate_thresh exceeds
+ * N * pkt_err_rate_thresh_pct / 100, roaming will be triggered.
+ *
+ * This PER monitoring as a trigger for roaming is performed
+ * concurrently but independently for rx and tx.
+ */
+ A_UINT32 high_rate_thresh; /* units = Kbps */
+ A_UINT32 low_rate_thresh; /* units = Kbps */
+ A_UINT32 pkt_err_rate_thresh_pct;
+ /*
+ * rest time after associating to a new AP before
+ * starting to monitor PER as a roaming trigger,
+ * (units are seconds)
+ */
+ A_UINT32 per_rest_time;
+} wmi_roam_per_config_fixed_param;
+
+typedef struct {
/* TLV tag and len; tag equals
* WMITLV_TAG_STRUC_wmi_nlo_configure_mawc_cmd_fixed_param */
A_UINT32 tlv_header;
@@ -17700,6 +17737,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_VDEV_ENCRYPT_DECRYPT_DATA_REQ_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_PEER_STATS_INFO_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_RADIO_CHAN_STATS_CMDID);
+ WMI_RETURN_STRING(WMI_ROAM_PER_CONFIG_CMDID);
}
return "Invalid WMI cmd";
diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h
index e8f41ba07f07..fab1ea348e2e 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_ 330
+#define __WMI_REVISION_ 331
/** 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 efaa7d84fd1d..63a962a33260 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -731,6 +731,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
CASE_RETURN_STRING(WMI_11D_SCAN_START_CMDID);
CASE_RETURN_STRING(WMI_11D_SCAN_STOP_CMDID);
CASE_RETURN_STRING(WMI_REQUEST_RADIO_CHAN_STATS_CMDID);
+ CASE_RETURN_STRING(WMI_ROAM_PER_CONFIG_CMDID);
}
return "Invalid WMI cmd";
}