On Sat, Feb 02, 2019 at 01:42:45PM +0200, Leon Romanovsky wrote: > @@ -62,9 +62,24 @@ struct rdma_restrack_root { > */ > struct rw_semaphore rwsem; > /** > - * @hash: global database for all resources per-device > + * @xa: Array of XArray structures to hold restrack entries. > + * We want to use array of XArrays because insertion is type > + * dependent. For types with xisiting unique ID (like QPN), > + * we will insert to that unique index. For other types, > + * we insert based on pointers and auto-allocate unique index. > */ > - DECLARE_HASHTABLE(hash, RDMA_RESTRACK_HASH_BITS); > + struct xarray xa[RDMA_RESTRACK_MAX]; > + /** > + * @fill_res_entry: driver-specific fill function > + * > + * Allows rdma drivers to add their own restrack attributes. > + */ > + int (*fill_res_entry)(struct sk_buff *msg, > + struct rdma_restrack_entry *entry); This fill_res_entry is a rebasing error Jason