/* 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__ */
|