summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspuligil <spuligil@codeaurora.org>2017-10-12 14:03:30 -0700
committerSandeep Puligilla <spuligil@codeaurora.org>2017-10-17 11:14:14 -0700
commitb72ea1225f0a8b2e1d5d29e9f22012138bd53d78 (patch)
tree03e57efe5279150814055555ef8b6eb4e856be34
parent64bc6fa6876669784f11d730434fe7619de33da5 (diff)
fw-api: CL 3585932 - update fw common interface files
wmi per-vdev per-AC config max msdus in amsdu, mpdus in ampdu, and enable/disable rate dropdown Change-Id: Iff6be2cbc93f8e805b3db7cae1609a1cfce6fba4 CRs-Fixed: 1107600
-rwxr-xr-xfw/wlan_defs.h16
-rwxr-xr-xfw/wmi_unified.h104
-rwxr-xr-xfw/wmi_version.h2
3 files changed, 117 insertions, 5 deletions
diff --git a/fw/wlan_defs.h b/fw/wlan_defs.h
index d2a55653dd1e..853f3057cb96 100755
--- a/fw/wlan_defs.h
+++ b/fw/wlan_defs.h
@@ -377,11 +377,23 @@ typedef struct {
(_dst).flags |= (_f); \
} while (0)
+/*
+ * NOTE: NUM_SCHED_ENTRIES is not used in the host/target interface, but for
+ * historical reasons has been defined in the host/target interface files.
+ * The NUM_SCHED_ENTRIES definition is being moved into a target-only
+ * header file for newer (Lithium) targets, but is being left here for
+ * non-Lithium cases, to avoid having to rework legacy targets to move
+ * the NUM_SCHED_ENTRIES definition into a target-only header file.
+ * Moving the NUM_SCHED_ENTRIES definition into a non-Lithium conditional
+ * block should have no impact on the host, since the host does not use
+ * NUM_SCHED_ENTRIES.
+ */
+#define NUM_SCHED_ENTRIES 2
+
#endif /* !((NUM_SPATIAL_STREAM > 4) || SUPPORT_11AX) */ /* above N/A for Lithium */
#endif /* NUM_SPATIAL_STREAM */
-/* NOTE: NUM_DYN_BW and NUM_SCHED_ENTRIES cannot be changed without breaking WMI Compatibility */
-#define NUM_SCHED_ENTRIES 2
+/* NOTE: NUM_DYN_BW cannot be changed without breaking WMI Compatibility */
#define NUM_DYN_BW_MAX 4
/* Some products only use 20/40/80; some use 20/40/80/160 */
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index d1fdbc5bda06..54277ca73770 100755
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -3943,10 +3943,80 @@ typedef struct {
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_set_custom_aggr_size_cmd_fixed_param */
A_UINT32 vdev_id; /* vdev id indicating to which the vdev custom aggregation size will be applied. */
- A_UINT32 tx_aggr_size; /* Size for tx aggregation (max MPDUs per A-MPDU) for the vdev mentioned in vdev id */
- A_UINT32 rx_aggr_size; /* Size for rx aggregation (block ack window size limit) for the vdev mentioned in vdev id*/
+ /* Size for tx aggregation for the vdev mentioned in vdev id
+ * (max MPDUs per A-MPDU or max MSDUs per A-MSDU based on aggr_type field)
+ */
+ A_UINT32 tx_aggr_size;
+
+ A_UINT32 rx_aggr_size; /* Size for rx aggregation (block ack window size limit) for the vdev mentioned in vdev id */
+
+ /*
+ * To set TX aggregation size limits per VDEV per AC
+ * bits 1:0 (ac):
+ * Access Category (0x0=BE, 0x1=BK, 0x2=VI, 0x3=VO)
+ * If tx_ac_enable bit is not set, tx_aggr_size is applied
+ * for all Access Categories
+ * bit 2 (aggr_type): TX Aggregation Type (0=A-MPDU, 1=A-MSDU)
+ * bit 3 (tx_aggr_size_disable): If set tx_aggr_size is invalid
+ * bit 4 (rx_aggr_size_disable): If set rx_aggr_size is invalid
+ * bit 5 (tx_ac_enable): If set, above ac bitmap is valid.
+ * bits 31:6: Reserved bits. should be set to zero.
+ */
+ A_UINT32 enable_bitmap;
} wmi_vdev_set_custom_aggr_size_cmd_fixed_param;
+typedef enum {
+ WMI_VDEV_CUSTOM_AGGR_TYPE_AMPDU = 0,
+ WMI_VDEV_CUSTOM_AGGR_TYPE_AMSDU = 1,
+ WMI_VDEV_CUSTOM_AGGR_TYPE_MAX,
+} wmi_vdev_custom_aggr_type_t;
+
+#define WMI_VDEV_CUSTOM_AGGR_AC_BITPOS 0
+#define WMI_VDEV_CUSTOM_AGGR_AC_NUM_BITS 2
+#define WMI_VDEV_CUSTOM_AGGR_TYPE_BITPOS 2
+#define WMI_VDEV_CUSTOM_AGGR_TYPE_NUM_BITS 1
+#define WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_BITPOS 3
+#define WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_NUM_BITS 1
+#define WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_BITPOS 4
+#define WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_NUM_BITS 1
+#define WMI_VDEV_CUSTOM_TX_AC_EN_BITPOS 5
+#define WMI_VDEV_CUSTOM_TX_AC_EN_NUM_BITS 1
+
+#define WMI_VDEV_CUSTOM_AGGR_AC_SET(param, value) \
+ WMI_SET_BITS(param, WMI_VDEV_CUSTOM_AGGR_AC_BITPOS, \
+ WMI_VDEV_CUSTOM_AGGR_AC_NUM_BITS, value)
+#define WMI_VDEV_CUSTOM_AGGR_AC_GET(param) \
+ WMI_GET_BITS(param, WMI_VDEV_CUSTOM_AGGR_AC_BITPOS, \
+ WMI_VDEV_CUSTOM_AGGR_AC_NUM_BITS)
+
+#define WMI_VDEV_CUSTOM_AGGR_TYPE_SET(param, value) \
+ WMI_SET_BITS(param, WMI_VDEV_CUSTOM_AGGR_TYPE_BITPOS, \
+ WMI_VDEV_CUSTOM_AGGR_TYPE_NUM_BITS, value)
+#define WMI_VDEV_CUSTOM_AGGR_TYPE_GET(param) \
+ WMI_GET_BITS(param, WMI_VDEV_CUSTOM_AGGR_TYPE_BITPOS, \
+ WMI_VDEV_CUSTOM_AGGR_TYPE_NUM_BITS)
+
+#define WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_SET(param, value) \
+ WMI_SET_BITS(param, WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_BITPOS, \
+ WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_NUM_BITS, value)
+#define WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_GET(param) \
+ WMI_GET_BITS(param, WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_BITPOS, \
+ WMI_VDEV_CUSTOM_TX_AGGR_SZ_DIS_NUM_BITS)
+
+#define WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_SET(param, value) \
+ WMI_SET_BITS(param, WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_BITPOS, \
+ WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_NUM_BITS, value)
+#define WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_GET(param) \
+ WMI_GET_BITS(param, WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_BITPOS, \
+ WMI_VDEV_CUSTOM_RX_AGGR_SZ_DIS_NUM_BITS)
+
+#define WMI_VDEV_CUSTOM_TX_AC_EN_SET(param, value) \
+ WMI_SET_BITS(param, WMI_VDEV_CUSTOM_TX_AC_EN_BITPOS, \
+ WMI_VDEV_CUSTOM_TX_AC_EN_NUM_BITS, value)
+#define WMI_VDEV_CUSTOM_TX_AC_EN_GET(param) \
+ WMI_GET_BITS(param, WMI_VDEV_CUSTOM_TX_AC_EN_BITPOS, \
+ WMI_VDEV_CUSTOM_TX_AC_EN_NUM_BITS)
+
/*
* Command to enable/disable Green AP Power Save.
* This helps conserve power during AP operation. When the AP has no
@@ -7796,6 +7866,17 @@ typedef enum {
/** VDEV parameter to enable or disable various OCE features */
WMI_VDEV_PARAM_ENABLE_DISABLE_OCE_FEATURES, /* 0x78 */
+ /*
+ * Set/Clear 3 least-significant bits to
+ * Disable or Enable rate drop down for MGMT, SU data and MU data pkts
+ *
+ * bit 0 -> If set MGMT Pkt rate drop down is enabled else disabled
+ * bit 1 -> If set SU data Pkt rate drop down is enabled else disabled
+ * bit 2 -> If set MU data Pkt rate drop down is enabled else disabled
+ * bits 31:3 -> Reserved bits. should be set to zero.
+ */
+ WMI_VDEV_PARAM_RATE_DROPDOWN_BMAP, /* 0x79 */
+
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
@@ -7835,6 +7916,25 @@ typedef enum {
#define WMI_VDEV_IS_WDS_LRN_ENABLED(param) ((param) & WMI_VDEV_WDS_LRN_ENABLED)
#define WMI_VDEV_IS_VOW_ENABLED(param) ((param) & WMI_VDEV_VOW_ENABLED)
+/* Per VAP rate dropdown masks */
+#define WMI_VDEV_MGMT_RATE_DROPDOWN_M 0x01
+#define WMI_VDEV_MGMT_RATE_DROPDOWN_S 0
+#define WMI_VDEV_MGMT_RATE_DROPDOWN (WMI_VDEV_MGMT_RATE_DROPDOWN_M << WMI_VDEV_MGMT_RATE_DROPDOWN_S)
+#define WMI_VDEV_MGMT_RATE_DROPDOWN_GET(x) WMI_F_MS(x, WMI_VDEV_MGMT_RATE_DROPDOWN)
+#define WMI_VDEV_MGMT_RATE_DROPDOWN_SET(x,z) WMI_F_RMW(x, z, WMI_VDEV_MGMT_RATE_DROPDOWN)
+
+#define WMI_VDEV_SU_DATA_RATE_DROPDOWN_M 0x01
+#define WMI_VDEV_SU_DATA_RATE_DROPDOWN_S 1
+#define WMI_VDEV_SU_DATA_RATE_DROPDOWN (WMI_VDEV_SU_DATA_RATE_DROPDOWN_M << WMI_VDEV_SU_DATA_RATE_DROPDOWN_S)
+#define WMI_VDEV_SU_DATA_RATE_DROPDOWN_GET(x) WMI_F_MS(x, WMI_VDEV_SU_DATA_RATE_DROPDOWN)
+#define WMI_VDEV_SU_DATA_RATE_DROPDOWN_SET(x,z) WMI_F_RMW(x, z, WMI_VDEV_SU_DATA_RATE_DROPDOWN)
+
+#define WMI_VDEV_MU_DATA_RATE_DROPDOWN_M 0x01
+#define WMI_VDEV_MU_DATA_RATE_DROPDOWN_S 2
+#define WMI_VDEV_MU_DATA_RATE_DROPDOWN (WMI_VDEV_MU_DATA_RATE_DROPDOWN_M << WMI_VDEV_MU_DATA_RATE_DROPDOWN_S)
+#define WMI_VDEV_MU_DATA_RATE_DROPDOWN_GET(x) WMI_F_MS(x, WMI_VDEV_MU_DATA_RATE_DROPDOWN)
+#define WMI_VDEV_MU_DATA_RATE_DROPDOWN_SET(x,z) WMI_F_RMW(x, z, WMI_VDEV_MU_DATA_RATE_DROPDOWN)
+
/* TXBF capabilities masks */
#define WMI_TXBF_CONF_SU_TX_BFEE_S 0
#define WMI_TXBF_CONF_SU_TX_BFEE_M 0x1
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index 173dce4b6b41..9ad11084eb71 100755
--- a/fw/wmi_version.h
+++ b/fw/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_ 451
+#define __WMI_REVISION_ 452
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work