Re: [RFC PATCH net-next v6 01/15] queue_api: define queue api

From: David Wei
Date: Fri Mar 08 2024 - 18:48:09 EST


On 2024-03-04 18:01, Mina Almasry wrote:
> This API enables the net stack to reset the queues used for devmem.
>
> Signed-off-by: Mina Almasry <almasrymina@xxxxxxxxxx>
>
> ---
> include/linux/netdevice.h | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
> index c41019f34179..3105c586355d 100644
> --- a/include/linux/netdevice.h
> +++ b/include/linux/netdevice.h
> @@ -1435,6 +1435,20 @@ struct netdev_net_notifier {
> * struct kernel_hwtstamp_config *kernel_config,
> * struct netlink_ext_ack *extack);
> * Change the hardware timestamping parameters for NIC device.
> + *
> + * void *(*ndo_queue_mem_alloc)(struct net_device *dev, int idx);
> + * Allocate memory for an RX queue. The memory returned in the form of
> + * a void * can be passed to ndo_queue_mem_free() for freeing or to
> + * ndo_queue_start to create an RX queue with this memory.
> + *
> + * void (*ndo_queue_mem_free)(struct net_device *dev, void *);
> + * Free memory from an RX queue.
> + *
> + * int (*ndo_queue_start)(struct net_device *dev, int idx, void *);
> + * Start an RX queue at the specified index.
> + *
> + * int (*ndo_queue_stop)(struct net_device *dev, int idx, void **);
> + * Stop the RX queue at the specified index.
> */
> struct net_device_ops {
> int (*ndo_init)(struct net_device *dev);
> @@ -1679,6 +1693,16 @@ struct net_device_ops {
> int (*ndo_hwtstamp_set)(struct net_device *dev,
> struct kernel_hwtstamp_config *kernel_config,
> struct netlink_ext_ack *extack);
> + void * (*ndo_queue_mem_alloc)(struct net_device *dev,
> + int idx);
> + void (*ndo_queue_mem_free)(struct net_device *dev,
> + void *queue_mem);
> + int (*ndo_queue_start)(struct net_device *dev,
> + int idx,
> + void *queue_mem);
> + int (*ndo_queue_stop)(struct net_device *dev,
> + int idx,
> + void **out_queue_mem);
> };

I'm working to port bnxt over to using this API. What are your thoughts
on maybe pulling this out and use bnxt to drive it?

>
> /**