Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/ethernet/mellanox/mlx5/core/en/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 6 kB image not shown  

Quelle  params.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/* Copyright (c) 2019 Mellanox Technologies. */

#ifndef __MLX5_EN_PARAMS_H__
#define __MLX5_EN_PARAMS_H__

#include "en.h"

struct mlx5e_xsk_param {
 u16 headroom;
 u16 chunk_size;
 bool unaligned;
};

struct mlx5e_cq_param {
 u32                        cqc[MLX5_ST_SZ_DW(cqc)];
 struct mlx5_wq_param       wq;
 u16                        eq_ix;
 u8                         cq_period_mode;
};

struct mlx5e_rq_param {
 struct mlx5e_cq_param      cqp;
 u32                        rqc[MLX5_ST_SZ_DW(rqc)];
 struct mlx5_wq_param       wq;
 struct mlx5e_rq_frags_info frags_info;
 u32                        xdp_frag_size;
};

struct mlx5e_sq_param {
 struct mlx5e_cq_param      cqp;
 u32                        sqc[MLX5_ST_SZ_DW(sqc)];
 struct mlx5_wq_param       wq;
 bool                       is_mpw;
 bool                       is_tls;
 u16                        stop_room;
};

struct mlx5e_channel_param {
 struct mlx5e_rq_param      rq;
 struct mlx5e_sq_param      txq_sq;
 struct mlx5e_sq_param      xdp_sq;
 struct mlx5e_sq_param      icosq;
 struct mlx5e_sq_param      async_icosq;
};

struct mlx5e_create_sq_param {
 struct mlx5_wq_ctrl        *wq_ctrl;
 u32                         cqn;
 u32                         ts_cqe_to_dest_cqn;
 u32                         tisn;
 u8                          tis_lst_sz;
 u8                          min_inline_mode;
};

/* Striding RQ dynamic parameters */

u8 mlx5e_mpwrq_page_shift(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk);
enum mlx5e_mpwrq_umr_mode
mlx5e_mpwrq_umr_mode(struct mlx5_core_dev *mdev, struct mlx5e_xsk_param *xsk);
u8 mlx5e_mpwrq_umr_entry_size(enum mlx5e_mpwrq_umr_mode mode);
u8 mlx5e_mpwrq_log_wqe_sz(struct mlx5_core_dev *mdev, u8 page_shift,
     enum mlx5e_mpwrq_umr_mode umr_mode);
u8 mlx5e_mpwrq_pages_per_wqe(struct mlx5_core_dev *mdev, u8 page_shift,
        enum mlx5e_mpwrq_umr_mode umr_mode);
u16 mlx5e_mpwrq_umr_wqe_sz(struct mlx5_core_dev *mdev, u8 page_shift,
      enum mlx5e_mpwrq_umr_mode umr_mode);
u8 mlx5e_mpwrq_umr_wqebbs(struct mlx5_core_dev *mdev, u8 page_shift,
     enum mlx5e_mpwrq_umr_mode umr_mode);
u8 mlx5e_mpwrq_mtts_per_wqe(struct mlx5_core_dev *mdev, u8 page_shift,
       enum mlx5e_mpwrq_umr_mode umr_mode);
u32 mlx5e_mpwrq_max_num_entries(struct mlx5_core_dev *mdev,
    enum mlx5e_mpwrq_umr_mode umr_mode);
u8 mlx5e_mpwrq_max_log_rq_pkts(struct mlx5_core_dev *mdev, u8 page_shift,
          enum mlx5e_mpwrq_umr_mode umr_mode);

/* Parameter calculations */

bool slow_pci_heuristic(struct mlx5_core_dev *mdev);
int mlx5e_mpwrq_validate_regular(struct mlx5_core_dev *mdev, struct mlx5e_params *params);
int mlx5e_mpwrq_validate_xsk(struct mlx5_core_dev *mdev, struct mlx5e_params *params,
        struct mlx5e_xsk_param *xsk);
void mlx5e_build_rq_params(struct mlx5_core_dev *mdev, struct mlx5e_params *params);
void mlx5e_set_rq_type(struct mlx5_core_dev *mdev, struct mlx5e_params *params);
void mlx5e_init_rq_type_params(struct mlx5_core_dev *mdev, struct mlx5e_params *params);

u16 mlx5e_get_linear_rq_headroom(struct mlx5e_params *params,
     struct mlx5e_xsk_param *xsk);
