# mlx5dv_create_mkey

## NAME



           mlx5dv_create_mkey - Creates an indirect mkey
    
           mlx5dv_destroy_mkey - Destroys an indirect mkey
    


## SYNOPSIS



                  #include <infiniband/mlx5dv.h>
    
                  struct mlx5dv_mkey_init_attr {
                      struct ibv_pd   *pd;
                      uint32_t    create_flags;
                      uint16_t    max_entries;
                  };
    
                  struct mlx5dv_mkey {
                      uint32_t    lkey;
                      uint32_t    rkey;
                  };
    
                  struct mlx5dv_mkey *
                  mlx5dv_create_mkey(struct mlx5dv_mkey_init_attr *mkey_init_attr);
    
                  int mlx5dv_destroy_mkey(struct mlx5dv_mkey *mkey);
    


## DESCRIPTION



           Create / destroy an indirect mkey.
    
           Create an indirect mkey to enable application uses its specific
           device functionality.
    


## ARGUMENTS



           ##mkey_init_attr##
    
           _pd_     ibv protection domain.
    
           _create_flags_
                  MLX5DV_MKEY_INIT_ATTR_FLAGS_INDIRECT: Indirect mkey is
                  being created.
                  MLX5DV_MKEY_INIT_ATTR_FLAGS_BLOCK_SIGNATURE: Enable block
                  signature offload support for mkey.
                  MLX5DV_MKEY_INIT_ATTR_FLAGS_CRYPTO: Enable crypto offload
                  support for mkey.  Setting this flag means that crypto
                  operations will be done and hence, must be configured.
                  I.e.  if this flag is set and the MKey was not configured
                  for crypto properties using **mlx5dv_wr_set_mkey_crypto()** ,
                  then running traffic with the MKey will fail, generating a
                  CQE with error.  MLX5DV_MKEY_INIT_ATTR_FLAGS_UPDATE_TAG:
                  Enable update tag support for mkey.  Setting this flag
                  allows an application to set the mkey tag post of creating
                  the mkey.  If the kernel does not support updating the mkey
                  tag, mkey creation will fail.
                  MLX5DV_MKEY_INIT_ATTR_FLAGS_REMOTE_INVALIDATE: Enable
                  remote invalidation support for mkey.
    
           _max_entries_
                  Requested max number of pointed entries by this indirect
                  mkey.  The function will update the
                  _mkey_init_attr- >max_entries_ with the actual mkey value that
                  was created; it will be greater than or equal to the value
                  requested.
    


## RETURN VALUE



           Upon success _mlx5dv_create_mkey_ will return a new _struct_
           _mlx5dv_mkey_ on error NULL will be returned and errno will be set.
    
           Upon success destroy 0 is returned or the value of errno on a
           failure.
    


## Notes



           To let this functionality works a DEVX context should be opened by
           using _mlx5dv_open_device_.
    
           The created indirect mkey can`t work with scatter to CQE feature,
           consider _mlx5dv_create_qp()_ with
           MLX5DV_QP_CREATE_DISABLE_SCATTER_TO_CQE for small messages.
    


* * *