xref: /linux/drivers/net/ethernet/netronome/nfp/nic/main.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
19b7fe804SBin Chen /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
29b7fe804SBin Chen /* Copyright (C) 2023 Corigine, Inc. */
39b7fe804SBin Chen 
49b7fe804SBin Chen #ifndef __NFP_NIC_H__
59b7fe804SBin Chen #define __NFP_NIC_H__ 1
69b7fe804SBin Chen 
79b7fe804SBin Chen #include <linux/netdevice.h>
89b7fe804SBin Chen 
99b7fe804SBin Chen #ifdef CONFIG_DCB
109b7fe804SBin Chen /* DCB feature definitions */
11*de9c1a23SHuayu Chen #define NFP_NET_MAX_DSCP	64
129b7fe804SBin Chen #define NFP_NET_MAX_TC		IEEE_8021QAZ_MAX_TCS
139b7fe804SBin Chen #define NFP_NET_MAX_PRIO	8
149b7fe804SBin Chen #define NFP_DCB_CFG_STRIDE	256
159b7fe804SBin Chen 
169b7fe804SBin Chen struct nfp_dcb {
179b7fe804SBin Chen 	u8 dscp2prio[NFP_NET_MAX_DSCP];
189b7fe804SBin Chen 	u8 prio2tc[NFP_NET_MAX_PRIO];
199b7fe804SBin Chen 	u8 tc2idx[IEEE_8021QAZ_MAX_TCS];
209b7fe804SBin Chen 	u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
219b7fe804SBin Chen 	u8 tc_tx_pct[IEEE_8021QAZ_MAX_TCS];
229b7fe804SBin Chen 	u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
239b7fe804SBin Chen 	u8 dscp_cnt;
249b7fe804SBin Chen 	u8 trust_status;
259b7fe804SBin Chen 	bool rate_init;
269b7fe804SBin Chen 	bool ets_init;
279b7fe804SBin Chen 
289b7fe804SBin Chen 	struct nfp_cpp_area *dcbcfg_tbl_area;
299b7fe804SBin Chen 	u8 __iomem *dcbcfg_tbl;
309b7fe804SBin Chen 	u32 cfg_offset;
319b7fe804SBin Chen };
329b7fe804SBin Chen 
339b7fe804SBin Chen int nfp_nic_dcb_init(struct nfp_net *nn);
349b7fe804SBin Chen void nfp_nic_dcb_clean(struct nfp_net *nn);
359b7fe804SBin Chen #else
nfp_nic_dcb_init(struct nfp_net * nn)369b7fe804SBin Chen static inline int nfp_nic_dcb_init(struct nfp_net *nn) { return 0; }
nfp_nic_dcb_clean(struct nfp_net * nn)379b7fe804SBin Chen static inline void nfp_nic_dcb_clean(struct nfp_net *nn) {}
389b7fe804SBin Chen #endif
399b7fe804SBin Chen 
409b7fe804SBin Chen struct nfp_app_nic_private {
419b7fe804SBin Chen #ifdef CONFIG_DCB
429b7fe804SBin Chen 	struct nfp_dcb dcb;
439b7fe804SBin Chen #endif
449b7fe804SBin Chen };
459b7fe804SBin Chen 
469b7fe804SBin Chen #endif
47