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