summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/SERVICES/COMMON/wmi_tlv_defs.h15
-rw-r--r--CORE/SERVICES/COMMON/wmi_unified.h41
-rw-r--r--CORE/SERVICES/COMMON/wmi_version.h2
-rw-r--r--CORE/SERVICES/WMI/wmi_unified.c1
4 files changed, 55 insertions, 4 deletions
diff --git a/CORE/SERVICES/COMMON/wmi_tlv_defs.h b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
index cddc5b830e53..7faf30f72ade 100644
--- a/CORE/SERVICES/COMMON/wmi_tlv_defs.h
+++ b/CORE/SERVICES/COMMON/wmi_tlv_defs.h
@@ -561,7 +561,8 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_update_fw_mem_dump_fixed_param,
WMITLV_TAG_STRUC_wmi_fw_mem_dump_params,
WMITLV_TAG_STRUC_wmi_debug_mesg_flush_fixed_param,
- WMITLV_TAG_STRUC_wmi_debug_mesg_flush_complete_fixed_param
+ WMITLV_TAG_STRUC_wmi_debug_mesg_flush_complete_fixed_param,
+ WMITLV_TAG_STRUC_wmi_peer_set_rate_report_condition_fixed_param
} WMITLV_TAG_ID;
/*
@@ -776,7 +777,8 @@ typedef enum {
OP(WMI_PASSPOINT_LIST_CONFIG_CMDID) \
OP(WMI_VDEV_TSF_TSTAMP_ACTION_CMDID) \
OP(WMI_GET_FW_MEM_DUMP_CMDID) \
- OP(WMI_DEBUG_MESG_FLUSH_CMDID)
+ OP(WMI_DEBUG_MESG_FLUSH_CMDID) \
+ OP(WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID)
/*
* IMPORTANT: Please add _ALL_ WMI Events Here.
@@ -1229,6 +1231,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID);
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID);
+/* Peer Set Rate Report Condition Cmd */
+#define WMITLV_TABLE_WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_set_rate_report_condition_fixed_param, wmi_peer_set_rate_report_condition_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+
+WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID);
+
+
/* Add Beacon filter Cmd */
#define WMITLV_TABLE_WMI_ADD_BCN_FILTER_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_add_bcn_filter_cmd_fixed_param, wmi_add_bcn_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
@@ -1329,7 +1338,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_STATS_CMDID);
WMITLV_CREATE_PARAM_STRUC(WMI_GET_FW_MEM_DUMP_CMDID);
-/* Request for memory dump stats Cmd */
+/* flush debug messages */
#define WMITLV_TABLE_WMI_DEBUG_MESG_FLUSH_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_debug_mesg_flush_fixed_param, wmi_debug_mesg_flush_fixed_param, fixed_param, WMITLV_SIZE_FIX)
diff --git a/CORE/SERVICES/COMMON/wmi_unified.h b/CORE/SERVICES/COMMON/wmi_unified.h
index c84658bda64c..6942d3bdcbf5 100644
--- a/CORE/SERVICES/COMMON/wmi_unified.h
+++ b/CORE/SERVICES/COMMON/wmi_unified.h
@@ -357,6 +357,10 @@ typedef enum {
* WMI_PEER_ESTIMATED_LINKSPEED_EVENTID.
*/
WMI_PEER_GET_ESTIMATED_LINKSPEED_CMDID,
+ /** Set the conditions to report peer justified rate to driver
+ * The justified rate means the the user-rate is justified by PER.
+ */
+ WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID,
/* beacon/management specific commands */
@@ -4527,6 +4531,43 @@ typedef struct {
/* Peer Specific commands and events */
+typedef struct {
+ A_UINT32 percentage; /* in unit of 12.5% */
+ A_UINT32 min_delta; /* in unit of Mbps */
+} rate_delta_t;
+
+#define PEER_RATE_REPORT_COND_FLAG_DELTA 0x01
+#define PEER_RATE_REPORT_COND_FLAG_THRESHOLD 0x02
+#define MAX_NUM_OF_RATE_THRESH 4
+
+typedef struct {
+ A_UINT32 val_cond_flags; /* PEER_RATE_REPORT_COND_FLAG_DELTA, PEER_RATE_REPORT_COND_FLAG_THRESHOLD
+ Any of these two conditions or both of them can be set. */
+ rate_delta_t rate_delta;
+ A_UINT32 rate_threshold[MAX_NUM_OF_RATE_THRESH]; /* In unit of Mbps. There are at most 4 thresholds.
+ If the threshold count is less than 4, set zero to
+ the one following the last threshold */
+} report_cond_per_phy_t;
+
+
+enum peer_rate_report_cond_phy_type {
+ PEER_RATE_REPORT_COND_11B = 0,
+ PEER_RATE_REPORT_COND_11A_G,
+ PEER_RATE_REPORT_COND_11N,
+ PEER_RATE_REPORT_COND_11AC,
+ PEER_RATE_REPORT_COND_MAX_NUM
+};
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_rate_report_condtion_fixed_param */
+ A_UINT32 enable_rate_report; /* 1= enable, 0=disable */
+ A_UINT32 report_backoff_time; /* in unit of msecond */
+ A_UINT32 report_timer_period; /* in unit of msecond */
+ /* In the following field, the array index means the phy type,
+ * please see enum peer_rate_report_cond_phy_type for detail */
+ report_cond_per_phy_t cond_per_phy[PEER_RATE_REPORT_COND_MAX_NUM];
+} wmi_peer_set_rate_report_condition_fixed_param;
+
/* Peer Type:
* NB: This can be left DEFAULT for the normal case, and f/w will determine BSS type based
* on address and vdev opmode. This is largely here to allow host to indicate that
diff --git a/CORE/SERVICES/COMMON/wmi_version.h b/CORE/SERVICES/COMMON/wmi_version.h
index da858f809f84..6cd89dd4eb30 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_ 114
+#define __WMI_REVISION_ 115
/** 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 e8e582e213eb..774496935fec 100644
--- a/CORE/SERVICES/WMI/wmi_unified.c
+++ b/CORE/SERVICES/WMI/wmi_unified.c
@@ -631,6 +631,7 @@ static u_int8_t* get_wmi_cmd_string(WMI_CMD_ID wmi_command)
CASE_RETURN_STRING(WMI_DCC_UPDATE_NDL_CMDID);
CASE_RETURN_STRING(WMI_ROAM_FILTER_CMDID);
CASE_RETURN_STRING(WMI_DEBUG_MESG_FLUSH_CMDID);
+ CASE_RETURN_STRING(WMI_PEER_SET_RATE_REPORT_CONDITION_CMDID);
}
return "Invalid WMI cmd";
}