| /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ |
| /* Copyright (c) 2020 Mellanox Technologies. */ |
| |
| #ifndef __MLX5E_DCBNL_H__ |
| #define __MLX5E_DCBNL_H__ |
| |
| #ifdef CONFIG_MLX5_CORE_EN_DCB |
| |
| #define MLX5E_MAX_PRIORITY (8) |
| |
| struct mlx5e_cee_config { |
| /* bw pct for priority group */ |
| u8 pg_bw_pct[CEE_DCBX_MAX_PGS]; |
| u8 prio_to_pg_map[CEE_DCBX_MAX_PRIO]; |
| bool pfc_setting[CEE_DCBX_MAX_PRIO]; |
| bool pfc_enable; |
| }; |
| |
| struct mlx5e_dcbx { |
| enum mlx5_dcbx_oper_mode mode; |
| struct mlx5e_cee_config cee_cfg; /* pending configuration */ |
| u8 dscp_app_cnt; |
| |
| /* The only setting that cannot be read from FW */ |
| u8 tc_tsa[IEEE_8021QAZ_MAX_TCS]; |
| u8 cap; |
| |
| /* Buffer configuration */ |
| bool manual_buffer; |
| u32 cable_len; |
| u32 xoff; |
| u16 port_buff_cell_sz; |
| }; |
| |
| #define MLX5E_MAX_DSCP (64) |
| |
| struct mlx5e_dcbx_dp { |
| u8 dscp2prio[MLX5E_MAX_DSCP]; |
| u8 trust_state; |
| }; |
| |
| void mlx5e_dcbnl_build_netdev(struct net_device *netdev); |
| void mlx5e_dcbnl_build_rep_netdev(struct net_device *netdev); |
| void mlx5e_dcbnl_initialize(struct mlx5e_priv *priv); |
| void mlx5e_dcbnl_init_app(struct mlx5e_priv *priv); |
| void mlx5e_dcbnl_delete_app(struct mlx5e_priv *priv); |
| #else |
| static inline void mlx5e_dcbnl_build_netdev(struct net_device *netdev) {} |
| static inline void mlx5e_dcbnl_build_rep_netdev(struct net_device *netdev) {} |
| static inline void mlx5e_dcbnl_initialize(struct mlx5e_priv *priv) {} |
| static inline void mlx5e_dcbnl_init_app(struct mlx5e_priv *priv) {} |
| static inline void mlx5e_dcbnl_delete_app(struct mlx5e_priv *priv) {} |
| #endif |
| |
| #endif /* __MLX5E_DCBNL_H__ */ |