int mlx5r_umr_resource_init(struct mlx5_ib_dev *dev); void mlx5r_umr_resource_cleanup(struct mlx5_ib_dev *dev);
int mlx5r_umr_init(struct mlx5_ib_dev *dev); void mlx5r_umr_cleanup(struct mlx5_ib_dev *dev);
staticinlinebool mlx5r_umr_can_load_pas(struct mlx5_ib_dev *dev,
size_t length)
{ /* * umr_check_mkey_mask() rejects MLX5_MKEY_MASK_PAGE_SIZE which is * always set if MLX5_IB_SEND_UMR_UPDATE_TRANSLATION (aka * MLX5_IB_UPD_XLT_ADDR and MLX5_IB_UPD_XLT_ENABLE) is set. Thus, a mkey * can never be enabled without this capability. Simplify this weird * quirky hardware by just saying it can't use PAS lists with UMR at * all.
*/ if (MLX5_CAP_GEN(dev->mdev, umr_modify_entity_size_disabled)) returnfalse;
/* * length is the size of the MR in bytes when mlx5_ib_update_xlt() is * used.
*/ if (!MLX5_CAP_GEN(dev->mdev, umr_extended_translation_offset) &&
length >= MLX5_MAX_UMR_PAGES * PAGE_SIZE) returnfalse; returntrue;
}
/* * true if an existing MR can be reconfigured to new access_flags using UMR. * Older HW cannot use UMR to update certain elements of the MKC. See * get_umr_update_access_mask() and umr_check_mkey_mask()
*/ staticinlinebool mlx5r_umr_can_reconfig(struct mlx5_ib_dev *dev, unsignedint current_access_flags, unsignedint target_access_flags)
{ unsignedint diffs = current_access_flags ^ target_access_flags;
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.