162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
262306a36Sopenharmony_ci/* Copyright (C) 2023 Corigine, Inc. */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#ifndef __NFP_NIC_H__
562306a36Sopenharmony_ci#define __NFP_NIC_H__ 1
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <linux/netdevice.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifdef CONFIG_DCB
1062306a36Sopenharmony_ci/* DCB feature definitions */
1162306a36Sopenharmony_ci#define NFP_NET_MAX_DSCP	64
1262306a36Sopenharmony_ci#define NFP_NET_MAX_TC		IEEE_8021QAZ_MAX_TCS
1362306a36Sopenharmony_ci#define NFP_NET_MAX_PRIO	8
1462306a36Sopenharmony_ci#define NFP_DCB_CFG_STRIDE	256
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistruct nfp_dcb {
1762306a36Sopenharmony_ci	u8 dscp2prio[NFP_NET_MAX_DSCP];
1862306a36Sopenharmony_ci	u8 prio2tc[NFP_NET_MAX_PRIO];
1962306a36Sopenharmony_ci	u8 tc2idx[IEEE_8021QAZ_MAX_TCS];
2062306a36Sopenharmony_ci	u64 tc_maxrate[IEEE_8021QAZ_MAX_TCS];
2162306a36Sopenharmony_ci	u8 tc_tx_pct[IEEE_8021QAZ_MAX_TCS];
2262306a36Sopenharmony_ci	u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
2362306a36Sopenharmony_ci	u8 dscp_cnt;
2462306a36Sopenharmony_ci	u8 trust_status;
2562306a36Sopenharmony_ci	bool rate_init;
2662306a36Sopenharmony_ci	bool ets_init;
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	struct nfp_cpp_area *dcbcfg_tbl_area;
2962306a36Sopenharmony_ci	u8 __iomem *dcbcfg_tbl;
3062306a36Sopenharmony_ci	u32 cfg_offset;
3162306a36Sopenharmony_ci};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciint nfp_nic_dcb_init(struct nfp_net *nn);
3462306a36Sopenharmony_civoid nfp_nic_dcb_clean(struct nfp_net *nn);
3562306a36Sopenharmony_ci#else
3662306a36Sopenharmony_cistatic inline int nfp_nic_dcb_init(struct nfp_net *nn) { return 0; }
3762306a36Sopenharmony_cistatic inline void nfp_nic_dcb_clean(struct nfp_net *nn) {}
3862306a36Sopenharmony_ci#endif
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_cistruct nfp_app_nic_private {
4162306a36Sopenharmony_ci#ifdef CONFIG_DCB
4262306a36Sopenharmony_ci	struct nfp_dcb dcb;
4362306a36Sopenharmony_ci#endif
4462306a36Sopenharmony_ci};
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#endif
47