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