<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gustavo F. Padovan &#187; streaming mode</title>
	<atom:link href="http://padovan.org/blog/tag/streaming-mode/feed/" rel="self" type="application/rss+xml" />
	<link>http://padovan.org/blog</link>
	<description>a hacking life</description>
	<lastBuildDate>Fri, 23 Jul 2010 22:30:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>ProFUSION on the kernel development statistics for 2.6.35</title>
		<link>http://padovan.org/blog/2010/07/profusion-on-the-kernel-development-statistics-for-2-6-35/</link>
		<comments>http://padovan.org/blog/2010/07/profusion-on-the-kernel-development-statistics-for-2-6-35/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 22:30:07 +0000</pubDate>
		<dc:creator>padovan</dc:creator>
				<category><![CDATA[bluez]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[profusion]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[enhanced retransmission mode]]></category>
		<category><![CDATA[l2cap]]></category>
		<category><![CDATA[streaming mode]]></category>

		<guid isPermaLink="false">http://padovan.org/blog/?p=187</guid>
		<description><![CDATA[A recent article from lwn.net shows ProFUSION in the most active employers for networking stuff in the 2.6.35 release cycle.  That was due to the work we did in the Bluetooth stack implementing the L2CAP Extended Features (see older post in this blog to learn about L2CAP Extended Features).  Nice!]]></description>
			<content:encoded><![CDATA[<p>A recent <a href="http://lwn.net/Articles/395458/" target="_blank">article</a> from <a href="http://lwn.net">lwn.net</a> shows ProFUSION in the most active employers for networking stuff in the 2.6.35 release cycle.  That was due to the work we did in the Bluetooth stack implementing the L2CAP Extended Features (see older post in this blog to learn about L2CAP Extended Features).  Nice!</p>
]]></content:encoded>
			<wfw:commentRss>http://padovan.org/blog/2010/07/profusion-on-the-kernel-development-statistics-for-2-6-35/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>L2CAP Enhanced Retransmission Mode getting stable</title>
		<link>http://padovan.org/blog/2010/07/l2cap-enhanced-retransmission-mode-getting-stable/</link>
		<comments>http://padovan.org/blog/2010/07/l2cap-enhanced-retransmission-mode-getting-stable/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 23:47:26 +0000</pubDate>
		<dc:creator>padovan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bluez]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[profusion]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[streaming mode]]></category>

		<guid isPermaLink="false">http://padovan.org/blog/?p=183</guid>
		<description><![CDATA[After more than 4 months working daily at ERTM, here at ProFUSION, we have now a functional and much more stable implementation. Several potential crashes have been fixed, and missing features were added. Also the code was checked against the Profile Tuning Suite(PTS) test software. That software is the official test software from Bluetooth SIG [...]]]></description>
			<content:encoded><![CDATA[<p>After more than 4 months working daily at ERTM, here at ProFUSION, we have now a functional and much more stable implementation. Several potential crashes have been fixed, and missing features were added. Also the code was checked against the Profile Tuning Suite(PTS) test software. That software is the official test software from Bluetooth SIG to qualify Bluetooth stacks and the result is that right now we are also passing all PTS tests.</p>
<p>On the bug fixes front, beside the kernel crash fixes, a lot of ERTM behavior bugs have been found and fixed. Some of them made ERTM flow crazy, but we have been able to discover and fix them all. Obviously there might be other bugs in the code, but I haven&#8217;t found them yet. ;)</p>
<p>New code added: All missing events and actions from the ERTM spec were implemented, they should be working properly now. Among them we have the Local Busy handling, Invalid Frame detection, etc.</p>
<p>The PTS software helped a lot with the ERTM development, I&#8217;m sure that we are much more compatible with others stacks now after fixing L2CAP to pass all tests for Enhanced Retransmission Mode, Streaming Mode and FCS.</p>
<p>Now I&#8217;m aiming at make the code base even more stable looking on the mainlining of this new part of the L2CAP code inside the Linux stack.  All the code should be available and enabled by default on the 2.6.36 release. If you wanna help testing use the for-next branch of my git tree:</p>
<blockquote><p><a href="http://git.kernel.org/?p=linux/kernel/git/padovan/bluetooth-testing.git" target="_blank">http://git.kernel.org/?p=linux/kernel/git/padovan/bluetooth-testing.git</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://padovan.org/blog/2010/07/l2cap-enhanced-retransmission-mode-getting-stable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Now git tree hosted at kernel.org</title>
		<link>http://padovan.org/blog/2010/05/now-git-tree-hosted-at-kernel-org/</link>
		<comments>http://padovan.org/blog/2010/05/now-git-tree-hosted-at-kernel-org/#comments</comments>
		<pubDate>Sat, 22 May 2010 20:18:19 +0000</pubDate>
		<dc:creator>padovan</dc:creator>
				<category><![CDATA[bluez]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[profusion]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[enhanced retransmission mode]]></category>
		<category><![CDATA[streaming mode]]></category>

		<guid isPermaLink="false">http://padovan.org/blog/?p=176</guid>
		<description><![CDATA[Some days ago I requested  a account to the kernel.org admins, today I finished to setup my kernel git tree there.  If you were following my git tree at git.profusion.mobi please change your remote to the kernel.org one. git clone git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-testing.git You can also browse on the gitweb view here. =)]]></description>
			<content:encoded><![CDATA[<p>Some days ago I requested  a account to the kernel.org admins, today I finished to setup my kernel git tree there.  If you were following my git tree at git.profusion.mobi please change your remote to the kernel.org one.</p>
<blockquote><p>git clone git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-testing.git</p></blockquote>
<p>You can also browse on the gitweb view <a href="http://git.kernel.org/?p=linux/kernel/git/padovan/bluetooth-testing.git" target="_blank">here</a>. =)</p>
]]></content:encoded>
			<wfw:commentRss>http://padovan.org/blog/2010/05/now-git-tree-hosted-at-kernel-org/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L2CAP Extended Features</title>
		<link>http://padovan.org/blog/2010/04/l2cap-extended-features/</link>
		<comments>http://padovan.org/blog/2010/04/l2cap-extended-features/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 02:20:31 +0000</pubDate>
		<dc:creator>padovan</dc:creator>
				<category><![CDATA[bluez]]></category>
		<category><![CDATA[profusion]]></category>
		<category><![CDATA[enhanced retransmission mode]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[l2cap]]></category>
		<category><![CDATA[streaming mode]]></category>

		<guid isPermaLink="false">http://padovan.org/blog/?p=157</guid>
		<description><![CDATA[Here at ProFUSION I&#8217;m working to finish the L2CAP Extended Features introduced in the Core Specification Addendum 1 of the Bluetooth Specification. As you can see in older posts in this blog I have started that implementation by myself during the last year&#8217;s Google Summer of Code. The project was too big and I wasn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Here at <a href="http://profusion.mobi" target="_blank">ProFUSION</a> I&#8217;m working to finish the L2CAP Extended Features introduced in the Core Specification Addendum 1 of the <a href="http://www.bluetooth.com/English/Technology/Building/Pages/Specifcation.aspx" target="_blank">Bluetooth Specification</a>. As you can see in older posts in this blog I have started that implementation by myself during the last year&#8217;s Google Summer of Code. The project was too big and I wasn&#8217;t able to finish it in 3 months.</p>
<p>The L2CAP Extended Features comprehends the Enhanced Retransmission Mode (ERTM), Streaming Mode, Segmentation and Reassembly, and Frame Check Sequence(FCS).</p>
<p>During the last month I worked to complete the ERTM state machine. All the events and its respective actions were coded. Unfortunately that doesn&#8217;t mean that it has no bugs.  Now it is time to run a lots of tests on the code to check  if it is working as specified and fix all the issues we found.</p>
<p>If you want to help testing just clone my git tree and enable the Kconfig option for the L2CAP Extended Features and if you have any suggestion, bug report or patch don&#8217;t hesitate in contact me. :)</p>
<p>The git tree is hosted <a href="http://git.kernel.org/?p=linux/kernel/git/padovan/bluetooth-testing.git" target="_blank">here</a> and you can clone it directly with this line:</p>
<blockquote><p>git clone git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-testing.git</p></blockquote>
<p>I expect that soon this work will be merged into the bluetooth-testing tree and then it will be available on the 2.6.35 kernel as an experimental work.</p>
<p>UPDATE:  changed the git tree url.</p>
]]></content:encoded>
			<wfw:commentRss>http://padovan.org/blog/2010/04/l2cap-extended-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BlueZ: status update into the L2CAP layer</title>
		<link>http://padovan.org/blog/2009/08/bluez-status-update-into-the-l2cap-layer/</link>
		<comments>http://padovan.org/blog/2009/08/bluez-status-update-into-the-l2cap-layer/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 17:11:35 +0000</pubDate>
		<dc:creator>padovan</dc:creator>
				<category><![CDATA[free software]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[bluez]]></category>
		<category><![CDATA[crc16]]></category>
		<category><![CDATA[en]]></category>
		<category><![CDATA[enhanced retransmission mode]]></category>
		<category><![CDATA[gpsl]]></category>
		<category><![CDATA[l2cap]]></category>
		<category><![CDATA[streaming mode]]></category>

		<guid isPermaLink="false">http://padovan.org/blog/?p=88</guid>
		<description><![CDATA[Since the last post here (it was a long time ago :-) too much work was done, but ERTM isn&#8217;t fully implemented yet. So, what did I do last month? I&#8217;ll explain each of the features I implemented on the next paragraphs, but if this are boring for you just take a look at the [...]]]></description>
			<content:encoded><![CDATA[<p>Since the last post here (it was a long time ago :-) too much work was done, but ERTM isn&#8217;t fully implemented yet. So, what did I do last month?<br />
I&#8217;ll explain each of the features I implemented on the next paragraphs, but if this are boring for you just take a look at the roadmap at the end of this post.</p>
<p>First I did the support to send and receive I-frames (the data frames) and created the support to RR S-frames to acknowledge the received I-frames. It first worked with a txWindow=1 (which means only one packet can be send without receive acknowledge from the receiver side). The next step was support a txWindow up to 63 (the maximum value specified). To bring this support I have been using sk_buff lists from the net core implementation.</p>
<p>Support for Segmentation and Reassembly(SAR) of L2CAP SDUs: this feature allows upper applications to use a buffer greater than the L2CAP size packet. The buffer is break down in many packet on the transmitter side and then reassembled on the receiver side and pushed to the upper layer.</p>
<p>REJ frame exception: When a packet is lost we need to start the recoveries procedures. BlueZ won&#8217;t support raise of REJ exception (we support only raise of SREJ exception by now, spec says that we can choose one of them). But we need to support the receipt of a REJ-exception (i.e. receive a REJ frame). On the receipt of a REJ frame the L2CAP entity needs to stop the transmission and starts to retransmit the requested packets.  A REJ frame tells the ReqSeq(packet id sequence) and all packets up to ReqSeq &#8211; 1 shall be considered acknowledged, the others shall be retransmitted.</p>
<p>SREJ frame exception: BlueZ starts a SREJ exception when it detects lost packets. It sets its state to SREJ_SENT(It means that L2CAP entity is under recovery proccess) and sends a SREJ S-frame for each lost packets. The transmitter side shall resend the packets requested in the SREJ frames without stops transmission of new frames. SREJ exception saves retransmission of unneeded frames.</p>
<p>Retransmission And Monitor Timers: The Retransmission Timer shall be (re)started each time we send a I-frame. If it expires we send a RR-frame and start the Monitor Timer. The other side should response the RR frame immediately, if the the other side do not response and the Monitor Timer expires we resend the RR frame. A maximum value for the of Monitor Timer&#8217;s timeouts can be defined. If a L2CAP entity exceeds this value the channel shall be disconnected.</p>
<p>Busy condition on the remote side: If the remote side enters in a busy condition it will send a RNR frame. So, when the local side receives this frame it should mark the remote busy flag as true and stop the transmission of packets. It restarts the sending of packets only when the remote sides send a REJ, SREJ or RR frame. This says the remote busy condition was cleared.</p>
<p>Streaming mode: This mode of operation is useful to the Bluetooth Streaming Profiles such as A2DP and VDP(not yet implemented). It can take advantages of the Segmentation and Reassembly features.</p>
<p>FCS Option: It is a crc16 check for L2CAP packets. It is the default if both sides support it. If a L2CAP entity receives a packet with a broken crc16 it will drop. The receive procedure will miss it and start the recovery procedure.</p>
<p>Roadmap updated:</p>
<ol>
<li><del datetime="2009-08-29T05:11:58+00:00">Implement ERTM with txWindow=1 and retransmission disabled</del>.
<ol type="i">
<li><del datetime="2009-08-29T05:11:58+00:00">send I-frames</del></li>
<li><del datetime="2009-08-29T05:11:58+00:00">receive I-frames</del></li>
<li><del datetime="2009-08-29T05:11:58+00:00">support RR S-frames to acknowledge I-frames received</del></li>
<li><del datetime="2009-08-29T05:11:58+00:00">acknowledge I-frames</del></li>
</ol>
</li>
<li><del datetime="2009-08-29T05:11:58+00:00">Support txWindow up to 63</del></li>
<li><del datetime="2009-08-29T05:14:58+00:00">Support segmentation and reassembly of L2CAP SDUs</del></li>
<li><del datetime="2009-08-29T20:49:20+00:00">Enable retransmission</del>
<ol type="i">
<li><del datetime="2009-08-29T05:11:58+00:00">support receipt REJ S-Frame</del></li>
<li><del datetime="2009-08-29T05:11:58+00:00">support receipt SREJ S-Frame</del></li>
<li><del datetime="2009-08-29T05:11:58+00:00">support raise of SREJ exception</del></li>
</ol>
</li>
<li> Support busy conditions exceptions</li>
<li><del datetime="2009-08-29T05:11:58+00:00">Enable Retransmission Timer</del></li>
<li><del datetime="2009-08-29T05:11:58+00:00">Enable Monitor Timer</del></li>
<li><del datetime="2009-08-29T05:14:58+00:00">Implement Streaming Mode</del></li>
<li><del datetime="2009-08-29T05:14:58+00:00">Implement FCS Option</del></li>
<li>Support duplex channel</li>
<li>Use SOCK_STREAM as default for Enhanced Retransmission and Streaming Modes.</li>
<li>Test BlueZ against others stacks</li>
</ol>
<h3> What&#8217;s next?</h3>
<p>Now I&#8217;m working the busy condition exception and the support for the ERTM duplex channel. Today, just one side can send data packets. Then I&#8217;ll put ERTM as default when SOCK_STREAM is selected. I expect finish these issues on the coming weeks. After, I&#8217;ll spend my time fixing the bugs I find trough the code.</p>
<p>ps: Sorry for my too not bad English ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://padovan.org/blog/2009/08/bluez-status-update-into-the-l2cap-layer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
