137b6f646SAnirudh Venkataramanan /* SPDX-License-Identifier: GPL-2.0 */ 237b6f646SAnirudh Venkataramanan /* Copyright (c) 2019, Intel Corporation. */ 337b6f646SAnirudh Venkataramanan 437b6f646SAnirudh Venkataramanan #ifndef _ICE_DCB_LIB_H_ 537b6f646SAnirudh Venkataramanan #define _ICE_DCB_LIB_H_ 637b6f646SAnirudh Venkataramanan 737b6f646SAnirudh Venkataramanan #include "ice.h" 837b6f646SAnirudh Venkataramanan #include "ice_lib.h" 937b6f646SAnirudh Venkataramanan 1037b6f646SAnirudh Venkataramanan #ifdef CONFIG_DCB 11b832c2f6SAnirudh Venkataramanan #define ICE_TC_MAX_BW 100 /* Default Max BW percentage */ 12b832c2f6SAnirudh Venkataramanan 13b832c2f6SAnirudh Venkataramanan void ice_dcb_rebuild(struct ice_pf *pf); 147b9ffc76SAnirudh Venkataramanan u8 ice_dcb_get_ena_tc(struct ice_dcbx_cfg *dcbcfg); 157b9ffc76SAnirudh Venkataramanan u8 ice_dcb_get_num_tc(struct ice_dcbx_cfg *dcbcfg); 16a629cf0aSAnirudh Venkataramanan void ice_vsi_cfg_dcb_rings(struct ice_vsi *vsi); 17e223eaecSDave Ertman int ice_init_pf_dcb(struct ice_pf *pf, bool locked); 184b0fdcebSAnirudh Venkataramanan void ice_update_dcb_stats(struct ice_pf *pf); 195f6aa50eSAnirudh Venkataramanan int 205f6aa50eSAnirudh Venkataramanan ice_tx_prepare_vlan_flags_dcb(struct ice_ring *tx_ring, 215f6aa50eSAnirudh Venkataramanan struct ice_tx_buf *first); 2200cc3f1bSAnirudh Venkataramanan void 2300cc3f1bSAnirudh Venkataramanan ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf, 2400cc3f1bSAnirudh Venkataramanan struct ice_rq_event_info *event); 25a629cf0aSAnirudh Venkataramanan static inline void 26a629cf0aSAnirudh Venkataramanan ice_set_cgd_num(struct ice_tlan_ctx *tlan_ctx, struct ice_ring *ring) 27a629cf0aSAnirudh Venkataramanan { 28a629cf0aSAnirudh Venkataramanan tlan_ctx->cgd_num = ring->dcb_tc; 29a629cf0aSAnirudh Venkataramanan } 3037b6f646SAnirudh Venkataramanan #else 31b832c2f6SAnirudh Venkataramanan #define ice_dcb_rebuild(pf) do {} while (0) 32b832c2f6SAnirudh Venkataramanan 337b9ffc76SAnirudh Venkataramanan static inline u8 ice_dcb_get_ena_tc(struct ice_dcbx_cfg __always_unused *dcbcfg) 347b9ffc76SAnirudh Venkataramanan { 357b9ffc76SAnirudh Venkataramanan return ICE_DFLT_TRAFFIC_CLASS; 367b9ffc76SAnirudh Venkataramanan } 377b9ffc76SAnirudh Venkataramanan 387b9ffc76SAnirudh Venkataramanan static inline u8 ice_dcb_get_num_tc(struct ice_dcbx_cfg __always_unused *dcbcfg) 397b9ffc76SAnirudh Venkataramanan { 407b9ffc76SAnirudh Venkataramanan return 1; 417b9ffc76SAnirudh Venkataramanan } 427b9ffc76SAnirudh Venkataramanan 43e223eaecSDave Ertman static inline int 44e223eaecSDave Ertman ice_init_pf_dcb(struct ice_pf *pf, bool __always_unused locked) 4537b6f646SAnirudh Venkataramanan { 4637b6f646SAnirudh Venkataramanan dev_dbg(&pf->pdev->dev, "DCB not supported\n"); 4737b6f646SAnirudh Venkataramanan return -EOPNOTSUPP; 4837b6f646SAnirudh Venkataramanan } 497b9ffc76SAnirudh Venkataramanan 505f6aa50eSAnirudh Venkataramanan static inline int 515f6aa50eSAnirudh Venkataramanan ice_tx_prepare_vlan_flags_dcb(struct ice_ring __always_unused *tx_ring, 525f6aa50eSAnirudh Venkataramanan struct ice_tx_buf __always_unused *first) 535f6aa50eSAnirudh Venkataramanan { 545f6aa50eSAnirudh Venkataramanan return 0; 555f6aa50eSAnirudh Venkataramanan } 565f6aa50eSAnirudh Venkataramanan 574b0fdcebSAnirudh Venkataramanan #define ice_update_dcb_stats(pf) do {} while (0) 58a629cf0aSAnirudh Venkataramanan #define ice_vsi_cfg_dcb_rings(vsi) do {} while (0) 5900cc3f1bSAnirudh Venkataramanan #define ice_dcb_process_lldp_set_mib_change(pf, event) do {} while (0) 60a629cf0aSAnirudh Venkataramanan #define ice_set_cgd_num(tlan_ctx, ring) do {} while (0) 6137b6f646SAnirudh Venkataramanan #endif /* CONFIG_DCB */ 6237b6f646SAnirudh Venkataramanan #endif /* _ICE_DCB_LIB_H_ */ 63