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" 8eff380aaSAnirudh Venkataramanan #include "ice_base.h" 937b6f646SAnirudh Venkataramanan #include "ice_lib.h" 1037b6f646SAnirudh Venkataramanan 1137b6f646SAnirudh Venkataramanan #ifdef CONFIG_DCB 12b832c2f6SAnirudh Venkataramanan #define ICE_TC_MAX_BW 100 /* Default Max BW percentage */ 13b832c2f6SAnirudh Venkataramanan 14b832c2f6SAnirudh Venkataramanan void ice_dcb_rebuild(struct ice_pf *pf); 157b9ffc76SAnirudh Venkataramanan u8 ice_dcb_get_ena_tc(struct ice_dcbx_cfg *dcbcfg); 167b9ffc76SAnirudh Venkataramanan u8 ice_dcb_get_num_tc(struct ice_dcbx_cfg *dcbcfg); 171ddef455SUsha Ketineni u8 ice_dcb_get_tc(struct ice_vsi *vsi, int queue_index); 18a629cf0aSAnirudh Venkataramanan void ice_vsi_cfg_dcb_rings(struct ice_vsi *vsi); 19e223eaecSDave Ertman int ice_init_pf_dcb(struct ice_pf *pf, bool locked); 204b0fdcebSAnirudh Venkataramanan void ice_update_dcb_stats(struct ice_pf *pf); 215f6aa50eSAnirudh Venkataramanan int 225f6aa50eSAnirudh Venkataramanan ice_tx_prepare_vlan_flags_dcb(struct ice_ring *tx_ring, 235f6aa50eSAnirudh Venkataramanan struct ice_tx_buf *first); 2400cc3f1bSAnirudh Venkataramanan void 2500cc3f1bSAnirudh Venkataramanan ice_dcb_process_lldp_set_mib_change(struct ice_pf *pf, 2600cc3f1bSAnirudh Venkataramanan struct ice_rq_event_info *event); 27462acf6aSTony Nguyen void ice_vsi_cfg_netdev_tc(struct ice_vsi *vsi, u8 ena_tc); 28a629cf0aSAnirudh Venkataramanan static inline void 29a629cf0aSAnirudh Venkataramanan ice_set_cgd_num(struct ice_tlan_ctx *tlan_ctx, struct ice_ring *ring) 30a629cf0aSAnirudh Venkataramanan { 31a629cf0aSAnirudh Venkataramanan tlan_ctx->cgd_num = ring->dcb_tc; 32a629cf0aSAnirudh Venkataramanan } 3337b6f646SAnirudh Venkataramanan #else 34b832c2f6SAnirudh Venkataramanan #define ice_dcb_rebuild(pf) do {} while (0) 35b832c2f6SAnirudh Venkataramanan 367b9ffc76SAnirudh Venkataramanan static inline u8 ice_dcb_get_ena_tc(struct ice_dcbx_cfg __always_unused *dcbcfg) 377b9ffc76SAnirudh Venkataramanan { 387b9ffc76SAnirudh Venkataramanan return ICE_DFLT_TRAFFIC_CLASS; 397b9ffc76SAnirudh Venkataramanan } 407b9ffc76SAnirudh Venkataramanan 417b9ffc76SAnirudh Venkataramanan static inline u8 ice_dcb_get_num_tc(struct ice_dcbx_cfg __always_unused *dcbcfg) 427b9ffc76SAnirudh Venkataramanan { 437b9ffc76SAnirudh Venkataramanan return 1; 447b9ffc76SAnirudh Venkataramanan } 457b9ffc76SAnirudh Venkataramanan 461ddef455SUsha Ketineni static inline u8 471ddef455SUsha Ketineni ice_dcb_get_tc(struct ice_vsi __always_unused *vsi, 481ddef455SUsha Ketineni int __always_unused queue_index) 491ddef455SUsha Ketineni { 501ddef455SUsha Ketineni return 0; 511ddef455SUsha Ketineni } 521ddef455SUsha Ketineni 53e223eaecSDave Ertman static inline int 54e223eaecSDave Ertman ice_init_pf_dcb(struct ice_pf *pf, bool __always_unused locked) 5537b6f646SAnirudh Venkataramanan { 5637b6f646SAnirudh Venkataramanan dev_dbg(&pf->pdev->dev, "DCB not supported\n"); 5737b6f646SAnirudh Venkataramanan return -EOPNOTSUPP; 5837b6f646SAnirudh Venkataramanan } 597b9ffc76SAnirudh Venkataramanan 605f6aa50eSAnirudh Venkataramanan static inline int 615f6aa50eSAnirudh Venkataramanan ice_tx_prepare_vlan_flags_dcb(struct ice_ring __always_unused *tx_ring, 625f6aa50eSAnirudh Venkataramanan struct ice_tx_buf __always_unused *first) 635f6aa50eSAnirudh Venkataramanan { 645f6aa50eSAnirudh Venkataramanan return 0; 655f6aa50eSAnirudh Venkataramanan } 665f6aa50eSAnirudh Venkataramanan 674b0fdcebSAnirudh Venkataramanan #define ice_update_dcb_stats(pf) do {} while (0) 68a629cf0aSAnirudh Venkataramanan #define ice_vsi_cfg_dcb_rings(vsi) do {} while (0) 6900cc3f1bSAnirudh Venkataramanan #define ice_dcb_process_lldp_set_mib_change(pf, event) do {} while (0) 70a629cf0aSAnirudh Venkataramanan #define ice_set_cgd_num(tlan_ctx, ring) do {} while (0) 71462acf6aSTony Nguyen #define ice_vsi_cfg_netdev_tc(vsi, ena_tc) do {} while (0) 7237b6f646SAnirudh Venkataramanan #endif /* CONFIG_DCB */ 7337b6f646SAnirudh Venkataramanan #endif /* _ICE_DCB_LIB_H_ */ 74