X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fcommon%2Fmlx5%2Fmlx5_common_mr.h;h=a2c426df2b4d9f28b4a351a01cb8cbb31676ce58;hb=9edb8ee3e7ab606baea586d8e9179ec61d971456;hp=cdb8acfab1b5d5ce627d7a25677f1e619591b748;hpb=58a17853b5991092da557538d5acc7bc365ba12e;p=dpdk.git diff --git a/drivers/common/mlx5/mlx5_common_mr.h b/drivers/common/mlx5/mlx5_common_mr.h index cdb8acfab1..a2c426df2b 100644 --- a/drivers/common/mlx5/mlx5_common_mr.h +++ b/drivers/common/mlx5/mlx5_common_mr.h @@ -10,21 +10,12 @@ #include #include -/* Verbs header. */ -/* ISO C doesn't support unnamed structs/unions, disabling -pedantic. */ -#ifdef PEDANTIC -#pragma GCC diagnostic ignored "-Wpedantic" -#endif -#include -#include -#ifdef PEDANTIC -#pragma GCC diagnostic error "-Wpedantic" -#endif #include #include #include +#include "mlx5_glue.h" #include "mlx5_common_mp.h" /* Size of per-queue MR cache array for linear search. */ @@ -38,6 +29,14 @@ struct mlx5_pmd_mr { size_t len; void *obj; /* verbs mr object or devx umem object. */ }; + +/** + * mr operations typedef + */ +typedef int (*mlx5_reg_mr_t)(void *pd, void *addr, size_t length, + struct mlx5_pmd_mr *pmd_mr); +typedef void (*mlx5_dereg_mr_t)(struct mlx5_pmd_mr *pmd_mr); + /* Memory Region object. */ struct mlx5_mr { LIST_ENTRY(mlx5_mr) mr; /**< Pointer to the prev/next entry. */ @@ -83,6 +82,8 @@ struct mlx5_mr_share_cache { struct mlx5_mr_btree cache; /* Global MR cache table. */ struct mlx5_mr_list mr_list; /* Registered MR list. */ struct mlx5_mr_list mr_free_list; /* Freed MR list. */ + mlx5_reg_mr_t reg_mr_cb; /* Callback to reg_mr func */ + mlx5_dereg_mr_t dereg_mr_cb; /* Callback to dereg_mr func */ } __rte_packed; /** @@ -155,8 +156,8 @@ mlx5_mr_lookup_list(struct mlx5_mr_share_cache *share_cache, struct mr_cache_entry *entry, uintptr_t addr); __rte_internal struct mlx5_mr * -mlx5_create_mr_ext(void *pd, uintptr_t addr, size_t len, - int socket_id); +mlx5_create_mr_ext(void *pd, uintptr_t addr, size_t len, int socket_id, + mlx5_reg_mr_t reg_mr_cb); __rte_internal uint32_t mlx5_mr_create_primary(void *pd,