mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
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