Re: [PATCH bpf-next v2 11/14] xsk: add shared umem support between devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2020-07-10 17:16, Magnus Karlsson wrote:
Add support to share a umem between different devices. This mode
can be invoked with the XDP_SHARED_UMEM bind flag. Previously,
sharing was only supported within the same device. Note that when
sharing a umem between devices, just as in the case of sharing a
umem between queue ids, you need to create a fill ring and a
completion ring and tie them to the socket (with two setsockopts,
one for each ring) before you do the bind with the
XDP_SHARED_UMEM flag. This so that the single-producer
single-consumer semantics of the rings can be upheld.

I'm not sure if you saw my comment under v1 asking about performance. Could you share what performance numbers (packet rate) you see when doing forwarding with xsk_fwd? I'm interested in:

1. Forwarding between two queues of the same netdev.

2. Forwarding between two netdevs.

3. xdpsock -l as the baseline.

Thanks,
Max


Signed-off-by: Magnus Karlsson <magnus.karlsson@xxxxxxxxx>
---
  net/xdp/xsk.c | 11 ++++-------
  1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
index 05fadd9..4bf47d3 100644
--- a/net/xdp/xsk.c
+++ b/net/xdp/xsk.c
@@ -695,14 +695,11 @@ static int xsk_bind(struct socket *sock, struct sockaddr *addr, int addr_len)
  			sockfd_put(sock);
  			goto out_unlock;
  		}
-		if (umem_xs->dev != dev) {
-			err = -EINVAL;
-			sockfd_put(sock);
-			goto out_unlock;
-		}
- if (umem_xs->queue_id != qid) {
-			/* Share the umem with another socket on another qid */
+		if (umem_xs->queue_id != qid || umem_xs->dev != dev) {
+			/* Share the umem with another socket on another qid
+			 * and/or device.
+			 */
  			xs->pool = xp_create_and_assign_umem(xs,
  							     umem_xs->umem);
  			if (!xs->pool) {





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux