[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Discuss-gnuradio] Expected behavior during underruns
From: |
Josh Blum |
Subject: |
Re: [Discuss-gnuradio] Expected behavior during underruns |
Date: |
Thu, 16 Dec 2010 09:26:12 -0800 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101208 Lightning/1.0b2 Thunderbird/3.1.7 |
> Yes, I timestamp every packet sent by the send-function but my
> observation shows that the underrun realignment is not automatic. I
> also think that the underrun recovery works for packets, but it
> doesn't work for fragments of packets.
>
Correct. Its at the packet level (thats UDP packet level 360~ish samples).
> Consider the case when you have a packet P1 with timestamp 3.0 and
> the number of samples are equal to 1 second in transmission duration.
> P1 is then fragmented into several fragments by the UHD, call them
> f1,f2,f3,f4,f5. The timestamp and start_of_burst is set at f1 in P1
> correct? And the remaining fragments doesn't get any timestamp and
> are set to be transmitted immediate, correct? The f1 will block the
> rest of the fragments until the usrp2 time is equal to the timestamp
> of f1 and then all of the fragments will be transmitted in a sequence
> if we do not get an underrun (1).
>
> If we instead get an underrun after that the first fragment is moved
> to the usrp2 either nothing or a CW will be transmitted for a while
> between f1 and f2 which will introduce an unknown and unwanted offset
> (2). To eliminate this offset the host can drop f2 and timestamp all
> of the fragments so that the fragments in the end of the transmission
> happen at the expected time (3).
>
> f1,f2,f3,f4,f5 (1) expected sequence f1,U ,f2,f3,f4,f5
> (2) with
> underrun f1,U ,f3,f4,f5 (3) with underrun and dropping
>
> As we are talking about the fragments of a packet now, this must be
> handled in vrt_packet_handler.hpp and/or io_impl.cpp.
>
I think you will find that hardware recovery is going to be faster then
anything you you manipulate in software.
I think the problem is that you are sending very large bursts with only
the first packet having a time stamp. Can you try your own fragmentation
into smaller sub-packets, each sub-packet with a timestamp?
tx_timed_samples.cpp has an example of fragmenting a buffer into smaller
packets.
> http://code.ettus.com/redmine/ettus/projects/uhd/repository/revisions/71e1763332141603e9edba097fd19b00e9a76ab8/entry/host/lib/transport/vrt_packet_handler.hpp
>
> Look at the state SEND_MODE_FULL_BUFF at line 414 //calculate new
> flags for the fragments 427: if_packet_info.has_tsi =
> metadata.has_time_spec and first_fragment; 428:
> if_packet_info.has_tsf = if_packet_info.has_tsi; 429:
> if_packet_info.sob = metadata.start_of_burst and first_fragment;
> 430: if_packet_info.eob = metadata.end_of_burst and
> final_fragment;
>
Correct, this could be modified to time-stamp every packet in the burst.
But a pain to do as the code there knows nothing about the sample rate.
-Josh
- [Discuss-gnuradio] Expected behavior during underruns, Patrik Eliardsson, 2010/12/09
- Re: [Discuss-gnuradio] Expected behavior during underruns, Thomas Tsou, 2010/12/09
- RE: [Discuss-gnuradio] Expected behavior during underruns, Patrik Eliardsson, 2010/12/14
- Re: [Discuss-gnuradio] Expected behavior during underruns, Josh Blum, 2010/12/14
- Re: [Discuss-gnuradio] Expected behavior during underruns, Thomas Tsou, 2010/12/14
- RE: [Discuss-gnuradio] Expected behavior during underruns, Patrik Eliardsson, 2010/12/15
- Re: [Discuss-gnuradio] Expected behavior during underruns, Josh Blum, 2010/12/15
- Re: [Discuss-gnuradio] Expected behavior during underruns, Thomas Tsou, 2010/12/15
- RE: [Discuss-gnuradio] Expected behavior during underruns, Patrik Eliardsson, 2010/12/16
- Re: [Discuss-gnuradio] Expected behavior during underruns,
Josh Blum <=
- [Discuss-gnuradio] usrp_source: overrun, Thomas H Kim, 2010/12/16
Re: [Discuss-gnuradio] Expected behavior during underruns, Josh Blum, 2010/12/09