682 lines
14 KiB
C
682 lines
14 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
||
/* Copyright(c) 2021 Huawei Technologies Co., Ltd */
|
||
|
||
#ifndef HINIC3_MT_H
|
||
#define HINIC3_MT_H
|
||
|
||
#define HINIC3_DRV_NAME "hisdk3"
|
||
#define HINIC3_CHIP_NAME "hinic"
|
||
/* Interrupt at most records, interrupt will be recorded in the FFM */
|
||
|
||
#define NICTOOL_CMD_TYPE (0x18)
|
||
|
||
struct api_cmd_rd {
|
||
u32 pf_id;
|
||
u8 dest;
|
||
u8 *cmd;
|
||
u16 size;
|
||
void *ack;
|
||
u16 ack_size;
|
||
};
|
||
|
||
struct api_cmd_wr {
|
||
u32 pf_id;
|
||
u8 dest;
|
||
u8 *cmd;
|
||
u16 size;
|
||
};
|
||
|
||
#define PF_DEV_INFO_NUM 32
|
||
|
||
struct pf_dev_info {
|
||
u64 bar0_size;
|
||
u8 bus;
|
||
u8 slot;
|
||
u8 func;
|
||
u64 phy_addr;
|
||
};
|
||
|
||
/* Indicates the maximum number of interrupts that can be recorded.
|
||
* Subsequent interrupts are not recorded in FFM.
|
||
*/
|
||
#define FFM_RECORD_NUM_MAX 64
|
||
|
||
struct ffm_intr_info {
|
||
u8 node_id;
|
||
/* error level of the interrupt source */
|
||
u8 err_level;
|
||
/* Classification by interrupt source properties */
|
||
u16 err_type;
|
||
u32 err_csr_addr;
|
||
u32 err_csr_value;
|
||
};
|
||
|
||
struct ffm_intr_tm_info {
|
||
struct ffm_intr_info intr_info;
|
||
u8 times;
|
||
u8 sec;
|
||
u8 min;
|
||
u8 hour;
|
||
u8 mday;
|
||
u8 mon;
|
||
u16 year;
|
||
};
|
||
|
||
struct ffm_record_info {
|
||
u32 ffm_num;
|
||
u32 last_err_csr_addr;
|
||
u32 last_err_csr_value;
|
||
struct ffm_intr_tm_info ffm[FFM_RECORD_NUM_MAX];
|
||
};
|
||
|
||
struct dbgtool_k_glb_info {
|
||
struct semaphore dbgtool_sem;
|
||
struct ffm_record_info *ffm;
|
||
};
|
||
|
||
struct msg_2_up {
|
||
u8 pf_id;
|
||
u8 mod;
|
||
u8 cmd;
|
||
void *buf_in;
|
||
u16 in_size;
|
||
void *buf_out;
|
||
u16 *out_size;
|
||
};
|
||
|
||
struct dbgtool_param {
|
||
union {
|
||
struct api_cmd_rd api_rd;
|
||
struct api_cmd_wr api_wr;
|
||
struct pf_dev_info *dev_info;
|
||
struct ffm_record_info *ffm_rd;
|
||
struct msg_2_up msg2up;
|
||
} param;
|
||
char chip_name[16];
|
||
};
|
||
|
||
/* dbgtool command type */
|
||
/* You can add commands as required. The dbgtool command can be
|
||
* used to invoke all interfaces of the kernel-mode x86 driver.
|
||
*/
|
||
enum dbgtool_cmd {
|
||
DBGTOOL_CMD_API_RD = 0,
|
||
DBGTOOL_CMD_API_WR,
|
||
DBGTOOL_CMD_FFM_RD,
|
||
DBGTOOL_CMD_FFM_CLR,
|
||
DBGTOOL_CMD_PF_DEV_INFO_GET,
|
||
DBGTOOL_CMD_MSG_2_UP,
|
||
DBGTOOL_CMD_FREE_MEM,
|
||
DBGTOOL_CMD_NUM
|
||
};
|
||
|
||
#define PF_MAX_SIZE (16)
|
||
#define BUSINFO_LEN (32)
|
||
|
||
enum module_name {
|
||
SEND_TO_NPU = 1,
|
||
SEND_TO_MPU,
|
||
SEND_TO_SM,
|
||
|
||
SEND_TO_HW_DRIVER,
|
||
#define SEND_TO_SRV_DRV_BASE (SEND_TO_HW_DRIVER + 1)
|
||
SEND_TO_NIC_DRIVER = SEND_TO_SRV_DRV_BASE,
|
||
SEND_TO_OVS_DRIVER,
|
||
SEND_TO_ROCE_DRIVER,
|
||
SEND_TO_TOE_DRIVER,
|
||
SEND_TO_IOE_DRIVER,
|
||
SEND_TO_FC_DRIVER,
|
||
SEND_TO_VBS_DRIVER,
|
||
SEND_TO_IPSEC_DRIVER,
|
||
SEND_TO_VIRTIO_DRIVER,
|
||
SEND_TO_MIGRATE_DRIVER,
|
||
SEND_TO_PPA_DRIVER,
|
||
SEND_TO_CUSTOM_DRIVER = SEND_TO_SRV_DRV_BASE + 11,
|
||
SEND_TO_DRIVER_MAX = SEND_TO_SRV_DRV_BASE + 15, /* reserved */
|
||
};
|
||
|
||
enum driver_cmd_type {
|
||
TX_INFO = 1,
|
||
Q_NUM,
|
||
TX_WQE_INFO,
|
||
TX_MAPPING,
|
||
RX_INFO,
|
||
RX_WQE_INFO,
|
||
RX_CQE_INFO,
|
||
UPRINT_FUNC_EN,
|
||
UPRINT_FUNC_RESET,
|
||
UPRINT_SET_PATH,
|
||
UPRINT_GET_STATISTICS,
|
||
FUNC_TYPE,
|
||
GET_FUNC_IDX,
|
||
GET_INTER_NUM,
|
||
CLOSE_TX_STREAM,
|
||
GET_DRV_VERSION,
|
||
CLEAR_FUNC_STASTIC,
|
||
GET_HW_STATS,
|
||
CLEAR_HW_STATS,
|
||
GET_SELF_TEST_RES,
|
||
GET_CHIP_FAULT_STATS,
|
||
NIC_RSVD1,
|
||
NIC_RSVD2,
|
||
NIC_RSVD3,
|
||
GET_CHIP_ID,
|
||
GET_SINGLE_CARD_INFO,
|
||
GET_FIRMWARE_ACTIVE_STATUS,
|
||
ROCE_DFX_FUNC,
|
||
GET_DEVICE_ID,
|
||
GET_PF_DEV_INFO,
|
||
CMD_FREE_MEM,
|
||
GET_LOOPBACK_MODE = 32,
|
||
SET_LOOPBACK_MODE,
|
||
SET_LINK_MODE,
|
||
SET_PF_BW_LIMIT,
|
||
GET_PF_BW_LIMIT,
|
||
ROCE_CMD,
|
||
GET_POLL_WEIGHT,
|
||
SET_POLL_WEIGHT,
|
||
GET_HOMOLOGUE,
|
||
SET_HOMOLOGUE,
|
||
GET_SSET_COUNT,
|
||
GET_SSET_ITEMS,
|
||
IS_DRV_IN_VM,
|
||
LRO_ADPT_MGMT,
|
||
SET_INTER_COAL_PARAM,
|
||
GET_INTER_COAL_PARAM,
|
||
GET_CHIP_INFO,
|
||
GET_NIC_STATS_LEN,
|
||
GET_NIC_STATS_STRING,
|
||
GET_NIC_STATS_INFO,
|
||
GET_PF_ID,
|
||
NIC_RSVD4,
|
||
NIC_RSVD5,
|
||
DCB_QOS_INFO,
|
||
DCB_PFC_STATE,
|
||
DCB_ETS_STATE,
|
||
DCB_STATE,
|
||
QOS_DEV,
|
||
GET_QOS_COS,
|
||
GET_ULD_DEV_NAME,
|
||
GET_TX_TIMEOUT,
|
||
SET_TX_TIMEOUT,
|
||
|
||
RSS_CFG = 0x40,
|
||
RSS_INDIR,
|
||
PORT_ID,
|
||
|
||
GET_FUNC_CAP = 0x50,
|
||
GET_XSFP_PRESENT = 0x51,
|
||
GET_XSFP_INFO = 0x52,
|
||
DEV_NAME_TEST = 0x53,
|
||
|
||
GET_WIN_STAT = 0x60,
|
||
WIN_CSR_READ = 0x61,
|
||
WIN_CSR_WRITE = 0x62,
|
||
WIN_API_CMD_RD = 0x63,
|
||
|
||
VM_COMPAT_TEST = 0xFF
|
||
};
|
||
|
||
enum api_chain_cmd_type {
|
||
API_CSR_READ,
|
||
API_CSR_WRITE
|
||
};
|
||
|
||
enum sm_cmd_type {
|
||
SM_CTR_RD16 = 1,
|
||
SM_CTR_RD32,
|
||
SM_CTR_RD64_PAIR,
|
||
SM_CTR_RD64,
|
||
SM_CTR_RD32_CLEAR,
|
||
SM_CTR_RD64_PAIR_CLEAR,
|
||
SM_CTR_RD64_CLEAR
|
||
};
|
||
|
||
struct cqm_stats {
|
||
atomic_t cqm_cmd_alloc_cnt;
|
||
atomic_t cqm_cmd_free_cnt;
|
||
atomic_t cqm_send_cmd_box_cnt;
|
||
atomic_t cqm_send_cmd_imm_cnt;
|
||
atomic_t cqm_db_addr_alloc_cnt;
|
||
atomic_t cqm_db_addr_free_cnt;
|
||
atomic_t cqm_fc_srq_create_cnt;
|
||
atomic_t cqm_srq_create_cnt;
|
||
atomic_t cqm_rq_create_cnt;
|
||
atomic_t cqm_qpc_mpt_create_cnt;
|
||
atomic_t cqm_nonrdma_queue_create_cnt;
|
||
atomic_t cqm_rdma_queue_create_cnt;
|
||
atomic_t cqm_rdma_table_create_cnt;
|
||
atomic_t cqm_qpc_mpt_delete_cnt;
|
||
atomic_t cqm_nonrdma_queue_delete_cnt;
|
||
atomic_t cqm_rdma_queue_delete_cnt;
|
||
atomic_t cqm_rdma_table_delete_cnt;
|
||
atomic_t cqm_func_timer_clear_cnt;
|
||
atomic_t cqm_func_hash_buf_clear_cnt;
|
||
atomic_t cqm_scq_callback_cnt;
|
||
atomic_t cqm_ecq_callback_cnt;
|
||
atomic_t cqm_nocq_callback_cnt;
|
||
atomic_t cqm_aeq_callback_cnt[112];
|
||
};
|
||
|
||
struct link_event_stats {
|
||
atomic_t link_down_stats;
|
||
atomic_t link_up_stats;
|
||
};
|
||
|
||
enum hinic3_fault_err_level {
|
||
FAULT_LEVEL_FATAL,
|
||
FAULT_LEVEL_SERIOUS_RESET,
|
||
FAULT_LEVEL_HOST,
|
||
FAULT_LEVEL_SERIOUS_FLR,
|
||
FAULT_LEVEL_GENERAL,
|
||
FAULT_LEVEL_SUGGESTION,
|
||
FAULT_LEVEL_MAX,
|
||
};
|
||
|
||
enum hinic3_fault_type {
|
||
FAULT_TYPE_CHIP,
|
||
FAULT_TYPE_UCODE,
|
||
FAULT_TYPE_MEM_RD_TIMEOUT,
|
||
FAULT_TYPE_MEM_WR_TIMEOUT,
|
||
FAULT_TYPE_REG_RD_TIMEOUT,
|
||
FAULT_TYPE_REG_WR_TIMEOUT,
|
||
FAULT_TYPE_PHY_FAULT,
|
||
FAULT_TYPE_TSENSOR_FAULT,
|
||
FAULT_TYPE_MAX,
|
||
};
|
||
|
||
struct fault_event_stats {
|
||
/* TODO :HINIC_NODE_ID_MAX: temp use the value of 1822(22) */
|
||
atomic_t chip_fault_stats[22][FAULT_LEVEL_MAX];
|
||
atomic_t fault_type_stat[FAULT_TYPE_MAX];
|
||
atomic_t pcie_fault_stats;
|
||
};
|
||
|
||
enum hinic3_ucode_event_type {
|
||
HINIC3_INTERNAL_OTHER_FATAL_ERROR = 0x0,
|
||
HINIC3_CHANNEL_BUSY = 0x7,
|
||
HINIC3_NIC_FATAL_ERROR_MAX = 0x8,
|
||
};
|
||
|
||
struct hinic3_hw_stats {
|
||
atomic_t heart_lost_stats;
|
||
struct cqm_stats cqm_stats;
|
||
struct link_event_stats link_event_stats;
|
||
struct fault_event_stats fault_event_stats;
|
||
atomic_t nic_ucode_event_stats[HINIC3_NIC_FATAL_ERROR_MAX];
|
||
};
|
||
|
||
#ifndef IFNAMSIZ
|
||
#define IFNAMSIZ 16
|
||
#endif
|
||
|
||
struct pf_info {
|
||
char name[IFNAMSIZ];
|
||
char bus_info[BUSINFO_LEN];
|
||
u32 pf_type;
|
||
};
|
||
|
||
struct card_info {
|
||
struct pf_info pf[PF_MAX_SIZE];
|
||
u32 pf_num;
|
||
};
|
||
|
||
struct hinic3_nic_loop_mode {
|
||
u32 loop_mode;
|
||
u32 loop_ctrl;
|
||
};
|
||
|
||
struct hinic3_pf_info {
|
||
u32 isvalid;
|
||
u32 pf_id;
|
||
};
|
||
|
||
enum hinic3_show_set {
|
||
HINIC3_SHOW_SSET_IO_STATS = 1,
|
||
};
|
||
|
||
#define HINIC3_SHOW_ITEM_LEN 32
|
||
struct hinic3_show_item {
|
||
char name[HINIC3_SHOW_ITEM_LEN];
|
||
u8 hexadecimal; /* 0: decimal , 1: Hexadecimal */
|
||
u8 rsvd[7];
|
||
u64 value;
|
||
};
|
||
|
||
#define HINIC3_CHIP_FAULT_SIZE (110 * 1024)
|
||
#define MAX_DRV_BUF_SIZE 4096
|
||
|
||
struct nic_cmd_chip_fault_stats {
|
||
u32 offset;
|
||
u8 chip_fault_stats[MAX_DRV_BUF_SIZE];
|
||
};
|
||
|
||
#define NIC_TOOL_MAGIC 'x'
|
||
|
||
#define CARD_MAX_SIZE (64)
|
||
|
||
struct nic_card_id {
|
||
u32 id[CARD_MAX_SIZE];
|
||
u32 num;
|
||
};
|
||
|
||
struct func_pdev_info {
|
||
u64 bar0_phy_addr;
|
||
u64 bar0_size;
|
||
u64 bar1_phy_addr;
|
||
u64 bar1_size;
|
||
u64 bar3_phy_addr;
|
||
u64 bar3_size;
|
||
u64 rsvd1[4];
|
||
};
|
||
|
||
struct hinic3_card_func_info {
|
||
u32 num_pf;
|
||
u32 rsvd0;
|
||
u64 usr_api_phy_addr;
|
||
struct func_pdev_info pdev_info[CARD_MAX_SIZE];
|
||
};
|
||
|
||
struct wqe_info {
|
||
int q_id;
|
||
void *slq_handle;
|
||
unsigned int wqe_id;
|
||
};
|
||
|
||
#define MAX_VER_INFO_LEN 128
|
||
struct drv_version_info {
|
||
char ver[MAX_VER_INFO_LEN];
|
||
};
|
||
|
||
struct hinic3_tx_hw_page {
|
||
u64 phy_addr;
|
||
u64 *map_addr;
|
||
};
|
||
|
||
struct nic_sq_info {
|
||
u16 q_id;
|
||
u16 pi;
|
||
u16 ci; /* sw_ci */
|
||
u16 fi; /* hw_ci */
|
||
u32 q_depth;
|
||
u16 pi_reverse; /* TODO: what is this? */
|
||
u16 wqebb_size;
|
||
u8 priority;
|
||
u16 *ci_addr;
|
||
u64 cla_addr;
|
||
void *slq_handle;
|
||
/* TODO: NIC don't use direct wqe */
|
||
struct hinic3_tx_hw_page direct_wqe;
|
||
struct hinic3_tx_hw_page doorbell;
|
||
u32 page_idx;
|
||
u32 glb_sq_id;
|
||
};
|
||
|
||
struct nic_rq_info {
|
||
u16 q_id;
|
||
u16 delta;
|
||
u16 hw_pi;
|
||
u16 ci; /* sw_ci */
|
||
u16 sw_pi;
|
||
u16 wqebb_size;
|
||
u16 q_depth;
|
||
u16 buf_len;
|
||
|
||
void *slq_handle;
|
||
u64 ci_wqe_page_addr;
|
||
u64 ci_cla_tbl_addr;
|
||
|
||
u8 coalesc_timer_cfg;
|
||
u8 pending_limt;
|
||
u16 msix_idx;
|
||
u32 msix_vector;
|
||
};
|
||
|
||
#define MT_EPERM 1 /* Operation not permitted */
|
||
#define MT_EIO 2 /* I/O error */
|
||
#define MT_EINVAL 3 /* Invalid argument */
|
||
#define MT_EBUSY 4 /* Device or resource busy */
|
||
#define MT_EOPNOTSUPP 0xFF /* Operation not supported */
|
||
|
||
struct mt_msg_head {
|
||
u8 status;
|
||
u8 rsvd1[3];
|
||
};
|
||
|
||
#define MT_DCB_OPCODE_WR BIT(0) /* 1 - write, 0 - read */
|
||
struct hinic3_mt_qos_info { /* delete */
|
||
struct mt_msg_head head;
|
||
|
||
u16 op_code;
|
||
u8 valid_cos_bitmap;
|
||
u8 valid_up_bitmap;
|
||
u32 rsvd1;
|
||
};
|
||
|
||
struct hinic3_mt_dcb_state {
|
||
struct mt_msg_head head;
|
||
|
||
u16 op_code; /* 0 - get dcb state, 1 - set dcb state */
|
||
u8 state; /* 0 - disable, 1 - enable dcb */
|
||
u8 rsvd;
|
||
};
|
||
|
||
#define MT_DCB_ETS_UP_TC BIT(1)
|
||
#define MT_DCB_ETS_UP_BW BIT(2)
|
||
#define MT_DCB_ETS_UP_PRIO BIT(3)
|
||
#define MT_DCB_ETS_TC_BW BIT(4)
|
||
#define MT_DCB_ETS_TC_PRIO BIT(5)
|
||
|
||
#define DCB_UP_TC_NUM 0x8
|
||
struct hinic3_mt_ets_state { /* delete */
|
||
struct mt_msg_head head;
|
||
|
||
u16 op_code;
|
||
u8 up_tc[DCB_UP_TC_NUM];
|
||
u8 up_bw[DCB_UP_TC_NUM];
|
||
u8 tc_bw[DCB_UP_TC_NUM];
|
||
u8 up_prio_bitmap;
|
||
u8 tc_prio_bitmap;
|
||
u32 rsvd;
|
||
};
|
||
|
||
#define MT_DCB_PFC_PFC_STATE BIT(1)
|
||
#define MT_DCB_PFC_PFC_PRI_EN BIT(2)
|
||
|
||
struct hinic3_mt_pfc_state { /* delete */
|
||
struct mt_msg_head head;
|
||
|
||
u16 op_code;
|
||
u8 state;
|
||
u8 pfc_en_bitpamp;
|
||
u32 rsvd;
|
||
};
|
||
|
||
#define CMD_QOS_DEV_TRUST BIT(0)
|
||
#define CMD_QOS_DEV_DFT_COS BIT(1)
|
||
#define CMD_QOS_DEV_PCP2COS BIT(2)
|
||
#define CMD_QOS_DEV_DSCP2COS BIT(3)
|
||
|
||
struct hinic3_mt_qos_dev_cfg {
|
||
struct mt_msg_head head;
|
||
|
||
u8 op_code; /* 0:get 1: set */
|
||
u8 rsvd0;
|
||
/* bit0 - trust, bit1 - dft_cos, bit2 - pcp2cos, bit3 - dscp2cos */
|
||
u16 cfg_bitmap;
|
||
|
||
u8 trust; /* 0 - pcp, 1 - dscp */
|
||
u8 dft_cos;
|
||
u16 rsvd1;
|
||
u8 pcp2cos[8]; /* 必须8个一起配置 */
|
||
/* 配置dscp2cos时,若cos值设置为0xFF,驱动则忽略此dscp优先级的配置,
|
||
* 允许一次性配置多个dscp跟cos的映射关系
|
||
*/
|
||
u8 dscp2cos[64];
|
||
u32 rsvd2[4];
|
||
};
|
||
|
||
enum mt_api_type {
|
||
API_TYPE_MBOX = 1,
|
||
API_TYPE_API_CHAIN_BYPASS,
|
||
API_TYPE_API_CHAIN_TO_MPU,
|
||
API_TYPE_CLP,
|
||
};
|
||
|
||
struct npu_cmd_st {
|
||
u32 mod : 8;
|
||
u32 cmd : 8;
|
||
u32 ack_type : 3;
|
||
u32 direct_resp : 1;
|
||
u32 len : 12;
|
||
};
|
||
|
||
struct mpu_cmd_st {
|
||
u32 api_type : 8;
|
||
u32 mod : 8;
|
||
u32 cmd : 16;
|
||
};
|
||
|
||
struct msg_module {
|
||
char device_name[IFNAMSIZ];
|
||
u32 module;
|
||
union {
|
||
u32 msg_formate; /* for driver */
|
||
struct npu_cmd_st npu_cmd;
|
||
struct mpu_cmd_st mpu_cmd;
|
||
};
|
||
u32 timeout; /* for mpu/npu cmd */
|
||
u32 func_idx;
|
||
u32 buf_in_size;
|
||
u32 buf_out_size;
|
||
void *in_buf;
|
||
void *out_buf;
|
||
int bus_num;
|
||
u8 port_id;
|
||
u8 rsvd1[3];
|
||
u32 rsvd2[4];
|
||
};
|
||
|
||
struct hinic3_mt_qos_cos_cfg {
|
||
struct mt_msg_head head;
|
||
|
||
u8 port_id;
|
||
u8 func_cos_bitmap;
|
||
u8 port_cos_bitmap;
|
||
u8 func_max_cos_num;
|
||
u32 rsvd2[4];
|
||
};
|
||
|
||
#define MAX_NETDEV_NUM 4
|
||
|
||
enum hinic3_bond_cmd_to_custom_e {
|
||
CMD_CUSTOM_BOND_DEV_CREATE = 1,
|
||
CMD_CUSTOM_BOND_DEV_DELETE,
|
||
CMD_CUSTOM_BOND_GET_CHIP_NAME,
|
||
CMD_CUSTOM_BOND_GET_CARD_INFO
|
||
};
|
||
|
||
enum xmit_hash_policy {
|
||
HASH_POLICY_L2 = 0, /* SMAC_DMAC */
|
||
HASH_POLICY_L23 = 1, /* SIP_DIP_SPORT_DPORT */
|
||
HASH_POLICY_L34 = 2, /* SMAC_DMAC_SIP_DIP */
|
||
HASH_POLICY_MAX = 3 /* MAX */
|
||
};
|
||
|
||
/* bond mode */
|
||
enum tag_bond_mode {
|
||
BOND_MODE_NONE = 0, /**< bond disable */
|
||
BOND_MODE_BACKUP = 1, /**< 1 for active-backup */
|
||
BOND_MODE_BALANCE = 2, /**< 2 for balance-xor */
|
||
BOND_MODE_LACP = 4, /**< 4 for 802.3ad */
|
||
BOND_MODE_MAX
|
||
};
|
||
|
||
struct add_bond_dev_s {
|
||
struct mt_msg_head head;
|
||
/* input can be empty, indicates that the value
|
||
* is assigned by the driver
|
||
*/
|
||
char bond_name[IFNAMSIZ];
|
||
u8 slave_cnt;
|
||
u8 rsvd[3];
|
||
char slave_name[MAX_NETDEV_NUM][IFNAMSIZ]; /* unit : ms */
|
||
u32 poll_timeout; /* default value = 100 */
|
||
u32 up_delay; /* default value = 0 */
|
||
u32 down_delay; /* default value = 0 */
|
||
u32 bond_mode; /* default value = BOND_MODE_LACP */
|
||
|
||
/* maximum number of active bond member interfaces,
|
||
* default value = 0
|
||
*/
|
||
u32 active_port_max_num;
|
||
/* minimum number of active bond member interfaces,
|
||
* default value = 0
|
||
*/
|
||
u32 active_port_min_num;
|
||
/* hash policy, which is used for microcode routing logic,
|
||
* default value = 0
|
||
*/
|
||
enum xmit_hash_policy xmit_hash_policy;
|
||
};
|
||
|
||
struct del_bond_dev_s {
|
||
struct mt_msg_head head;
|
||
char bond_name[IFNAMSIZ];
|
||
};
|
||
|
||
struct get_bond_chip_name_s {
|
||
char bond_name[IFNAMSIZ];
|
||
char chip_name[IFNAMSIZ];
|
||
};
|
||
|
||
struct bond_drv_msg_s {
|
||
u32 bond_id;
|
||
u32 slave_cnt;
|
||
u32 master_slave_index;
|
||
char bond_name[IFNAMSIZ];
|
||
char slave_name[MAX_NETDEV_NUM][IFNAMSIZ];
|
||
};
|
||
|
||
#define MAX_BONDING_CNT_PER_CARD (2)
|
||
|
||
struct bond_negotiate_status {
|
||
u8 status;
|
||
u8 version;
|
||
u8 rsvd0[6];
|
||
u32 bond_id;
|
||
u32 bond_mmi_status; /* 该bond子设备的链路状态 */
|
||
u32 active_bitmap; /* 该bond子设备的slave port状态 */
|
||
|
||
u8 rsvd[16];
|
||
};
|
||
|
||
struct bond_all_msg_s {
|
||
struct bond_drv_msg_s drv_msg;
|
||
struct bond_negotiate_status active_info;
|
||
};
|
||
|
||
struct get_card_bond_msg_s {
|
||
u32 bond_cnt;
|
||
struct bond_all_msg_s all_msg[MAX_BONDING_CNT_PER_CARD];
|
||
};
|
||
|
||
int alloc_buff_in(void *hwdev, struct msg_module *nt_msg, u32 in_size, void **buf_in);
|
||
|
||
int alloc_buff_out(void *hwdev, struct msg_module *nt_msg, u32 out_size, void **buf_out);
|
||
|
||
void free_buff_in(void *hwdev, const struct msg_module *nt_msg, void *buf_in);
|
||
|
||
void free_buff_out(void *hwdev, struct msg_module *nt_msg, void *buf_out);
|
||
|
||
int copy_buf_out_to_user(struct msg_module *nt_msg, u32 out_size, void *buf_out);
|
||
|
||
int send_to_mpu(void *hwdev, struct msg_module *nt_msg, void *buf_in, u32 in_size,
|
||
void *buf_out, u32 *out_size);
|
||
int send_to_npu(void *hwdev, struct msg_module *nt_msg, void *buf_in,
|
||
u32 in_size, void *buf_out, u32 *out_size);
|
||
int send_to_sm(void *hwdev, struct msg_module *nt_msg, void *buf_in, u32 in_size,
|
||
void *buf_out, u32 *out_size);
|
||
|
||
#endif /* _HINIC3_MT_H_ */
|