bool mlx5e_rx_is_linear_skb(struct mlx5_core_dev *mdev,
       struct mlx5e_params *params,
       struct mlx5e_xsk_param *xsk);
bool mlx5e_rx_mpwqe_is_linear_skb(struct mlx5_core_dev *mdev,
      struct mlx5e_params *params,
      struct mlx5e_xsk_param *xsk);
u8 mlx5e_mpwqe_get_log_rq_size(struct mlx5_core_dev *mdev,
          struct mlx5e_params *params,
          struct mlx5e_xsk_param *xsk);
u32 mlx5e_shampo_hd_per_wqe(struct mlx5_core_dev *mdev,
       struct mlx5e_params *params,
       struct mlx5e_rq_param *rq_param);
u32 mlx5e_shampo_hd_per_wq(struct mlx5_core_dev *mdev,
      struct mlx5e_params *params,
      struct mlx5e_rq_param *rq_param);
u32 mlx5e_choose_lro_timeout(struct mlx5_core_dev *mdev, u32 wanted_timeout);
u8 mlx5e_mpwqe_get_log_stride_size(struct mlx5_core_dev *mdev,
       struct mlx5e_params *params,
       struct mlx5e_xsk_param *xsk);
u8 mlx5e_mpwqe_get_log_num_strides(struct mlx5_core_dev *mdev,
       struct mlx5e_params *params,
       struct mlx5e_xsk_param *xsk);
u8 mlx5e_mpwqe_get_min_wqe_bulk(unsigned int wq_sz);
u16 mlx5e_get_rq_headroom(struct mlx5_core_dev *mdev,
     struct mlx5e_params *params,
     struct mlx5e_xsk_param *xsk);

/* Build queue parameters */

void mlx5e_build_create_cq_param(struct mlx5e_create_cq_param *ccp, struct mlx5e_channel *c);
int mlx5e_build_rq_param(struct mlx5_core_dev *mdev,
    struct mlx5e_params *params,
    struct mlx5e_xsk_param *xsk,
    struct mlx5e_rq_param *param);
void mlx5e_build_drop_rq_param(struct mlx5_core_dev *mdev,
          struct mlx5e_rq_param *param);
void mlx5e_build_sq_param_common(struct mlx5_core_dev *mdev,
     struct mlx5e_sq_param *param);
void mlx5e_build_sq_param(struct mlx5_core_dev *mdev,
     struct mlx5e_params *params,
     struct mlx5e_sq_param *param);
void mlx5e_build_tx_cq_param(struct mlx5_core_dev *mdev,
        struct mlx5e_params *params,
        struct mlx5e_cq_param *param);
void mlx5e_build_xdpsq_param(struct mlx5_core_dev *mdev,
        struct mlx5e_params *params,
        struct mlx5e_xsk_param *xsk,
        struct mlx5e_sq_param *param);
int mlx5e_build_channel_param(struct mlx5_core_dev *mdev,
         struct mlx5e_params *params,
         struct mlx5e_channel_param *cparam);

u16 mlx5e_calc_sq_stop_room(struct mlx5_core_dev *mdev, struct mlx5e_params *params);
int mlx5e_validate_params(struct mlx5_core_dev *mdev, struct mlx5e_params *params);
bool mlx5e_verify_params_rx_mpwqe_strides(struct mlx5_core_dev *mdev,
       struct mlx5e_params *params,
       struct mlx5e_xsk_param *xsk);

static inline void mlx5e_params_print_info(struct mlx5_core_dev *mdev,
        struct mlx5e_params *params)
{
 mlx5_core_info(mdev, "MLX5E: StrdRq(%d) RqSz(%ld) StrdSz(%ld) RxCqeCmprss(%d %s)\n",
         params->rq_wq_type == MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ,
         params->rq_wq_type == MLX5_WQ_TYPE_LINKED_LIST_STRIDING_RQ ?
         BIT(mlx5e_mpwqe_get_log_rq_size(mdev, params, NULL)) :
         BIT(params->log_rq_mtu_frames),
         BIT(mlx5e_mpwqe_get_log_stride_size(mdev, params, NULL)),
         MLX5E_GET_PFLAG(params, MLX5E_PFLAG_RX_CQE_COMPRESS),
         MLX5_CAP_GEN(mdev, enhanced_cqe_compression) ?
           "enhanced" : "basic");
};

#endif /* __MLX5_EN_PARAMS_H__ */

Messung V0.5
C=97 H=97 G=96

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.