<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/include/net/bluetooth, branch v2.6.35</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/include/net/bluetooth?h=v2.6.35</id>
<link rel='self' href='https://git.amat.us/linux/atom/include/net/bluetooth?h=v2.6.35'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2010-05-10T07:34:03Z</updated>
<entry>
<title>Bluetooth: Create per controller workqueue</title>
<updated>2010-05-10T07:34:03Z</updated>
<author>
<name>Marcel Holtmann</name>
<email>marcel@holtmann.org</email>
</author>
<published>2010-03-20T14:20:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f48fd9c8cd746fdb055a97249a209c77dca0f710'/>
<id>urn:sha1:f48fd9c8cd746fdb055a97249a209c77dca0f710</id>
<content type='text'>
Instead of having a global workqueue for all controllers, it makes
more sense to have a workqueue per controller.

Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Fix race condition on l2cap_ertm_send()</title>
<updated>2010-05-10T07:28:53Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:45Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dfc909befbfe967bd7f46ef33b6969c1b7f3cf42'/>
<id>urn:sha1:dfc909befbfe967bd7f46ef33b6969c1b7f3cf42</id>
<content type='text'>
l2cap_ertm_send() can be called both from user context and bottom half
context. The socket locks for that contexts are different, the user
context uses a mutex(which can sleep) and the second one uses a
spinlock_bh. That creates a race condition when we have interruptions on
both contexts at the same time.

The better way to solve this is to add a new spinlock to lock
l2cap_ertm_send() and the vars it access. The other solution was to defer
l2cap_ertm_send() with a workqueue, but we the sending process already
has one defer on the hci layer. It's not a good idea add another one.

The patch refactor the code to create l2cap_retransmit_frames(), then we
encapulate the lock of l2cap_ertm_send() for some call. It also changes
l2cap_retransmit_frame() to l2cap_retransmit_one_frame() to avoid
confusion

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Implement Local Busy Condition handling</title>
<updated>2010-05-10T07:28:53Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1890d36bb556a27684ad29654a9898ab9a5f57ee'/>
<id>urn:sha1:1890d36bb556a27684ad29654a9898ab9a5f57ee</id>
<content type='text'>
Supports Local Busy condition handling through a waitqueue that wake ups
each 200ms and try to push the packets to the upper layer. If it can
push all the queue then it leaves the Local Busy state.

The patch modifies the behaviour of l2cap_ertm_reassembly_sdu() to
support retry of the push operation.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Make hci_send_acl() void</title>
<updated>2010-05-10T07:28:52Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9a9c6a34416b3743c09c00f3d6708d9df3c21629'/>
<id>urn:sha1:9a9c6a34416b3743c09c00f3d6708d9df3c21629</id>
<content type='text'>
hci_send_acl can't fail, so we can make it void. This patch changes
that and all the funcions that use hci_send_acl().
That change exposed a bug on sending connectionless data. We were not
reporting the lenght send back to the user space.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Enable option to configure Max Transmission value via sockopt</title>
<updated>2010-05-10T07:28:50Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=68d7f0ce911e41e463c45911be031cdf6a096fe8'/>
<id>urn:sha1:68d7f0ce911e41e463c45911be031cdf6a096fe8</id>
<content type='text'>
With the sockopt extension we can set a per-channel MaxTx value.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Change acknowledgement to use the value of txWindow</title>
<updated>2010-05-10T07:28:50Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:41Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=803020c6fa63aa738cfda3329c9675b42023e9d2'/>
<id>urn:sha1:803020c6fa63aa738cfda3329c9675b42023e9d2</id>
<content type='text'>
Now that we can set the txWindow we need to change the acknowledgement
procedure to ack after each (pi-&gt;txWindow/6 + 1). The plus 1 is to avoid
the zero value.
It also renames pi-&gt;num_to_ack to a better name: pi-&gt;num_acked.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add sockopt configuration for txWindow on L2CAP</title>
<updated>2010-05-10T07:28:49Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=14b5aa71ec506f4e38ca6a1dc02ecd668ecfd902'/>
<id>urn:sha1:14b5aa71ec506f4e38ca6a1dc02ecd668ecfd902</id>
<content type='text'>
Now we can set/get Transmission Window size via sockopt.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Fix configuration of the MPS value</title>
<updated>2010-05-10T07:28:48Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1c7621596d11b9c3e19eb88a818758dee4901c95'/>
<id>urn:sha1:1c7621596d11b9c3e19eb88a818758dee4901c95</id>
<content type='text'>
We were accepting values bigger than we can accept. This was leading
ERTM to drop packets because of wrong FCS checks.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Add timer to Acknowledge I-frames</title>
<updated>2010-05-10T07:28:48Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:39Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c1b4f43be01c2a363be021485dd18cca33cfab8a'/>
<id>urn:sha1:c1b4f43be01c2a363be021485dd18cca33cfab8a</id>
<content type='text'>
We ack I-frames on each txWindow/5 I-frames received, but if the sender
stop to send I-frames and it's not a txWindow multiple we can leave some
frames unacked.
So I added a timer to ack I-frames on this case. The timer expires in
200ms.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
<entry>
<title>Bluetooth: Implement 'Send IorRRorRNR' event</title>
<updated>2010-05-10T07:28:46Z</updated>
<author>
<name>Gustavo F. Padovan</name>
<email>padovan@profusion.mobi</email>
</author>
<published>2010-05-01T19:15:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d5392c8f1e9faef089bb7cb66c3314da8bddd1fe'/>
<id>urn:sha1:d5392c8f1e9faef089bb7cb66c3314da8bddd1fe</id>
<content type='text'>
After receive a RR with P bit set ERTM shall use this funcion to choose
what type of frame to reply with F bit = 1.

Signed-off-by: Gustavo F. Padovan &lt;padovan@profusion.mobi&gt;
Reviewed-by: João Paulo Rechi Vita &lt;jprvita@profusion.mobi&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
</content>
</entry>
</feed>
