Re: [Bluez-devel] forcing SCO connection patch

From: Marcel Holtmann
Date: Wed Feb 27 2008 - 04:57:41 EST


Hi Louis,

--- linux-2.6.23/net/bluetooth/hci_event.c.orig 2008-02-25
17:17:11.000000000 +0900
+++ linux-2.6.23/net/bluetooth/hci_event.c 2008-02-25
17:30:23.000000000 +0900
@@ -1313,8 +1313,17 @@
hci_dev_lock(hdev);

conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
- if (!conn)
- goto unlock;
+ if (!conn) {
+ if (ev->link_type != ACL_LINK) {
+ __u8 link_type = (ev->link_type == ESCO_LINK) ? SCO_LINK :
ESCO_LINK;
+
+ conn = hci_conn_hash_lookup_ba(hdev, link_type, &ev->bdaddr);
+ if (conn)
+ conn->type = ev->link_type;
+ }
+ if (!conn)
+ goto unlock;
+ }

NAK. There is no need to check for ACL_LINK. The sync_complete will
only be called for SCO or eSCO connections.
I see. I removed this check line in the patch.

Thanks.
Louis JANG
Signed-off-by: Louis JANG <louis@xxxxxxxx>
--- linux-2.6.23/net/bluetooth/hci_event.c.orig 2008-02-26
12:46:36.000000000 +0900
+++ linux-2.6.23/net/bluetooth/hci_event.c 2008-02-26
12:47:23.000000000 +0900
@@ -1313,8 +1313,15 @@
hci_dev_lock(hdev);

conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
- if (!conn)
- goto unlock;
+ if (!conn) {
+ __u8 link_type = (ev->link_type == ESCO_LINK) ? SCO_LINK : ESCO_LINK;
+
+ conn = hci_conn_hash_lookup_ba(hdev, link_type, &ev->bdaddr);
+ if (conn)
+ conn->type = ev->link_type;
+ else
+ goto unlock;
+ }

if (!ev->status) {
conn->handle = __le16_to_cpu(ev->handle);

do something like this:

if (!conn) {
....

conn = ....
if (!conn)
goto unlock;

conn->type = ev->link_type;
}

And include a description when submitting a patch.

Regards

Marcel
I changed code with this style and included patch description.
Thanks

Louis JANG
This patch is to handle different type of synchronous link is
estabilished with its request.

Signed-off-by: Louis JANG <louis@xxxxxxxx>
--- linux-2.6.23/net/bluetooth/hci_event.c.orig 2008-02-26 12:46:36.000000000 +0900
+++ linux-2.6.23/net/bluetooth/hci_event.c 2008-02-27 10:48:29.000000000 +0900
@@ -1313,8 +1313,15 @@
hci_dev_lock(hdev);

conn = hci_conn_hash_lookup_ba(hdev, ev->link_type, &ev->bdaddr);
- if (!conn)
- goto unlock;
+ if (!conn) {
+ __u8 link_type = (ev->link_type == ESCO_LINK) ? SCO_LINK : ESCO_LINK;
+
+ conn = hci_conn_hash_lookup_ba(hdev, link_type, &ev->bdaddr);
+ if (!conn)
+ goto unlock;
+
+ conn->type = ev->link_type;
+ }

if (!ev->status) {
conn->handle = __le16_to_cpu(ev->handle);

so the patch is fine, but the description of what this patch is doing, why it is doing it this way and what it fixes is fully missing. Please update it with a proper description.

Regards

Marcel

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/