1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2 /* Copyright (C) 2023 Corigine, Inc. */ 3 4 #ifndef __NFP_NIC_H__ 5 #define __NFP_NIC_H__ 1 6 7 #include <linux/netdevice.h> 8 9 #ifdef CONFIG_DCB 10 /* DCB feature definitions */ 11 #define NFP_NET_MAX_DSCP 64 12 #define NFP_NET_MAX_TC IEEE_8021QAZ_MAX_TCS 13 #define NFP_NET_MAX_PRIO 8 14 #define NFP_DCB_CFG_STRIDE 256 15 16 struct nfp_dcb { 17 u8 dscp2prio[NFP_NET_MAX_DSCP]; 18 u8 prio2tc[NFP_NET_MAX_PRIO]; 19 u8 tc2idx[IEEE_8021QAZ_MAX_TCS]; 20 u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS]; 21 u8 tc_tx_pct[IEEE_8021QAZ_MAX_TCS]; 22 u8 tc_tsa[IEEE_8021QAZ_MAX_TCS]; 23 u8 dscp_cnt; 24 u8 trust_status; 25 bool rate_init; 26 bool ets_init; 27 28 struct nfp_cpp_area *dcbcfg_tbl_area; 29 u8 __iomem *dcbcfg_tbl; 30 u32 cfg_offset; 31 }; 32 33 int nfp_nic_dcb_init(struct nfp_net *nn); 34 void nfp_nic_dcb_clean(struct nfp_net *nn); 35 #else nfp_nic_dcb_init(struct nfp_net * nn)36static inline int nfp_nic_dcb_init(struct nfp_net *nn) { return 0; } nfp_nic_dcb_clean(struct nfp_net * nn)37static inline void nfp_nic_dcb_clean(struct nfp_net *nn) {} 38 #endif 39 40 struct nfp_app_nic_private { 41 #ifdef CONFIG_DCB 42 struct nfp_dcb dcb; 43 #endif 44 }; 45 46 #endif 47