diff --git a/fw/htt_stats.h b/fw/htt_stats.h index fcde3166d1..94c5812c48 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -362,7 +362,7 @@ typedef enum { HTT_STATS_TX_DE_FW2WBM_RING_FULL_HIST_TAG = 85, /* htt_tx_de_fw2wbm_ring_full_hist_tlv */ HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG = 86, /* htt_sched_txq_sched_order_su_tlv */ HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG = 87, /* htt_sched_txq_sched_eligibility_tlv */ - HTT_STATS_PDEV_OBSS_PD_TAG = 88, /* htt_pdev_obss_pd_stats_tlv */ + HTT_STATS_PDEV_OBSS_PD_TAG = 88, /* htt_pdev_obss_pd_stats_tlv */ HTT_STATS_MAX_TAG, } htt_tlv_tag_t; @@ -3612,11 +3612,11 @@ typedef struct { typedef struct { htt_tlv_hdr_t tlv_hdr; - + A_UINT32 num_obss_tx_ppdu_success; A_UINT32 num_obss_tx_ppdu_failure; } htt_pdev_obss_pd_stats_tlv; - + /* NOTE: * This structure is for documentation, and cannot be safely used directly. * Instead, use the constituent TLV structures to fill/parse. diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 7a81831757..1433c64e4c 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -941,6 +941,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ndp_channel_info, WMITLV_TAG_STRUC_wmi_ndp_cmd_param, WMITLV_TAG_STRUC_wmi_ndp_event_param, + WMITLV_TAG_STRUC_wmi_pdev_pktlog_filter_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_pktlog_filter_info, } WMITLV_TAG_ID; /* @@ -1327,6 +1329,7 @@ typedef enum { OP(WMI_VDEV_CHAINMASK_CONFIG_CMDID) \ OP(WMI_VDEV_BCN_OFFLOAD_QUIET_CONFIG_CMDID) \ OP(WMI_NDP_CMDID) \ + OP(WMI_PDEV_PKTLOG_FILTER_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -3826,6 +3829,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_HE_TB_ACTION_FRM_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_hpcs_pulse_start_cmd_fixed_param, wmi_hpcs_pulse_start_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_HPCS_PULSE_START_CMDID); +/* PDev Packet Log filter Cmd */ +#define WMITLV_TABLE_WMI_PDEV_PKTLOG_FILTER_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_pktlog_filter_cmd_fixed_param, wmi_pdev_pktlog_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_pdev_pktlog_filter_info, pdev_pktlog_filter_info, WMITLV_SIZE_VAR) + +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_PKTLOG_FILTER_CMDID); + /************************** TLV definitions of WMI events *******************************/ /* Service Ready event */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4ec382ed20..b233293e5e 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -403,6 +403,8 @@ typedef enum { WMI_PDEV_DMA_RING_CFG_REQ_CMDID, /* enable/disable Action frame response as HE TB PPDU */ WMI_PDEV_HE_TB_ACTION_FRM_CMDID, + /** filter packet log based on MAC address */ + WMI_PDEV_PKTLOG_FILTER_CMDID, /* VDEV (virtual device) specific commands */ /** vdev create */ @@ -5782,6 +5784,11 @@ typedef enum { WMI_PKTLOG_ENABLE_FORCE = 1, /* pktlog unconditionally enabled */ } WMI_PKTLOG_ENABLE; +typedef enum { + WMI_PKTLOG_FILTER_IN = 0, /* capture only for the MAC addresses in pktlog_mac_addr_list*/ + WMI_PKTLOG_FILTER_OUT = 1, /* capture for all MAC addresses except those in pktlog_mac_addr_list */ +} WMI_PKTLOG_FILTER_TYPE; + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_pktlog_enable_cmd_fixed_param */ /** pdev_id for identifying the MAC @@ -5800,6 +5807,32 @@ typedef struct { A_UINT32 pdev_id; } wmi_pdev_pktlog_disable_cmd_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_pktlog_filter_info */ + A_UINT32 tlv_header; + /** mac addr of the peer to be filtered */ + wmi_mac_addr peer_mac_address; +} wmi_pdev_pktlog_filter_info; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_pktlog_filter_cmd_fixed_param */ + /** pdev_id for identifying the MAC + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; + /** 0 - disable filtering, 1 - enable filtering */ + A_UINT32 enable; + A_UINT32 filter_type; /* WMI_PKTLOG_FILTER_TYPE */ + A_UINT32 num_of_mac_addresses; + /* This TLV is followed by another TLV of array of structs + * wmi_pdev_pktlog_filter_info pdev_pktlog_filter_info[]; + */ +} wmi_pdev_pktlog_filter_cmd_fixed_param; + + + + typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mib_stats_enable_cmd_fixed_param */ /** pdev_id for identifying the MAC @@ -22566,6 +22599,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_CHAINMASK_CONFIG_CMDID); WMI_RETURN_STRING(WMI_VDEV_BCN_OFFLOAD_QUIET_CONFIG_CMDID); WMI_RETURN_STRING(WMI_NDP_CMDID); + WMI_RETURN_STRING(WMI_PDEV_PKTLOG_FILTER_CMDID); } return "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 02c67a3140..5a06eef133 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_ 592 +#define __WMI_REVISION_ 593 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work