#ifndef __MLX5E_DCBNL_H__
#define __MLX5E_DCBNL_H__
#ifdef CONFIG_MLX5_CORE_EN_DCB
#define MLX5E_MAX_PRIORITY (8)
struct mlx5e_cee_config {
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;
u8 dscp_app_cnt;
u8 tc_tsa[IEEE_8021QAZ_MAX_TCS];
u8 cap;
u32 cable_len;
u32 xoff;
u16 port_buff_cell_sz;
u64 upper_limit_100mbps;
u64 upper_limit_gbps;
};
#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_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_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