discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Long PDUs


From: Sean Nowlan
Subject: Re: [Discuss-gnuradio] Long PDUs
Date: Wed, 17 Apr 2013 11:59:36 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130329 Thunderbird/17.0.5

On 04/17/2013 11:34 AM, Martin Braun (CEL) wrote:
On Wed, Apr 17, 2013 at 10:12:31AM -0400, Sean Nowlan wrote:
I want to see whether "very long" PDUs would break the new tagged
stream model implementation in recent GR versions. Let's say I want
to use tagged streams with length tags to transmit streams that
would require many more samples than a single call to work() could
handle. From diving into the source code, streamed tag blocks look
like they explicitly ask the scheduler for the exact number of
samples needed to process an entire PDU. So it looks like I'll get
into trouble here. I can see how this methodology is smart for many
packet-based protocols, but I basically want to control gated
streaming with precise timing control (using USRP). Many times I'll
need to stream for seconds or minutes, which implies multiple calls
to work() to generate samples.
Hi Sean,

thanks for trying the tagged stream blocks, they are still new and
probably have some unexposed bugs.

The actual derivation from gr_tagged_stream_block works on the paradigm
that the processing is done frame-wise. This has signal processing
advantages (e.g. if you're equalizing a frame with a 2D-equalizer, this
is how you'd like your data to be available), and it also does not
require the blocks to save state (i.e., where in the frame we are).

So yes, you're right: Massive PDUs will cause them to break.
However, this only a convenience. If you have special requirements, you
can always use gr_blocks as before. Then, you must save state, but you
don't have to wait for all the samples to be available before the block
is called in the first place (because that's what
gr_tagged_stream_block's are there for).
So are you then bounded by max_noutput_items inherited from top_block (or set explicitly)? I didn't see any bounds checking on length tags to prevent "massive" PDUs in gr_tagged_stream_block.

Also I see PDU length tags as solving another problem - letting intermediate blocks and sinks know how many items they will have to process in a row. As we've already discussed, packet-based flows are a good example. Another is the case I mentioned (though, yes, I can introduce a length tag to something that inherits gr_block). Another might be making a PPS signal with a large duty cycle, though there may be easier ways to do that. Finally, letting UHD know what to do with PDU length tags even when a burst is expected to be larger than one buffer passed one work() call.

I can see you're tracking this last one already. :c)
http://gnuradio.org/redmine/issues/530
As you also point out, they work well for packetized data transmission.
When I was working on the new OFDM blocks, I had packets in mind on the
same order as 802.11a packets, so buffer size was never a problem.

MB



_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio


reply via email to

[Prev in Thread] Current Thread [Next in Thread]