Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 134732
b: refs/heads/master
c: 984947d
h: refs/heads/master
v: v3
  • Loading branch information
Marcel Holtmann committed Feb 27, 2009
1 parent d39418e commit 7f21aa1
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 657e17b03c80bec817975984d221bef716f83558
refs/heads/master: 984947dc64f82bc6cafa4d84ba1a139718f634a8
3 changes: 2 additions & 1 deletion trunk/include/net/bluetooth/l2cap.h
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,8 @@ struct l2cap_conn {
};

#define L2CAP_INFO_CL_MTU_REQ_SENT 0x01
#define L2CAP_INFO_FEAT_MASK_REQ_SENT 0x02
#define L2CAP_INFO_FEAT_MASK_REQ_SENT 0x04
#define L2CAP_INFO_FEAT_MASK_REQ_DONE 0x08

/* ----- L2CAP channel and socket info ----- */
#define l2cap_pi(sk) ((struct l2cap_pinfo *) sk)
Expand Down
17 changes: 14 additions & 3 deletions trunk/net/bluetooth/l2cap.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,9 @@ static void l2cap_do_start(struct sock *sk)
struct l2cap_conn *conn = l2cap_pi(sk)->conn;

if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) {
if (!(conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE))
return;

if (l2cap_check_security(sk)) {
struct l2cap_conn_req req;
req.scid = cpu_to_le16(l2cap_pi(sk)->scid);
Expand Down Expand Up @@ -455,6 +458,8 @@ static void l2cap_info_timeout(unsigned long arg)

conn->info_ident = 0;

conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;

l2cap_conn_start(conn);
}

Expand Down Expand Up @@ -1787,6 +1792,9 @@ static inline int l2cap_command_rej(struct l2cap_conn *conn, struct l2cap_cmd_hd
cmd->ident == conn->info_ident) {
conn->info_ident = 0;
del_timer(&conn->info_timer);

conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;

l2cap_conn_start(conn);
}

Expand Down Expand Up @@ -1857,7 +1865,7 @@ static inline int l2cap_connect_req(struct l2cap_conn *conn, struct l2cap_cmd_hd

l2cap_pi(sk)->ident = cmd->ident;

if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_SENT) {
if (conn->info_state & L2CAP_INFO_FEAT_MASK_REQ_DONE) {
if (l2cap_check_security(sk)) {
if (bt_sk(sk)->defer_setup) {
sk->sk_state = BT_CONNECT2;
Expand Down Expand Up @@ -2176,10 +2184,13 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm

del_timer(&conn->info_timer);

if (type == L2CAP_IT_FEAT_MASK)
if (type == L2CAP_IT_FEAT_MASK) {
conn->feat_mask = get_unaligned_le32(rsp->data);

l2cap_conn_start(conn);
conn->info_state |= L2CAP_INFO_FEAT_MASK_REQ_DONE;

l2cap_conn_start(conn);
}

return 0;
}
Expand Down

0 comments on commit 7f21aa1

Please sign in to comment.