diff --git a/target/inc/wmi_services.h b/target/inc/wmi_services.h index 059f59d94b97..2ea83914a7f9 100644 --- a/target/inc/wmi_services.h +++ b/target/inc/wmi_services.h @@ -161,6 +161,7 @@ typedef enum { */ WMI_SERVICE_DEPRECATED_REPLACE, WMI_SERVICE_TDLS_CONN_TRACKER_IN_HOST_MODE, /* FW supports a new mode that allows to run connection tracker in host */ + WMI_SERVICE_ENHANCED_MCAST_FILTER,/* FW supports enhanced multicast filtering (of mcast IP inside ucast WLAN) */ WMI_MAX_SERVICE = 128 /* max service */ } WMI_SERVICE; diff --git a/target/inc/wmi_tlv_defs.h b/target/inc/wmi_tlv_defs.h index 007beaed45eb..31c0a059f874 100644 --- a/target/inc/wmi_tlv_defs.h +++ b/target/inc/wmi_tlv_defs.h @@ -688,6 +688,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_set_hw_mode_response_vdev_mac_entry, WMITLV_TAG_STRUC_wmi_pdev_set_mac_config_response_event_fixed_param, WMITLV_TAG_STRUC_WMI_COEX_CONFIG_CMD_fixed_param, + WMITLV_TAG_STRUC_wmi_config_enhanced_mcast_filter_fixed_param, } WMITLV_TAG_ID; /* @@ -964,7 +965,8 @@ typedef enum { OP(WMI_PDEV_SET_MAC_CONFIG_CMDID) \ OP(WMI_PDEV_SET_ANTENNA_MODE_CMDID) \ OP(WMI_VDEV_SET_QUIET_MODE_CMDID) \ - OP(WMI_COEX_CONFIG_CMDID) + OP(WMI_COEX_CONFIG_CMDID) \ + OP(WMI_CONFIG_ENHANCED_MCAST_FILTER_CMDID) /* * IMPORTANT: Please add _ALL_ WMI Events Here. @@ -2425,6 +2427,10 @@ WMITLV_CREATE_PARAM_STRUC(WMI_LRO_CONFIG_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_TRANSFER_DATA_TO_FLASH_CMDID); +#define WMITLV_TABLE_WMI_CONFIG_ENHANCED_MCAST_FILTER_CMDID(id, op, buf, len) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_config_enhanced_mcast_filter_fixed_param, wmi_config_enhanced_mcast_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_CONFIG_ENHANCED_MCAST_FILTER_CMDID); + /* MAWC sensor report indication cmd */ #define WMITLV_TABLE_WMI_MAWC_SENSOR_REPORT_IND_CMDID(id, op, buf, len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_mawc_sensor_report_ind_cmd_fixed_param, wmi_mawc_sensor_report_ind_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/target/inc/wmi_unified.h b/target/inc/wmi_unified.h index 0204b452c853..765dbcdf8292 100644 --- a/target/inc/wmi_unified.h +++ b/target/inc/wmi_unified.h @@ -766,6 +766,8 @@ typedef enum { WMI_LRO_CONFIG_CMDID, /*transfer data from host to firmware to write flash */ WMI_TRANSFER_DATA_TO_FLASH_CMDID, + /** Command to enable/disable filtering of multicast IP with unicast mac */ + WMI_CONFIG_ENHANCED_MCAST_FILTER_CMDID, /* GPIO Configuration */ WMI_GPIO_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_GPIO), WMI_GPIO_OUTPUT_CMDID, @@ -14325,6 +14327,26 @@ typedef struct { A_UINT32 status; } wmi_transfer_data_to_flash_complete_event_fixed_param; +typedef enum { + ENHANCED_MCAST_FILTER_DISABLED, + ENHANCED_MCAST_FILTER_ENABLED +} ENHANCED_MCAST_FILTER_CONFIG; + +/* + * Command to enable/disable filtering of multicast IP with unicast mac + */ +typedef struct { + /* + * TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_config_enhanced_mcast_filter_fixed_param + */ + A_UINT32 tlv_header; + /* Unique id identifying the VDEV */ + A_UINT32 vdev_id; + /* 1 = enable 0 = disable (see ENHANCED_MCAST_FILTER_CONFIG) */ + A_UINT32 enable; +} wmi_config_enhanced_mcast_filter_cmd_fixed_param; + /* * This structure is used to report SMPS force mode set complete to host. */ diff --git a/target/inc/wmi_version.h b/target/inc/wmi_version.h index ef90b9fa12a8..f948a62ec96d 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_ 213 +#define __WMI_REVISION_ 214 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work