/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ /* Copyright (C) 2023 Corigine, Inc. */ #ifndef __NFP_NIC_H__ #define __NFP_NIC_H__ 1 #include <linux/netdevice.h> #ifdef CONFIG_DCB /* DCB feature definitions */ #define NFP_NET_MAX_DSCP 64 #define NFP_NET_MAX_TC IEEE_8021QAZ_MAX_TCS #define NFP_NET_MAX_PRIO 8 #define NFP_DCB_CFG_STRIDE 256 struct nfp_dcb { u8 dscp2prio[NFP_NET_MAX_DSCP]; u8 prio2tc[NFP_NET_MAX_PRIO]; u8 tc2idx[IEEE_8021QAZ_MAX_TCS]; u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS]; u8 tc_tx_pct[IEEE_8021QAZ_MAX_TCS]; u8 tc_tsa[IEEE_8021QAZ_MAX_TCS]; u8 dscp_cnt; u8 trust_status; bool rate_init; bool ets_init; struct nfp_cpp_area *dcbcfg_tbl_area; u8 __iomem *dcbcfg_tbl; u32 cfg_offset; }; int nfp_nic_dcb_init(struct nfp_net *nn); void nfp_nic_dcb_clean(struct nfp_net *nn); #else static inline int nfp_nic_dcb_init(struct nfp_net *nn) { return 0; } static inline void nfp_nic_dcb_clean(struct nfp_net *nn) {} #endif struct nfp_app_nic_private { #ifdef CONFIG_DCB struct nfp_dcb dcb; #endif }; #endif