[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240702171953.00886d5a@kernel.org>
Date: Tue, 2 Jul 2024 17:19:53 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Mina Almasry <almasrymina@...gle.com>
Cc: netdev@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-doc@...r.kernel.org, linux-alpha@...r.kernel.org,
linux-mips@...r.kernel.org, linux-parisc@...r.kernel.org,
sparclinux@...r.kernel.org, linux-trace-kernel@...r.kernel.org,
linux-arch@...r.kernel.org, bpf@...r.kernel.org,
linux-kselftest@...r.kernel.org, linux-media@...r.kernel.org,
dri-devel@...ts.freedesktop.org, "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>, Donald
Hunter <donald.hunter@...il.com>, Jonathan Corbet <corbet@....net>, Richard
Henderson <richard.henderson@...aro.org>, Ivan Kokshaysky
<ink@...assic.park.msu.ru>, Matt Turner <mattst88@...il.com>, Thomas
Bogendoerfer <tsbogend@...ha.franken.de>, "James E.J. Bottomley"
<James.Bottomley@...senPartnership.com>, Helge Deller <deller@....de>,
Andreas Larsson <andreas@...sler.com>, Jesper Dangaard Brouer
<hawk@...nel.org>, Ilias Apalodimas <ilias.apalodimas@...aro.org>, Steven
Rostedt <rostedt@...dmis.org>, Masami Hiramatsu <mhiramat@...nel.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>, Arnd Bergmann
<arnd@...db.de>, Alexei Starovoitov <ast@...nel.org>, Daniel Borkmann
<daniel@...earbox.net>, Andrii Nakryiko <andrii@...nel.org>, Martin KaFai
Lau <martin.lau@...ux.dev>, Eduard Zingerman <eddyz87@...il.com>, Song Liu
<song@...nel.org>, Yonghong Song <yonghong.song@...ux.dev>, John Fastabend
<john.fastabend@...il.com>, KP Singh <kpsingh@...nel.org>, Stanislav
Fomichev <sdf@...ichev.me>, Hao Luo <haoluo@...gle.com>, Jiri Olsa
<jolsa@...nel.org>, Steffen Klassert <steffen.klassert@...unet.com>,
Herbert Xu <herbert@...dor.apana.org.au>, David Ahern <dsahern@...nel.org>,
Willem de Bruijn <willemdebruijn.kernel@...il.com>, Shuah Khan
<shuah@...nel.org>, Sumit Semwal <sumit.semwal@...aro.org>, "Christian
König" <christian.koenig@....com>, Bagas Sanjaya
<bagasdotme@...il.com>, Christoph Hellwig <hch@...radead.org>, Nikolay
Aleksandrov <razor@...ckwall.org>, Pavel Begunkov <asml.silence@...il.com>,
David Wei <dw@...idwei.uk>, Jason Gunthorpe <jgg@...pe.ca>, Yunsheng Lin
<linyunsheng@...wei.com>, Shailend Chand <shailend@...gle.com>, Harshitha
Ramamurthy <hramamurthy@...gle.com>, Shakeel Butt <shakeel.butt@...ux.dev>,
Jeroen de Borst <jeroendb@...gle.com>, Praveen Kaligineedi
<pkaligineedi@...gle.com>, Stanislav Fomichev <sdf@...gle.com>
Subject: Re: [PATCH net-next v15 02/14] net: netdev netlink api to bind
dma-buf to a net device
On Fri, 28 Jun 2024 00:32:39 +0000 Mina Almasry wrote:
> API takes the dma-buf fd as input, and binds it to the netdevice. The
> user can specify the rx queues to bind the dma-buf to.
>
> Suggested-by: Stanislav Fomichev <sdf@...gle.com>
> Signed-off-by: Mina Almasry <almasrymina@...gle.com>
> diff --git a/Documentation/netlink/specs/netdev.yaml b/Documentation/netlink/specs/netdev.yaml
> index 959755be4d7f9..899ac0882a098 100644
> --- a/Documentation/netlink/specs/netdev.yaml
> +++ b/Documentation/netlink/specs/netdev.yaml
> @@ -268,6 +268,45 @@ attribute-sets:
> name: napi-id
> doc: ID of the NAPI instance which services this queue.
> type: u32
> + -
> + name: queue-dmabuf
> + attributes:
> + -
> + name: type
> + doc: rx or tx queue
> + type: u8
> + enum: queue-type
> + -
> + name: idx
> + doc: queue index
> + type: u32
u8 is a waste of space, since attrs are rounded up to 4B
and we don't use "idx"
How about we use a subset of queue attrs?
name: queue-id
subset-of: queue
attributes:
-
name: id
-
name: type
> + -
> + name: bind-dmabuf
The naming is a bit too command specific, how about pp-buf ?
Or just dmabuf ?
> + attributes:
> + -
> + name: ifindex
> + doc: netdev ifindex to bind the dma-buf to.
> + type: u32
> + checks:
> + min: 1
> + -
> + name: queues
> + doc: receive queues to bind the dma-buf to.
> + type: nest
> + nested-attributes: queue-dmabuf
> + multi-attr: true
> + -
> + name: dmabuf-fd
> + doc: dmabuf file descriptor to bind.
> + type: u32
> + -
> + name: dmabuf-id
> + doc: id of the dmabuf binding
> + type: u32
> + checks:
> + min: 1
> +
We need some form of introspection. Can we add both in the queue dump
and page pool dump some info (dmabuf-id?) to indicate there is a DMABUF
bound to the queue / page pool?
> -
> name: qstats
> @@ -579,6 +618,20 @@ operations:
> attributes:
> - ifindex
> reply: *queue-get-op
> + -
> + name: bind-rx
> + doc: Bind dmabuf to netdev
> + attribute-set: bind-dmabuf
> + flags: [ admin-perm ]
> + do:
> + request:
> + attributes:
> + - ifindex
> + - dmabuf-fd
> + - queues
> + reply:
> + attributes:
> + - dmabuf-id
The ops end up getting rendered as an enum, so the ordering matters.
You can't insert in the middle without breaking uAPI.
For attribute sets (which you also added before qstat) it technically
doesn't matter but would be good to have them in order to match ops.
> diff --git a/include/uapi/linux/netdev.h b/include/uapi/linux/netdev.h
> index 43742ac5b00da..190a504a62358 100644
> --- a/include/uapi/linux/netdev.h
> +++ b/include/uapi/linux/netdev.h
> @@ -136,6 +136,24 @@ enum {
> NETDEV_A_QUEUE_MAX = (__NETDEV_A_QUEUE_MAX - 1)
> };
>
> +enum {
> + NETDEV_A_QUEUE_DMABUF_TYPE = 1,
> + NETDEV_A_QUEUE_DMABUF_IDX,
> +
> + __NETDEV_A_QUEUE_DMABUF_MAX,
> + NETDEV_A_QUEUE_DMABUF_MAX = (__NETDEV_A_QUEUE_DMABUF_MAX - 1)
> +};
> +
> +enum {
> + NETDEV_A_BIND_DMABUF_IFINDEX = 1,
> + NETDEV_A_BIND_DMABUF_QUEUES,
> + NETDEV_A_BIND_DMABUF_DMABUF_FD,
> + NETDEV_A_BIND_DMABUF_DMABUF_ID,
This does look kinda repetitive, maybe let's drop the dmabuf from attr
names?
> + __NETDEV_A_BIND_DMABUF_MAX,
> + NETDEV_A_BIND_DMABUF_MAX = (__NETDEV_A_BIND_DMABUF_MAX - 1)
> +};
Powered by blists - more mailing lists