lkml.org 
[lkml]   [2008]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [Bluez-devel] forcing SCO connection patch
    Marcel Holtmann 쓴 글:
    >
    > 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.
    I added more information. please check it, and please let me know if
    there are any missings.

    Thanks
    Louis JANG

    >
    > Regards
    >
    > Marcel

    When bluez tried to connect SCO channel with HCI_OP_SETUP_SYNC_CONN(ESCO_LINK),
    a real connection may be connected with SCO_LINK instead of ESCO_LINK when
    peer device doesn't support eSCO. however bluez try to find connection handle
    by event's link type(SCO_LINK in above case) and the valid connection handle
    for this event is waiting for ESCO_LINK. so bluez can't find connection handle
    and discarded the event.

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

    If bluez can't find connection handle, it try to find with different
    link type again. (For the above case, if bluez can't find connection
    handle with SCO_LINK, it try to find connection handle with ESCO_LINK again.)
    and update link type of this connection handle with event's link type.

    Signed-off-by: Louis JANG <louis@mizi.com>
    --- 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);
    \
     
     \ /
      Last update: 2008-02-27 13:25    [W:0.024 / U:120.708 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site