2026-01-29 22:25:33 +08:00

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