diff options
Diffstat (limited to 'net/bluetooth/l2cap_sock.c')
| -rw-r--r-- | net/bluetooth/l2cap_sock.c | 21 | 
1 files changed, 21 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 3f5946351fb..5563023001c 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c @@ -1014,6 +1014,26 @@ static struct sk_buff *l2cap_sock_alloc_skb_cb(struct l2cap_chan *chan,  	return skb;  } +static void l2cap_sock_ready_cb(struct l2cap_chan *chan) +{ +	struct sock *sk = chan->data; +	struct sock *parent; + +	lock_sock(sk); + +	parent = bt_sk(sk)->parent; + +	BT_DBG("sk %p, parent %p", sk, parent); + +	sk->sk_state = BT_CONNECTED; +	sk->sk_state_change(sk); + +	if (parent) +		parent->sk_data_ready(parent, 0); + +	release_sock(sk); +} +  static struct l2cap_ops l2cap_chan_ops = {  	.name		= "L2CAP Socket Interface",  	.new_connection	= l2cap_sock_new_connection_cb, @@ -1021,6 +1041,7 @@ static struct l2cap_ops l2cap_chan_ops = {  	.close		= l2cap_sock_close_cb,  	.teardown	= l2cap_sock_teardown_cb,  	.state_change	= l2cap_sock_state_change_cb, +	.ready		= l2cap_sock_ready_cb,  	.alloc_skb	= l2cap_sock_alloc_skb_cb,  };  |