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 |
36 | static inline int nfp_nic_dcb_init(struct nfp_net *nn) { return 0; } |
37 | static 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 |