From 08ae5e35944ac4d82177e392eddc58f482bc94ad Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 23 Sep 2021 06:01:22 -0700 Subject: [PATCH] fw-api: CL 15762579 - update fw common interface files Change-Id: If64f744b3932e11136480b1d898cea22a92c02b8 WMI: add VDEV_ICMP_OFFLOAD_CMD msg def CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 9 +++++++++ fw/wmi_unified.h | 42 ++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 53 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 2ebf8eacad4a..12a3f0eec747 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -557,6 +557,7 @@ typedef enum { */ WMI_SERVICE_SPATIAL_REUSE_ENHANCEMENT_SUPPORT = 306, WMI_SERVICE_MU_SNIF = 307, /* FW support MU sniffer */ + WMI_SERVICE_ICMP_OFFLOAD = 308, /* FW supports ping offload during APPS suspend */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 9e5802be3dfd..84312b7ec4e4 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1202,6 +1202,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_set_bios_interface_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_set_mu_snif_cmd_param, WMITLV_TAG_STRUC_wmi_ctrl_path_btcoex_stats_struct, + WMITLV_TAG_STRUC_wmi_icmp_offload_fixed_param, + WMITLV_TAG_STRUC_WMI_IPV6_ADDR, } WMITLV_TAG_ID; /* @@ -1678,6 +1680,7 @@ typedef enum { OP(WMI_REQUEST_THERMAL_STATS_CMDID) \ OP(WMI_PDEV_SET_BIOS_INTERFACE_CMDID) \ OP(WMI_VDEV_SET_MU_SNIF_CMDID) \ + OP(WMI_VDEV_ICMP_OFFLOAD_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -4814,6 +4817,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_REQUEST_THERMAL_STATS_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, aids, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_MU_SNIF_CMDID); +/* WMI CMD used to offload ICMP ping packets */ +#define WMITLV_TABLE_WMI_VDEV_ICMP_OFFLOAD_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_icmp_offload_fixed_param, wmi_icmp_offload_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, WMI_IPV6_ADDR, ipv6_addr, WMITLV_SIZE_VAR) + WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_ICMP_OFFLOAD_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4afbaf7a3718..3af4b66f7344 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -558,6 +558,8 @@ typedef enum { WMI_VDEV_ENABLE_DISABLE_INTRA_BSS_CMDID, /* set vdev mu sniffer param */ WMI_VDEV_SET_MU_SNIF_CMDID, + /** ICMP OFFLOAD */ + WMI_VDEV_ICMP_OFFLOAD_CMDID, /* peer specific commands */ @@ -29691,6 +29693,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_REQUEST_THERMAL_STATS_CMDID); WMI_RETURN_STRING(WMI_PDEV_SET_BIOS_INTERFACE_CMDID); WMI_RETURN_STRING(WMI_VDEV_SET_MU_SNIF_CMDID); + WMI_RETURN_STRING(WMI_VDEV_ICMP_OFFLOAD_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -36130,6 +36133,45 @@ typedef struct { */ } wmi_igmp_offload_fixed_param; +/* flags for ICMP Offload IP4,IP6 */ +#define WMI_ICMP_OFFLOAD_IPV4_ENABLED_BIT 0 +#define WMI_ICMP_OFFLOAD_IPV6_ENABLED_BIT 1 + +/* set IPv4 enabled/disabled flag and get the flag */ +#define WMI_SET_ICMP_OFFLOAD_IPV4_ENABLED_BIT(valid_bitmask) \ + WMI_SET_BITS(valid_bitmask, WMI_ICMP_OFFLOAD_IPV4_ENABLED_BIT, 1, 1) + +#define WMI_SET_ICMP_OFFLOAD_IPV4_DISABLED_BIT(valid_bitmask) \ + WMI_SET_BITS(valid_bitmask, WMI_ICMP_OFFLOAD_IPV4_ENABLED_BIT, 1, 0) + +#define WMI_GET_ICMP_OFFLOAD_IPV4_ENABLED(valid_bitmask) \ + WMI_GET_BITS(valid_bitmask, WMI_ICMP_OFFLOAD_IPV4_ENABLED_BIT, 1) + +/* set IPv6 enabled flag, disabled and get the flag */ +#define WMI_SET_ICMP_OFFLOAD_IPV6_ENABLED_BIT(valid_bitmask) \ + WMI_SET_BITS(valid_bitmask, WMI_ICMP_OFFLOAD_IPV6_ENABLED_BIT, 1, 1) + +#define WMI_SET_ICMP_OFFLOAD_IPV6_DISABLED_BIT(valid_bitmask) \ + WMI_SET_BITS(valid_bitmask, WMI_ICMP_OFFLOAD_IPV6_ENABLED_BIT, 1, 0) + +#define WMI_GET_ICMP_OFFLOAD_IPV6_ENABLED(valid_bitmask) \ + WMI_GET_BITS(valid_bitmask, WMI_ICMP_OFFLOAD_IPV6_ENABLED_BIT, 1) + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_vdev_icmp_offload_cmd_fixed_param + */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; + A_UINT32 enable; + /* bitmask for valid ipv4/ipv6 address */ + A_UINT32 valid_bitmask; + WMI_IPV4_ADDR ipv4_addr; +/* Following this structure are the TLVs: + * WMI_IPV6_ADDR ipv6_addr[num_ipv6_addr]; + */ +} wmi_icmp_offload_fixed_param; + typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_vdev_smart_monitor_event_fixed_param */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 00eab2fb5e0a..00915ec88e68 100644 --- 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_ 1061 +#define __WMI_REVISION_ 1062 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work