Bluetooth: Fix regression with incoming L2CAP connections
authorGustavo F. Padovan <padovan@profusion.mobi>
Thu, 30 Jun 2011 19:11:30 +0000 (16:11 -0300)
committerGustavo F. Padovan <padovan@profusion.mobi>
Thu, 30 Jun 2011 19:17:57 +0000 (16:17 -0300)
PTS test A2DP/SRC/SRC_SET/TC_SRC_SET_BV_02_I revealed that
( probably after the df3c3931e commit ) the l2cap connection
could not be established in case when the "Auth Complete" HCI
event does not arive before the initiator send "Configuration
request", in which case l2cap replies with "Command rejected"
since the channel is still in BT_CONNECT2 state.

Based on patch from: Ilia Kolomisnky <iliak@ti.com>

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
net/bluetooth/l2cap_core.c

index 7d8a66b04f50c5d63a6a8a9b2ba0e9e74dd591ec..ebff14c690786ae8e4e0766dfd51cc7e16d3e2ce 100644 (file)
@@ -2323,7 +2323,8 @@ static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr
 
        sk = chan->sk;
 
-       if (sk->sk_state != BT_CONFIG) {
+       if ((bt_sk(sk)->defer_setup && sk->sk_state != BT_CONNECT2) ||
+                (!bt_sk(sk)->defer_setup && sk->sk_state != BT_CONFIG)) {
                struct l2cap_cmd_rej rej;
 
                rej.reason = cpu_to_le16(0x0002);