[Bluetooth] Add RFCOMM role switch support
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 3 Jul 2006 08:37:55 +0000 (10:37 +0200)
committerDavid S. Miller <davem@sunset.davemloft.net>
Tue, 4 Jul 2006 02:54:09 +0000 (19:54 -0700)
This patch adds the support for RFCOMM role switching before the
connection is fully established.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/rfcomm/core.c

index fe18dc2dd3c110205380eec1bd859918e16c1835..155a2b93760e0ccf0fdcc5a74adbee4cc2255c2a 100644 (file)
@@ -1150,6 +1150,8 @@ static inline int rfcomm_check_link_mode(struct rfcomm_dlc *d)
 
 static void rfcomm_dlc_accept(struct rfcomm_dlc *d)
 {
+       struct sock *sk = d->session->sock->sk;
+
        BT_DBG("dlc %p", d);
 
        rfcomm_send_ua(d->session, d->dlci);
@@ -1159,6 +1161,9 @@ static void rfcomm_dlc_accept(struct rfcomm_dlc *d)
        d->state_change(d, 0);
        rfcomm_dlc_unlock(d);
 
+       if (d->link_mode & RFCOMM_LM_MASTER)
+               hci_conn_switch_role(l2cap_pi(sk)->conn->hcon, 0x00);
+
        rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig);
 }