/* SPDX-License-Identifier: GPL-2.0+ */ /* Copyright (c) 2018-2019 Hisilicon Limited. */ #ifndef __HCLGE_DEBUGFS_H #define __HCLGE_DEBUGFS_H #include #include "hclge_cmd.h" #define HCLGE_DBG_MNG_TBL_MAX 64 #define HCLGE_DBG_MNG_VLAN_MASK_B BIT(0) #define HCLGE_DBG_MNG_MAC_MASK_B BIT(1) #define HCLGE_DBG_MNG_ETHER_MASK_B BIT(2) #define HCLGE_DBG_MNG_E_TYPE_B BIT(11) #define HCLGE_DBG_MNG_DROP_B BIT(13) #define HCLGE_DBG_MNG_VLAN_TAG 0x0FFF #define HCLGE_DBG_MNG_PF_ID 0x0007 #define HCLGE_DBG_MNG_VF_ID 0x00FF /* Get DFX BD number offset */ #define HCLGE_DBG_DFX_BIOS_OFFSET 1 #define HCLGE_DBG_DFX_SSU_0_OFFSET 2 #define HCLGE_DBG_DFX_SSU_1_OFFSET 3 #define HCLGE_DBG_DFX_IGU_OFFSET 4 #define HCLGE_DBG_DFX_RPU_0_OFFSET 5 #define HCLGE_DBG_DFX_RPU_1_OFFSET 6 #define HCLGE_DBG_DFX_NCSI_OFFSET 7 #define HCLGE_DBG_DFX_RTC_OFFSET 8 #define HCLGE_DBG_DFX_PPP_OFFSET 9 #define HCLGE_DBG_DFX_RCB_OFFSET 10 #define HCLGE_DBG_DFX_TQP_OFFSET 11 #define HCLGE_DBG_DFX_SSU_2_OFFSET 12 struct hclge_qos_pri_map_cmd { u8 pri0_tc : 4, pri1_tc : 4; u8 pri2_tc : 4, pri3_tc : 4; u8 pri4_tc : 4, pri5_tc : 4; u8 pri6_tc : 4, pri7_tc : 4; u8 vlan_pri : 4, rev : 4; }; struct hclge_dbg_bitmap_cmd { union { u8 bitmap; struct { u8 bit0 : 1, bit1 : 1, bit2 : 1, bit3 : 1, bit4 : 1, bit5 : 1, bit6 : 1, bit7 : 1; }; }; }; struct hclge_dbg_reg_common_msg { int msg_num; int offset; enum hclge_opcode_type cmd; }; struct hclge_dbg_tcam_msg { u8 stage; u32 loc; }; #define HCLGE_DBG_MAX_DFX_MSG_LEN 60 struct hclge_dbg_dfx_message { int flag; char message[HCLGE_DBG_MAX_DFX_MSG_LEN]; }; #define HCLGE_DBG_MAC_REG_TYPE_LEN 32 struct hclge_dbg_reg_type_info { enum hnae3_dbg_cmd cmd; const struct hclge_dbg_dfx_message *dfx_msg; struct hclge_dbg_reg_common_msg reg_msg; }; struct hclge_dbg_func { enum hnae3_dbg_cmd cmd; int (*dbg_dump)(struct hclge_dev *hdev, char *buf, int len); int (*dbg_dump_reg)(struct hclge_dev *hdev, enum hnae3_dbg_cmd cmd, char *buf, int len); }; struct hclge_dbg_status_dfx_info { u32 offset; char message[HCLGE_DBG_MAX_DFX_MSG_LEN]; }; #define HCLGE_DBG_INFO_LEN 256 #define HCLGE_DBG_VLAN_FLTR_INFO_LEN 256 #define HCLGE_DBG_VLAN_OFFLOAD_INFO_LEN 512 #define HCLGE_DBG_ID_LEN 16 #define HCLGE_DBG_ITEM_NAME_LEN 32 #define HCLGE_DBG_DATA_STR_LEN 32 #define HCLGE_DBG_TM_INFO_LEN 256 #define HCLGE_BILLION_NANO_SECONDS 1000000000 struct hclge_dbg_item { char name[HCLGE_DBG_ITEM_NAME_LEN]; u16 interval; /* blank numbers after the item */ }; struct hclge_dbg_vlan_cfg { u16 pvid; u8 accept_tag1; u8 accept_tag2; u8 accept_untag1; u8 accept_untag2; u8 insert_tag1; u8 insert_tag2; u8 shift_tag; u8 strip_tag1; u8 strip_tag2; u8 drop_tag1; u8 drop_tag2; u8 pri_only1; u8 pri_only2; }; int hclge_dbg_cmd_send(struct hclge_dev *hdev, struct hclge_desc *desc_src, int index, int bd_num, enum hclge_opcode_type cmd); #endif