usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

RFNoC internal MTU on N310

DP
Dario Pennisi
Tue, Jul 6, 2021 1:39 AM

Hi,
i wrote a custom block and i'm trying to output packets that are around the
size of the MAX MTU directly from my block. since packets have to be
handled by Zynq's ARM i understand the MTU i have to consider is the one
for int0 which is 8000. my block's MTU is set to 10 which, considering a
chdr width of 64 bits makes 8192 bytes if i'm not wrong. When i try to
generate packets of more than 1500 bytes i start to get very bad errors
such as:

[ERROR] [STREAMER] The receive transport caught a value exception.
ValueError: Bad CHDR header or invalid packet length.
gr::log :WARN: rfnoc_rx_streamer0 - RFNoC Streamer block received error
ERROR_CODE_BAD_PACKET (Code: 0xf)

is there any hard limit on CHDR packet size? is there any setting anywhere
in the code that limits the length of a packet?
note that i set noc shell to automatically calculate packet lengths as i
set SIDEBAND_AT_END to 1.
thanks,

Dario Pennisi

Hi, i wrote a custom block and i'm trying to output packets that are around the size of the MAX MTU directly from my block. since packets have to be handled by Zynq's ARM i understand the MTU i have to consider is the one for int0 which is 8000. my block's MTU is set to 10 which, considering a chdr width of 64 bits makes 8192 bytes if i'm not wrong. When i try to generate packets of more than 1500 bytes i start to get very bad errors such as: [ERROR] [STREAMER] The receive transport caught a value exception. ValueError: Bad CHDR header or invalid packet length. gr::log :WARN: rfnoc_rx_streamer0 - RFNoC Streamer block received error ERROR_CODE_BAD_PACKET (Code: 0xf) is there any hard limit on CHDR packet size? is there any setting anywhere in the code that limits the length of a packet? note that i set noc shell to automatically calculate packet lengths as i set SIDEBAND_AT_END to 1. thanks, Dario Pennisi
WF
Wade Fife
Tue, Jul 6, 2021 12:55 PM

Hi Dario,

The FPGA code has the max MTU hard-coded to 10, which matches your block,
so that's good. That's the hard limit on CHDR packet size. You also need
some headroom for header information, so the limit is less than 8192 bytes
of payload. Make sure the MTU for your Ethernet interface is set to
something larger than what you need (9000 is a common setting). I would
also try setting the streamer args spp, recv_frame_size, and
send_frame_size. The spp is in samples and should match the size your block
is configured to generate. The *_frame_size arguments are in bytes and need
to be bigger than the equivalent spp size. More information on setting
these args can be found here:

https://files.ettus.com/manual/page_configuration.html#config_stream_args_args

Thanks,

Wade

On Mon, Jul 5, 2021 at 8:40 PM Dario Pennisi dario@iptronix.com wrote:

Hi,
i wrote a custom block and i'm trying to output packets that are around
the size of the MAX MTU directly from my block. since packets have to be
handled by Zynq's ARM i understand the MTU i have to consider is the one
for int0 which is 8000. my block's MTU is set to 10 which, considering a
chdr width of 64 bits makes 8192 bytes if i'm not wrong. When i try to
generate packets of more than 1500 bytes i start to get very bad errors
such as:

[ERROR] [STREAMER] The receive transport caught a value exception.
ValueError: Bad CHDR header or invalid packet length.
gr::log :WARN: rfnoc_rx_streamer0 - RFNoC Streamer block received error
ERROR_CODE_BAD_PACKET (Code: 0xf)

is there any hard limit on CHDR packet size? is there any setting anywhere
in the code that limits the length of a packet?
note that i set noc shell to automatically calculate packet lengths as i
set SIDEBAND_AT_END to 1.
thanks,

Dario Pennisi


USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-leave@lists.ettus.com

Hi Dario, The FPGA code has the max MTU hard-coded to 10, which matches your block, so that's good. That's the hard limit on CHDR packet size. You also need some headroom for header information, so the limit is less than 8192 bytes of payload. Make sure the MTU for your Ethernet interface is set to something larger than what you need (9000 is a common setting). I would also try setting the streamer args spp, recv_frame_size, and send_frame_size. The spp is in samples and should match the size your block is configured to generate. The *_frame_size arguments are in bytes and need to be bigger than the equivalent spp size. More information on setting these args can be found here: https://files.ettus.com/manual/page_configuration.html#config_stream_args_args Thanks, Wade On Mon, Jul 5, 2021 at 8:40 PM Dario Pennisi <dario@iptronix.com> wrote: > Hi, > i wrote a custom block and i'm trying to output packets that are around > the size of the MAX MTU directly from my block. since packets have to be > handled by Zynq's ARM i understand the MTU i have to consider is the one > for int0 which is 8000. my block's MTU is set to 10 which, considering a > chdr width of 64 bits makes 8192 bytes if i'm not wrong. When i try to > generate packets of more than 1500 bytes i start to get very bad errors > such as: > > [ERROR] [STREAMER] The receive transport caught a value exception. > ValueError: Bad CHDR header or invalid packet length. > gr::log :WARN: rfnoc_rx_streamer0 - RFNoC Streamer block received error > ERROR_CODE_BAD_PACKET (Code: 0xf) > > is there any hard limit on CHDR packet size? is there any setting anywhere > in the code that limits the length of a packet? > note that i set noc shell to automatically calculate packet lengths as i > set SIDEBAND_AT_END to 1. > thanks, > > Dario Pennisi > > _______________________________________________ > USRP-users mailing list -- usrp-users@lists.ettus.com > To unsubscribe send an email to usrp-users-leave@lists.ettus.com >