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

Reply via email to