79 lines
2.3 KiB
C
79 lines
2.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright(c) 2021 Huawei Technologies Co., Ltd */
|
|
|
|
#ifndef HINIC3_DCB_H
|
|
#define HINIC3_DCB_H
|
|
|
|
#include "ossl_knl.h"
|
|
|
|
enum HINIC3_DCB_FLAGS {
|
|
HINIC3_DCB_UP_COS_SETTING,
|
|
HINIC3_DCB_TRAFFIC_STOPPED,
|
|
};
|
|
|
|
struct hinic3_cos_cfg {
|
|
u8 up;
|
|
u8 bw_pct;
|
|
u8 tc_id;
|
|
u8 prio_sp; /* 0 - DWRR, 1 - SP */
|
|
};
|
|
|
|
struct hinic3_tc_cfg {
|
|
u8 bw_pct;
|
|
u8 prio_sp; /* 0 - DWRR, 1 - SP */
|
|
u16 rsvd;
|
|
};
|
|
|
|
enum HINIC3_DCB_TRUST {
|
|
DCB_PCP,
|
|
DCB_DSCP,
|
|
};
|
|
|
|
#define PCP_MAX_UP 8
|
|
#define DSCP_MAC_UP 64
|
|
#define DBG_DFLT_DSCP_VAL 0xFF
|
|
|
|
struct hinic3_dcb_config {
|
|
u8 trust; /* pcp, dscp */
|
|
u8 default_cos;
|
|
u8 pcp_user_cos_num;
|
|
u8 pcp_valid_cos_map;
|
|
u8 dscp_user_cos_num;
|
|
u8 dscp_valid_cos_map;
|
|
u8 pcp2cos[PCP_MAX_UP];
|
|
u8 dscp2cos[DSCP_MAC_UP];
|
|
|
|
u8 cos_qp_offset[NIC_DCB_COS_MAX];
|
|
u8 cos_qp_num[NIC_DCB_COS_MAX];
|
|
};
|
|
|
|
u8 hinic3_get_dev_user_cos_num(struct hinic3_nic_dev *nic_dev);
|
|
u8 hinic3_get_dev_valid_cos_map(struct hinic3_nic_dev *nic_dev);
|
|
int hinic3_dcb_init(struct hinic3_nic_dev *nic_dev);
|
|
void hinic3_dcb_reset_hw_config(struct hinic3_nic_dev *nic_dev);
|
|
int hinic3_configure_dcb(struct net_device *netdev);
|
|
int hinic3_setup_cos(struct net_device *netdev, u8 cos, u8 netif_run);
|
|
void hinic3_dcbcfg_set_pfc_state(struct hinic3_nic_dev *nic_dev, u8 pfc_state);
|
|
u8 hinic3_dcbcfg_get_pfc_state(struct hinic3_nic_dev *nic_dev);
|
|
void hinic3_dcbcfg_set_pfc_pri_en(struct hinic3_nic_dev *nic_dev,
|
|
u8 pfc_en_bitmap);
|
|
u8 hinic3_dcbcfg_get_pfc_pri_en(struct hinic3_nic_dev *nic_dev);
|
|
int hinic3_dcbcfg_set_ets_up_tc_map(struct hinic3_nic_dev *nic_dev,
|
|
const u8 *up_tc_map);
|
|
void hinic3_dcbcfg_get_ets_up_tc_map(struct hinic3_nic_dev *nic_dev,
|
|
u8 *up_tc_map);
|
|
int hinic3_dcbcfg_set_ets_tc_bw(struct hinic3_nic_dev *nic_dev,
|
|
const u8 *tc_bw);
|
|
void hinic3_dcbcfg_get_ets_tc_bw(struct hinic3_nic_dev *nic_dev, u8 *tc_bw);
|
|
void hinic3_dcbcfg_set_ets_tc_prio_type(struct hinic3_nic_dev *nic_dev,
|
|
u8 tc_prio_bitmap);
|
|
void hinic3_dcbcfg_get_ets_tc_prio_type(struct hinic3_nic_dev *nic_dev,
|
|
u8 *tc_prio_bitmap);
|
|
int hinic3_dcbcfg_set_up_bitmap(struct hinic3_nic_dev *nic_dev);
|
|
void hinic3_update_tx_db_cos(struct hinic3_nic_dev *nic_dev, u8 dcb_en);
|
|
|
|
void hinic3_update_qp_cos_cfg(struct hinic3_nic_dev *nic_dev, u8 num_cos);
|
|
void hinic3_vport_down(struct hinic3_nic_dev *nic_dev);
|
|
int hinic3_vport_up(struct hinic3_nic_dev *nic_dev);
|
|
#endif
|