From 5de1cf8de294e2c8a5543f236617ada849ce1457 Mon Sep 17 00:00:00 2001 From: Nitesh Shah Date: Wed, 29 Jun 2016 20:13:17 +0530 Subject: [PATCH] qcacld-3.0: CL 1534810 - update fw common interface files Propagation from qcacld-2.0 to qcacld-3.0 Define WMI messages for per-AC rx reorder timeouts and A-MPDU aggregation limits. Change-Id: I19d96379a93e2d860cce249704834f06f271efb0 CRs-fixed: 865207 --- target/inc/wmi_tlv_defs.h | 14 ++++++++++++ target/inc/wmi_unified.h | 48 ++++++++++++++++++++++++++++++++++++++- target/inc/wmi_version.h | 2 +- 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/target/inc/wmi_tlv_defs.h b/target/inc/wmi_tlv_defs.h index 7adc99efc3..2874780660 100644 --- a/target/inc/wmi_tlv_defs.h +++ b/target/inc/wmi_tlv_defs.h @@ -720,6 +720,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_mgmt_tx_compl_bundle_event_fixed_param, WMITLV_TAG_STRUC_wmi_read_data_from_flash_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_read_data_from_flash_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_set_reorder_timeout_val_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_set_rx_blocksize_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1013,6 +1015,8 @@ typedef enum { OP(WMI_PEER_REORDER_QUEUE_REMOVE_CMDID) \ OP(WMI_SET_MULTIPLE_MCAST_FILTER_CMDID) \ OP(WMI_READ_DATA_FROM_FLASH_CMDID) \ + OP(WMI_PDEV_SET_REORDER_TIMEOUT_VAL_CMDID) \ + OP(WMI_PEER_SET_RX_BLOCKSIZE_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -2894,6 +2898,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, args, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WAL_POWER_DEBUG_CMDID); +/* pdev set reorder timeout val */ +#define WMITLV_TABLE_WMI_PDEV_SET_REORDER_TIMEOUT_VAL_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_pdev_set_reorder_timeout_val_cmd_fixed_param, wmi_pdev_set_reorder_timeout_val_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_REORDER_TIMEOUT_VAL_CMDID); + +/* peer set rx blocksize cmd */ +#define WMITLV_TABLE_WMI_PEER_SET_RX_BLOCKSIZE_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_set_rx_blocksize_cmd_fixed_param, wmi_peer_set_rx_blocksize_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SET_RX_BLOCKSIZE_CMDID); + /* Bandwidth Fairness (BWF) peer configure commands */ #define WMITLV_TABLE_WMI_PEER_BWF_REQUEST_CMDID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_bwf_request_fixed_param, wmi_peer_bwf_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index eecc52a537..ab77598ea8 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -345,8 +345,10 @@ typedef enum { WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID, /** WMI command for power debug framework */ WMI_PDEV_WAL_POWER_DEBUG_CMDID, + /** set per-AC rx reorder timeouts */ + WMI_PDEV_SET_REORDER_TIMEOUT_VAL_CMDID, - /* VDEV(virtual device) specific commands */ + /* VDEV (virtual device) specific commands */ /** vdev create */ WMI_VDEV_CREATE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_VDEV), /** vdev delete */ @@ -447,6 +449,8 @@ typedef enum { WMI_PEER_REORDER_QUEUE_SETUP_CMDID, /** rx reorder queue remove for peer/tid */ WMI_PEER_REORDER_QUEUE_REMOVE_CMDID, + /** specify a limit for rx A-MPDU block size */ + WMI_PEER_SET_RX_BLOCKSIZE_CMDID, /* beacon/management specific commands */ @@ -6577,6 +6581,24 @@ typedef struct { wmi_mac_addr peer_macaddr; } wmi_peer_delete_cmd_fixed_param; +typedef struct { + /** + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_set_rx_blocksize_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** peer MAC address */ + wmi_mac_addr peer_macaddr; + /** + * maximum block ack window size to use during a rx block ack + * negotiation, i.e. the maximum number of MPDUs per A-MPDU + * that will be received + */ + A_UINT32 rx_block_ack_win_limit; +} wmi_peer_set_rx_blocksize_cmd_fixed_param; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_flush_tids_cmd_fixed_param */ /** unique id identifying the VDEV, generated by the caller */ @@ -15843,6 +15865,30 @@ typedef struct { **/ } wmi_pdev_wal_power_debug_cmd_fixed_param; +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_set_reorder_timeout_val_cmd_fixed_param + */ + A_UINT32 tlv_header; + /** + * @brief rx_timeout_pri - what rx reorder timeout (ms) to use + * for the AC + * @details + * Each WMM access category (voice, video, best-effort, + * background) will have its own timeout value to dictate + * how long to wait for missing rx MPDUs to arrive before + * releasing subsequent MPDUs that have already been + * received. + * This parameter specifies the timeout in milliseconds + * for each access category. + * The array elements are indexed by the WMI_AC enum to + * identify which array element corresponds to which AC / + * traffic type. + */ + A_UINT32 rx_timeout_pri[WMI_AC_MAX]; +} wmi_pdev_set_reorder_timeout_val_cmd_fixed_param; + typedef enum { WLAN_2G_CAPABILITY = 0x1, WLAN_5G_CAPABILITY = 0x2, diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index c5e4e9aac2..8e13428134 100644 --- a/target/inc/wmi_version.h +++ b/target/inc/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_ 268 +#define __WMI_REVISION_ 269 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work