On Fri, May 27, 2016 at 03:44:31PM +0100, Hunt, David wrote: > > Hi David, [snip] > That chunk of code above would be better moved all right. I'd suggest > moving it to the > rte_mempool_create function, as that's the one that needs the backward > compatibility.
OK > > On the flags issue, each mempool handler can re-interpret the flags as > needed. Maybe we > could use the upper half of the bits for different handlers, changing the > meaning of the > bits depending on which handler is being set up. We can then keep the lower > half for bits that are common across all handlers? That way the user can Common lower half bit in flags looks good. > just set the bits they > are interested in for that handler. Also, the alloc function has access to > the flags, so maybe the > handler specific setup could be handled in the alloc function rather than > adding a new function pointer? Yes. I agree. > > Of course, that won't help if we need to pass in more data, in which case > we'd probably need an > opaque data pointer somewhere. It would probably be most useful to pass it > in with the > alloc, which may need the data. Any suggestions? But the top level rte_mempool_create() function needs to pass the data. Right? That would be an ABI change. IMO, we need to start thinking about passing a struct of config data to rte_mempool_create to create backward compatibility on new argument addition to rte_mempool_create() Other points in HW assisted pool manager perspective, 1) May be RING can be replaced with some other higher abstraction name for the internal MEMPOOL_F_RING_CREATED flag 2) IMO, It is better to change void *pool in struct rte_mempool to anonymous union type, something like below, so that mempool implementation can choose the best type. union { void *pool; uint64_t val; } 3) int32_t handler_idx creates 4 byte hole in struct rte_mempool in 64 bit system. IMO it better to rearrange.(as const struct rte_memzone *mz comes next) 4) IMO, It is better to change ext_alloc/ext_free to ext_create/ext_destroy as their is no allocation in HW assisted pool manager case, it will be mostly creating some HW initialization. > > Regards, > Dave. > > > > > > > > > > > > > > > > > >