Re: AF_XDP socket (sock2) unable to read, after writing with another AF_XDP socket (sock1)

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

 



Den tors 1 nov. 2018 kl 18:14 skrev Konrad Djimeli <kdjimeli@xxxxxxxxxx>:
>
> Hello,
>
> I am working on developing a Snabb Switch app which uses Af_XDP sockets
> and so far I have not found any AF_XDP sample example online, except for
> the sample in the Linux Kernel source. I have tried modifying the
> example, to create two sockets (sock1 and sock2) sharing a UMEM with
> custom write_sock and read_sock functions. But when I do a write with
> "sock1" I am unable to read the data with "sock2". Here is the code
> https://github.com/djkonro/afxdp/blob/master/xdpsock/xdpsock_user.c ,
> and I am new to working with AF_XDP sockets and I wish I could get some
> pointers to what may be wrong with the program.
>

Hi Konrad,

Let's recap what your application does:

1. Create two AF_XDP sockets bound to ifindex and a shared UMEM.
2. The pass NUM_DESCS descriptors to the UMEM fill ring
3. In write_sock BATCH_SIZE packets are put on the Tx ring.
4. In read_sock up to BATCH_SIZE packets are picked from the Rx ring.
5. The application exits.

In terms of correctness:

In 3. you pass the same UMEM indicies to the Tx ring (ids={0,
FRAME_SIZE, 2*FRAME_SIZE, ...}), as you have passed to the fill
ring. This is not correct. Userspace to track what ids are owned by
the user and by the kernel. Now, both the fill ring and Tx ring
contain the same id.

I'm not sure what the expected output of your program should be? Have
you verified that packets are being sent? Is the inferface/queue 0
receiving packets?

I think it would help if you explained what you are trying to do
first!

What XDP program are you running?


Cheers,
Björn



*

> Thanks,
> Konrad
> www.djimeli.me




[Index of Archives]     [Linux Networking Development]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite Campsites]

  Powered by Linux