diff --git a/target/inc/wmi_tlv_defs.h b/target/inc/wmi_tlv_defs.h index 6d59985cb8..bdc8d0564a 100644 --- a/target/inc/wmi_tlv_defs.h +++ b/target/inc/wmi_tlv_defs.h @@ -714,6 +714,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_p2p_lo_start_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_p2p_lo_stop_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_p2p_lo_stopped_event_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_reorder_queue_setup_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_reorder_queue_remove_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1003,6 +1005,9 @@ typedef enum { OP(WMI_DBGLOG_TIME_STAMP_SYNC_CMDID) \ OP(WMI_P2P_LISTEN_OFFLOAD_START_CMDID) \ OP(WMI_P2P_LISTEN_OFFLOAD_STOP_CMDID) \ + OP(WMI_IPA_OFFLOAD_ENABLE_DISABLE_CMDID) \ + OP(WMI_PEER_REORDER_QUEUE_SETUP_CMDID) \ + OP(WMI_PEER_REORDER_QUEUE_REMOVE_CMDID) \ /* add new CMD_LIST elements above this line */ /* @@ -2877,6 +2882,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WAL_POWER_DEBUG_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_bwf_peer_info, peer_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PEER_BWF_REQUEST_CMDID); +/* peer reorder queue setup cmd */ +#define WMITLV_TABLE_WMI_PEER_REORDER_QUEUE_SETUP_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_reorder_queue_setup_cmd_fixed_param, wmi_peer_reorder_queue_setup_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_REORDER_QUEUE_SETUP_CMDID); + +/* peer reorder queue remove cmd */ +#define WMITLV_TABLE_WMI_PEER_REORDER_QUEUE_REMOVE_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_peer_reorder_queue_remove_cmd_fixed_param, wmi_peer_reorder_queue_remove_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_REORDER_QUEUE_REMOVE_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index 81927b12fd..246b8b6a40 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -443,6 +443,11 @@ typedef enum { WMI_PEER_ATF_REQUEST_CMDID, /** bandwidth fairness (BWF) peer configuration request command */ WMI_PEER_BWF_REQUEST_CMDID, + /** rx reorder queue setup for peer/tid */ + WMI_PEER_REORDER_QUEUE_SETUP_CMDID, + /** rx reorder queue remove for peer/tid */ + WMI_PEER_REORDER_QUEUE_REMOVE_CMDID, + /* beacon/management specific commands */ @@ -6775,6 +6780,14 @@ typedef struct { #define WMI_PEER_SET_MAX_TX_RATE 0x11 /** Set peer minimal tx rate (MCS) in adaptive rate ctrl */ #define WMI_PEER_SET_MIN_TX_RATE 0x12 +/** + * default ring routing for peer data packets, + * param_value = bit 0 for hash based routing enabled or not + * (value 1 is enabled, value 0 is disabled) + * bits 1:5 are for ring 32 (i.e. ring id value + * selected from 0 to 31 values) + */ +#define WMI_PEER_SET_DEFAULT_ROUTING 0x13 /** mimo ps values for the parameter WMI_PEER_MIMO_PS_STATE */ #define WMI_PEER_MIMO_PS_NONE 0x0 @@ -14376,6 +14389,64 @@ typedef struct { */ } wmi_pdev_hw_mode_transition_event_fixed_param; +/** + * This command is sent from WLAN host driver to firmware for + * plugging in reorder queue desc to lithium hw. + * + * Example: plug-in queue desc for TID 5 + * host->target: WMI_PEER_REORDER_QUEUE_SETUP_CMDID, + * (vdev_id = PEER vdev id, + * peer_macaddr = PEER mac addr, + * tid = 5, + * queue_ptr_lo = queue desc addr lower 32 bits, + * queue_ptr_hi = queue desc addr higher 32 bits, + * queue_no = 16-bit number assigned by host for queue, + * stored in bits 15:0 of queue_no field) + */ +typedef struct { + /* TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_peer_reorder_queue_setup_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + /* peer mac address */ + wmi_mac_addr peer_macaddr; + /* 0 to 15 = QoS TIDs, 16 = non-qos TID */ + A_UINT32 tid; + /* lower 32 bits of queue desc adddress */ + A_UINT32 queue_ptr_lo; + /* upper 32 bits of queue desc adddress */ + A_UINT32 queue_ptr_hi; + /* 16-bit number assigned by host for queue, + * stored in bits 15:0 of queue_no field + */ + A_UINT32 queue_no; +} wmi_peer_reorder_queue_setup_cmd_fixed_param; + +/** + * This command is sent from WLAN host driver to firmware for + * removing one or more reorder queue desc to lithium hw. + * + * Example: remove queue desc for all TIDs + * host->target: WMI_PEER_REORDER_REMOVE_CMDID, + * (vdev_id = PEER vdev id, + * peer_macaddr = PEER mac addr, + * tid = 0x1FFFF, + */ +typedef struct { + /* TLV tag and len; + * tag equals + * WMITLV_TAG_STRUC_wmi_peer_reorder_queue_remove_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + /* peer mac address */ + wmi_mac_addr peer_macaddr; + /* bits 0 to 15 = QoS TIDs, bit 16 = non-qos TID */ + A_UINT32 tid_mask; +} wmi_peer_reorder_queue_remove_cmd_fixed_param; + + /* DEPRECATED - use wmi_pdev_set_mac_config_response_event_fixed_param * instead */ diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index 039ae77ffc..82188ccece 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_ 260 +#define __WMI_REVISION_ 261 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work