linux/drivers/net/ethernet/mellanox/mlx5/core/en/dcbnl.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
   2/* Copyright (c) 2020 Mellanox Technologies. */
   3
   4#ifndef __MLX5E_DCBNL_H__
   5#define __MLX5E_DCBNL_H__
   6
   7#ifdef CONFIG_MLX5_CORE_EN_DCB
   8
   9#define MLX5E_MAX_PRIORITY (8)
  10
  11struct mlx5e_cee_config {
  12        /* bw pct for priority group */
  13        u8                         pg_bw_pct[CEE_DCBX_MAX_PGS];
  14        u8                         prio_to_pg_map[CEE_DCBX_MAX_PRIO];
  15        bool                       pfc_setting[CEE_DCBX_MAX_PRIO];
  16        bool                       pfc_enable;
  17};
  18
  19struct mlx5e_dcbx {
  20        enum mlx5_dcbx_oper_mode   mode;
  21        struct mlx5e_cee_config    cee_cfg; /* pending configuration */
  22        u8                         dscp_app_cnt;
  23
  24        /* The only setting that cannot be read from FW */
  25        u8                         tc_tsa[IEEE_8021QAZ_MAX_TCS];
  26        u8                         cap;
  27
  28        /* Buffer configuration */
  29        bool                       manual_buffer;
  30        u32                        cable_len;
  31        u32                        xoff;
  32        u16                        port_buff_cell_sz;
  33};
  34
  35#define MLX5E_MAX_DSCP (64)
  36
  37struct mlx5e_dcbx_dp {
  38        u8                         dscp2prio[MLX5E_MAX_DSCP];
  39        u8                         trust_state;
  40};
  41
  42void mlx5e_dcbnl_build_netdev(struct net_device *netdev);
  43void mlx5e_dcbnl_build_rep_netdev(struct net_device *netdev);
  44void mlx5e_dcbnl_initialize(struct mlx5e_priv *priv);
  45void mlx5e_dcbnl_init_app(struct mlx5e_priv *priv);
  46void mlx5e_dcbnl_delete_app(struct mlx5e_priv *priv);
  47#else
  48static inline void mlx5e_dcbnl_build_netdev(struct net_device *netdev) {}
  49static inline void mlx5e_dcbnl_build_rep_netdev(struct net_device *netdev) {}
  50static inline void mlx5e_dcbnl_initialize(struct mlx5e_priv *priv) {}
  51static inline void mlx5e_dcbnl_init_app(struct mlx5e_priv *priv) {}
  52static inline void mlx5e_dcbnl_delete_app(struct mlx5e_priv *priv) {}
  53#endif
  54
  55#endif /* __MLX5E_DCBNL_H__ */
  56