On Sun, 2023-11-05 at 18:44 -0800, Mina Almasry wrote:
diff --git a/include/net/page_pool/types.h b/include/net/page_pool/types.h index 6fc5134095ed..d4bea053bb7e 100644 --- a/include/net/page_pool/types.h +++ b/include/net/page_pool/types.h @@ -60,6 +60,8 @@ struct page_pool_params { int nid; struct device *dev; struct napi_struct *napi;
- u8 memory_provider;
- void *mp_priv;
Minor nit: swapping the above 2 fields should make the struct smaller.
enum dma_data_direction dma_dir; unsigned int max_len; unsigned int offset; @@ -118,6 +120,19 @@ struct page_pool_stats { }; #endif +struct mem_provider;
+enum pp_memory_provider_type {
- __PP_MP_NONE, /* Use system allocator directly */
+};
+struct pp_memory_provider_ops {
- int (*init)(struct page_pool *pool);
- void (*destroy)(struct page_pool *pool);
- struct page *(*alloc_pages)(struct page_pool *pool, gfp_t gfp);
- bool (*release_page)(struct page_pool *pool, struct page *page);
+};
struct page_pool { struct page_pool_params p; @@ -165,6 +180,9 @@ struct page_pool { */ struct ptr_ring ring;
- const struct pp_memory_provider_ops *mp_ops;
- void *mp_priv;
Why the mp_ops are not part of page_pool_params? why mp_priv is duplicated here?
Cheers,
Paolo