mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-17 11:25:04 +08:00
net/mlx5e: Add support to klm_umr_wqe
This commit adds the needed definitions for using the klm_umr_wqe. UMR stands for user-mode memory registration, is a mechanism to alter address translation properties of MKEY by posting WorkQueueElement aka WQE on send queue. MKEY stands for memory key, MKEY are used to describe a region in memory that can be later used by HW. KLM stands for {Key, Length, MemVa}, KLM_MKEY is indirect MKEY that enables to map multiple memory spaces with different sizes in unified MKEY. klm_umr_wqe is a UMR that use to update a KLM_MKEY. SHAMPO feature uses KLM_MKEY for memory registration of his header buffer. Signed-off-by: Ben Ben-Ishay <benishay@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
eaee12f046
commit
d7b896acbd
@ -152,6 +152,25 @@ struct page_pool;
|
||||
#define MLX5E_UMR_WQEBBS \
|
||||
(DIV_ROUND_UP(MLX5E_UMR_WQE_INLINE_SZ, MLX5_SEND_WQE_BB))
|
||||
|
||||
#define MLX5E_KLM_UMR_WQE_SZ(sgl_len)\
|
||||
(sizeof(struct mlx5e_umr_wqe) +\
|
||||
(sizeof(struct mlx5_klm) * (sgl_len)))
|
||||
|
||||
#define MLX5E_KLM_UMR_WQEBBS(klm_entries) \
|
||||
(DIV_ROUND_UP(MLX5E_KLM_UMR_WQE_SZ(klm_entries), MLX5_SEND_WQE_BB))
|
||||
|
||||
#define MLX5E_KLM_UMR_DS_CNT(klm_entries)\
|
||||
(DIV_ROUND_UP(MLX5E_KLM_UMR_WQE_SZ(klm_entries), MLX5_SEND_WQE_DS))
|
||||
|
||||
#define MLX5E_KLM_MAX_ENTRIES_PER_WQE(wqe_size)\
|
||||
(((wqe_size) - sizeof(struct mlx5e_umr_wqe)) / sizeof(struct mlx5_klm))
|
||||
|
||||
#define MLX5E_KLM_ENTRIES_PER_WQE(wqe_size)\
|
||||
ALIGN_DOWN(MLX5E_KLM_MAX_ENTRIES_PER_WQE(wqe_size), MLX5_UMR_KLM_ALIGNMENT)
|
||||
|
||||
#define MLX5E_MAX_KLM_PER_WQE(mdev) \
|
||||
MLX5E_KLM_ENTRIES_PER_WQE(MLX5E_TX_MPW_MAX_NUM_DS << MLX5_MKEY_BSF_OCTO_SIZE)
|
||||
|
||||
#define MLX5E_MSG_LEVEL NETIF_MSG_LINK
|
||||
|
||||
#define mlx5e_dbg(mlevel, priv, format, ...) \
|
||||
@ -217,7 +236,10 @@ struct mlx5e_umr_wqe {
|
||||
struct mlx5_wqe_ctrl_seg ctrl;
|
||||
struct mlx5_wqe_umr_ctrl_seg uctrl;
|
||||
struct mlx5_mkey_seg mkc;
|
||||
struct mlx5_mtt inline_mtts[0];
|
||||
union {
|
||||
struct mlx5_mtt inline_mtts[0];
|
||||
struct mlx5_klm inline_klms[0];
|
||||
};
|
||||
};
|
||||
|
||||
enum mlx5e_priv_flag {
|
||||
|
@ -290,6 +290,7 @@ enum {
|
||||
MLX5_UMR_INLINE = (1 << 7),
|
||||
};
|
||||
|
||||
#define MLX5_UMR_KLM_ALIGNMENT 4
|
||||
#define MLX5_UMR_MTT_ALIGNMENT 0x40
|
||||
#define MLX5_UMR_MTT_MASK (MLX5_UMR_MTT_ALIGNMENT - 1)
|
||||
#define MLX5_UMR_MTT_MIN_CHUNK_SIZE MLX5_UMR_MTT_ALIGNMENT
|
||||
|
Loading…
Reference in New Issue
Block a user