Bluetooth: A2MP: Handling fixed channels
A2MP fixed channel do not have sk Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
This commit is contained in:
		
							parent
							
								
									f6410a849b
								
							
						
					
					
						commit
						416fa7527d
					
				| @ -581,6 +581,7 @@ struct l2cap_conn { | ||||
| #define L2CAP_CHAN_RAW			1 | ||||
| #define L2CAP_CHAN_CONN_LESS		2 | ||||
| #define L2CAP_CHAN_CONN_ORIENTED	3 | ||||
| #define L2CAP_CHAN_CONN_FIX_A2MP	4 | ||||
| 
 | ||||
| /* ----- L2CAP socket info ----- */ | ||||
| #define l2cap_pi(sk) ((struct l2cap_pinfo *) sk) | ||||
|  | ||||
| @ -483,8 +483,7 @@ static struct l2cap_chan *a2mp_chan_open(struct l2cap_conn *conn) | ||||
| 
 | ||||
| 	hci_conn_hold(conn->hcon); | ||||
| 
 | ||||
| 	chan->omtu = L2CAP_A2MP_DEFAULT_MTU; | ||||
| 	chan->imtu = L2CAP_A2MP_DEFAULT_MTU; | ||||
| 	chan->chan_type = L2CAP_CHAN_CONN_FIX_A2MP; | ||||
| 	chan->flush_to = L2CAP_DEFAULT_FLUSH_TO; | ||||
| 
 | ||||
| 	chan->ops = &a2mp_chan_ops; | ||||
|  | ||||
| @ -465,6 +465,13 @@ static void __l2cap_chan_add(struct l2cap_conn *conn, struct l2cap_chan *chan) | ||||
| 		chan->omtu = L2CAP_DEFAULT_MTU; | ||||
| 		break; | ||||
| 
 | ||||
| 	case L2CAP_CHAN_CONN_FIX_A2MP: | ||||
| 		chan->scid = L2CAP_CID_A2MP; | ||||
| 		chan->dcid = L2CAP_CID_A2MP; | ||||
| 		chan->omtu = L2CAP_A2MP_DEFAULT_MTU; | ||||
| 		chan->imtu = L2CAP_A2MP_DEFAULT_MTU; | ||||
| 		break; | ||||
| 
 | ||||
| 	default: | ||||
| 		/* Raw socket can send/recv signalling messages only */ | ||||
| 		chan->scid = L2CAP_CID_SIGNALING; | ||||
| @ -1001,6 +1008,11 @@ static void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *c | ||||
| 		__clear_ack_timer(chan); | ||||
| 	} | ||||
| 
 | ||||
| 	if (chan->chan_type == L2CAP_CHAN_CONN_FIX_A2MP) { | ||||
| 		__l2cap_state_change(chan, BT_DISCONN); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	req.dcid = cpu_to_le16(chan->dcid); | ||||
| 	req.scid = cpu_to_le16(chan->scid); | ||||
| 	l2cap_send_cmd(conn, l2cap_get_ident(conn), | ||||
| @ -1195,6 +1207,11 @@ static void l2cap_conn_ready(struct l2cap_conn *conn) | ||||
| 
 | ||||
| 		l2cap_chan_lock(chan); | ||||
| 
 | ||||
| 		if (chan->chan_type == L2CAP_CHAN_CONN_FIX_A2MP) { | ||||
| 			l2cap_chan_unlock(chan); | ||||
| 			continue; | ||||
| 		} | ||||
| 
 | ||||
| 		if (conn->hcon->type == LE_LINK) { | ||||
| 			if (smp_conn_security(conn, chan->sec_level)) | ||||
| 				l2cap_chan_ready(chan); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user