Unfortunately I have little experience with RFNOC programming, so perhaps 
someone else will chime in. 

Sent from my iPhone

> On Jul 3, 2021, at 5:08 PM, Dario Pennisi <da...@iptronix.com> wrote:
> 
> 
> Hi Marcus,
> I have started looking into this but doesn't seem that straightforward. While 
> rfnoc provides an easy way to create DSP blocks which interact with each 
> other, feeding a data stream to a custom streamer endpoint seems a bit 
> complex. I understand right now it works by injecting chdr packets where 
> metadata contains IP and port. I need to understand how that works but aside 
> from this I would also have to resolve Mac addresses via arp. I see the 
> infrastructure is there but seems quite complex and can't find much 
> documentation other than source code.
> Thanks!
> 
> Dario
> 
> 
> Il Sab 3 Lug 2021, 20:46 Marcus D Leech <patchvonbr...@gmail.com> ha scritto:
>> I will certainly ask R&D about this. 
>> 
>> But I wonder if an architecture where you demux inside the FPGA and emit UDP 
>> packets directly would not be better? Not sure how this would fit within the 
>> RFNOC framework but since UDP is connectionless, making this work within the 
>> FPGA should not consume too many resources. 
>> 
>> Sent from my iPhone
>> 
>>>> On Jul 3, 2021, at 2:04 PM, Dario Pennisi <da...@iptronix.com> wrote:
>>>> 
>>> 
>>> I see. Thanks for your help. So the only option would be to make sfp work 
>>> properly. 
>>> Can you please check with your colleagues if this is a viable option and 
>>> what eventually would be needed to make it stable? 
>>> As I was mentioning if I try to generate sustained traffic the connection 
>>> is immediately dropped...
>>> Thanks
>>> 
>>> Dario
>>> 
>>> Il Sab 3 Lug 2021, 18:51 Marcus D Leech <patchvonbr...@gmail.com> ha 
>>> scritto:
>>>> Looks like jumno frames on the 1Gbit interface are not supported. This is 
>>>> an underlying Zynq hardware limitation. 
>>>> 
>>>> 
>>>> 
>>>> Sent from my iPhone
>>>> 
>>>>>> On Jul 3, 2021, at 12:42 PM, Dario Pennisi <da...@iptronix.com> wrote:
>>>>>> 
>>>>> 
>>>>> Hi,
>>>>> data rate is pretty low compared to port capabilities. it's something 
>>>>> like 1MB/sec per channel.
>>>>> in the meantime i did some tests and found the following:
>>>>> 1) iperf caps at 88MB/sec if packets are 420 bytes (as i was 
>>>>> transmitting) with CPU at 50% (single core at 100%)
>>>>> 2) iperf caps at 96MB/sec if packets are at least 1000 bytes long
>>>>> 3) i tried increasing tx buffers and wmem but that didn't help
>>>>> 4) i tried increasing my payload size to 1200 bytes and CPU overhead was 
>>>>> greatly reduced
>>>>> 
>>>>> from the above it seems to me there's a lot of CPU overhead in sending a 
>>>>> packet, not really in processing data in the blocks.
>>>>> at this point it would be beneficial to increase MTU so that i can reduce 
>>>>> the number of calls to writev however it seems like eth0 is locked at 
>>>>> 1500. 
>>>>> do you have any clue on how to increase that size?
>>>>> thanks,
>>>>> 
>>>>> Dario Pennisi
>>>>> 
>>>>>> On Sat, Jul 3, 2021 at 4:53 PM Marcus D Leech <patchvonbr...@gmail.com> 
>>>>>> wrote:
>>>>>> What is the aggregate data rate of all your UDP ports?
>>>>>> 
>>>>>> I’m not sure how “general purpose” the SFP ports are from the 
>>>>>> perspective of the CPU. They have a special relationship with the FPGA 
>>>>>> code, but I don’t know the details. 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> Sent from my iPhone
>>>>>> 
>>>>>>>> On Jul 3, 2021, at 10:47 AM, Dario Pennisi <da...@iptronix.com> wrote:
>>>>>>>> 
>>>>>>> 
>>>>>>> Hi Marcus,
>>>>>>> thanks for the response. the demux block is in C++ and in the work 
>>>>>>> function the only things we do are:
>>>>>>> - look for EOB tags
>>>>>>> - use writev to send a UDP packet with a fixed header prepended to the 
>>>>>>> data bounded by EOB
>>>>>>> 
>>>>>>> on the other hand the graph is in python but i understand it is only 
>>>>>>> setting up the endpoint connections and that should not impact 
>>>>>>> performance.
>>>>>>> another issue i see is that apparently eth0 is limited to 1500 MTU and 
>>>>>>> as i was saying when we tested sending traffic from zynq to SFP port it 
>>>>>>> didn't really work.
>>>>>>> thanks,
>>>>>>> 
>>>>>>> Dario Pennisi
>>>>>>> 
>>>>>>>> On Sat, Jul 3, 2021 at 3:12 PM Marcus D Leech 
>>>>>>>> <patchvonbr...@gmail.com> wrote:
>>>>>>>> If your special demux block is written in Python, that’s the first 
>>>>>>>> place to look for optimization. A Zynq CPU is only a fraction as 
>>>>>>>> powerful as even a modest desktop or laptop CPU. So you need to use 
>>>>>>>> C++ to give it a fighting chance. 
>>>>>>>> 
>>>>>>>> Sent from my iPhone
>>>>>>>> 
>>>>>>>>>> On Jul 3, 2021, at 3:39 AM, Dario Pennisi <da...@iptronix.com> wrote:
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Hi,
>>>>>>>>> i'm working on a N310 and developed a custom block which processes 
>>>>>>>>> multiple radio channels generating a low data rate output for each 
>>>>>>>>> one. i'm outputting this data in a serialized way through a RFNoC 
>>>>>>>>> block and parsing it through a gnuradio block that demuxes it and 
>>>>>>>>> sends each channel's data to a socket. this works perfectly if graph 
>>>>>>>>> runs on a PC but on zynq CPU load rises quickly and with around 20 
>>>>>>>>> channels CPU saturates.
>>>>>>>>> what demux block work function does is simply looking for EOB tags 
>>>>>>>>> and sending each chunk of data to an UDP socket using writev, which i 
>>>>>>>>> hoped was doing zero copy but that doesn't seem to be the case.
>>>>>>>>> note that in order for the demux block to work i had to use the 1GB 
>>>>>>>>> port eth0 as using SFP ports connection would drop right away for 
>>>>>>>>> some reason.
>>>>>>>>> note also i'm using a graph generated in python and haven't yet 
>>>>>>>>> tested doing the same in C... not sure that would really help anyway.
>>>>>>>>> 
>>>>>>>>> do you have any suggestion to improve UDP packet transmission on 
>>>>>>>>> zynq, eventually suggesting how to perform real zero copy for UDP 
>>>>>>>>> traffic in a GNURadio block? 
>>>>>>>>> 
>>>>>>>>> thanks!
>>>>>>>>> Dario Pennisi
>>>>>>>>> 
>>>>>>>>> _______________________________________________
>>>>>>>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>>>>>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to