278 lines
4.4 KiB
C
278 lines
4.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0*/
|
|
/* Huawei HiNIC PCI Express Linux driver
|
|
* Copyright(c) 2017 Huawei Technologies Co., Ltd
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms and conditions of the GNU General Public License,
|
|
* version 2, as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
* for more details.
|
|
*
|
|
*/
|
|
|
|
#ifndef HINIC_NICTOOL_H_
|
|
#define HINIC_NICTOOL_H_
|
|
|
|
#include "hinic_dfx_def.h"
|
|
/* completion timeout interval, unit is jiffies*/
|
|
#define UP_COMP_TIME_OUT_VAL 10000U
|
|
|
|
struct sm_in_st {
|
|
int node;
|
|
int id;
|
|
int instance;
|
|
};
|
|
|
|
struct sm_out_st {
|
|
u64 val1;
|
|
u64 val2;
|
|
};
|
|
|
|
struct up_log_msg_st {
|
|
u32 rd_len;
|
|
u32 addr;
|
|
};
|
|
|
|
struct csr_write_st {
|
|
u32 rd_len;
|
|
u32 addr;
|
|
u8 *data;
|
|
};
|
|
|
|
struct ipsurx_stats_info {
|
|
u32 addr;
|
|
u32 rd_cnt;
|
|
};
|
|
|
|
struct ucode_cmd_st {
|
|
union {
|
|
struct {
|
|
u32 comm_mod_type : 8;
|
|
u32 ucode_cmd_type : 4;
|
|
u32 cmdq_ack_type : 3;
|
|
u32 ucode_imm : 1;
|
|
u32 len : 16;
|
|
} ucode_db;
|
|
u32 value;
|
|
};
|
|
};
|
|
|
|
struct up_cmd_st {
|
|
union {
|
|
struct {
|
|
u32 comm_mod_type : 8;
|
|
u32 chipif_cmd : 8;
|
|
u32 up_api_type : 16;
|
|
} up_db;
|
|
u32 value;
|
|
};
|
|
};
|
|
|
|
struct _dcb_data {
|
|
u8 wr_flag;
|
|
u8 dcb_en;
|
|
u8 err;
|
|
u8 rsvd;
|
|
};
|
|
|
|
union _dcb_ctl {
|
|
struct _dcb_data dcb_data;
|
|
u32 data;
|
|
};
|
|
|
|
struct _pfc_data {
|
|
u8 pfc_en;
|
|
u8 pfc_priority;
|
|
u8 num_of_tc;
|
|
u8 err;
|
|
};
|
|
|
|
union _pfc {
|
|
struct _pfc_data pfc_data;
|
|
u32 data;
|
|
};
|
|
|
|
union _flag_com {
|
|
struct _ets_flag {
|
|
u8 flag_ets_enable : 1;
|
|
u8 flag_ets_percent : 1;
|
|
u8 flag_ets_cos : 1;
|
|
u8 flag_ets_strict : 1;
|
|
u8 rev : 4;
|
|
} ets_flag;
|
|
u8 data;
|
|
};
|
|
|
|
struct _ets {
|
|
u8 ets_en;
|
|
u8 err;
|
|
u8 strict;
|
|
u8 tc[8];
|
|
u8 ets_percent[8];
|
|
union _flag_com flag_com;
|
|
};
|
|
|
|
#define API_CMD 0x1
|
|
#define API_CHAIN 0x2
|
|
#define API_CLP 0x3
|
|
|
|
struct msg_module {
|
|
char device_name[IFNAMSIZ];
|
|
unsigned int module;
|
|
union {
|
|
u32 msg_formate;
|
|
struct ucode_cmd_st ucode_cmd;
|
|
struct up_cmd_st up_cmd;
|
|
};
|
|
|
|
struct {
|
|
u32 in_buff_len;
|
|
u32 out_buff_len;
|
|
} len_info;
|
|
u32 res;
|
|
void *in_buff;
|
|
void *out_buf;
|
|
};
|
|
|
|
#define MAX_VER_INFO_LEN 128
|
|
struct drv_version_info {
|
|
char ver[MAX_VER_INFO_LEN];
|
|
};
|
|
|
|
struct chip_fault_stats {
|
|
int offset;
|
|
u8 chip_faults[MAX_DRV_BUF_SIZE];
|
|
};
|
|
|
|
struct hinic_wqe_info {
|
|
int q_id;
|
|
void *slq_handle;
|
|
unsigned int wqe_id;
|
|
};
|
|
|
|
struct hinic_cos_up_map {
|
|
u8 cos_up[HINIC_DCB_UP_MAX];
|
|
u8 num_cos;
|
|
};
|
|
|
|
struct hinic_tx_hw_page {
|
|
u64 phy_addr;
|
|
u64 *map_addr;
|
|
};
|
|
|
|
struct hinic_dbg_sq_info {
|
|
u16 q_id;
|
|
u16 pi;
|
|
u16 ci; /* sw_ci */
|
|
u16 fi; /* hw_ci */
|
|
|
|
u32 q_depth;
|
|
u16 pi_reverse;
|
|
u16 weqbb_size;
|
|
|
|
u8 priority;
|
|
u16 *ci_addr;
|
|
u64 cla_addr;
|
|
|
|
void *slq_handle;
|
|
|
|
struct hinic_tx_hw_page direct_wqe;
|
|
struct hinic_tx_hw_page db_addr;
|
|
u32 pg_idx;
|
|
|
|
u32 glb_sq_id;
|
|
};
|
|
|
|
struct hinic_dbg_rq_info {
|
|
u16 q_id;
|
|
u16 glb_rq_id;
|
|
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;
|
|
|
|
u16 msix_idx;
|
|
u32 msix_vector;
|
|
};
|
|
|
|
#define BUSINFO_LEN 32
|
|
struct pf_info {
|
|
char name[IFNAMSIZ];
|
|
char bus_info[BUSINFO_LEN];
|
|
u32 pf_type;
|
|
};
|
|
|
|
#define MAX_SIZE 16
|
|
struct card_info {
|
|
struct pf_info pf[MAX_SIZE];
|
|
u32 pf_num;
|
|
};
|
|
|
|
struct nic_card_id {
|
|
u32 id[MAX_SIZE];
|
|
u32 num;
|
|
};
|
|
|
|
struct func_pdev_info {
|
|
u64 bar0_phy_addr;
|
|
u64 bar0_size;
|
|
u64 rsvd1[4];
|
|
};
|
|
|
|
struct hinic_card_func_info {
|
|
u32 num_pf;
|
|
u32 rsvd0;
|
|
u64 usr_api_phy_addr;
|
|
struct func_pdev_info pdev_info[MAX_SIZE];
|
|
};
|
|
|
|
#define MAX_CARD_NUM 64
|
|
extern void *g_hinic_card_node_array[MAX_CARD_NUM];
|
|
extern void *g_hinic_card_vir_addr[MAX_CARD_NUM];
|
|
extern u64 g_hinic_card_phy_addr[MAX_CARD_NUM];
|
|
extern struct mutex g_hinic_addr_lock;
|
|
extern int g_hinic_card_id;
|
|
|
|
struct hinic_nic_loop_mode {
|
|
u32 loop_mode;
|
|
u32 loop_ctrl;
|
|
};
|
|
|
|
struct hinic_nic_poll_weight {
|
|
int poll_weight;
|
|
};
|
|
|
|
enum hinic_homologues_state {
|
|
HINIC_HOMOLOGUES_OFF = 0,
|
|
HINIC_HOMOLOGUES_ON = 1,
|
|
};
|
|
|
|
struct hinic_homologues {
|
|
enum hinic_homologues_state homo_state;
|
|
};
|
|
|
|
struct hinic_pf_info {
|
|
u32 isvalid;
|
|
u32 pf_id;
|
|
};
|
|
|
|
int hinic_tool_k_init(void);
|
|
void hinic_tool_k_uninit(void);
|
|
|
|
u32 hinic_get_io_stats_size(struct hinic_nic_dev *nic_dev);
|
|
void hinic_get_io_stats(struct hinic_nic_dev *nic_dev,
|
|
struct hinic_show_item *items);
|
|
|
|
#define TOOL_COUNTER_MAX_LEN 512
|
|
|
|
#endif
|