|
@@ -100,6 +100,23 @@ static struct l2cap_chan *l2cap_get_chan_by_scid(struct l2cap_conn *conn,
|
|
|
return c;
|
|
|
}
|
|
|
|
|
|
+/* Find channel with given DCID.
|
|
|
+ * Returns locked channel.
|
|
|
+ */
|
|
|
+static struct l2cap_chan *l2cap_get_chan_by_dcid(struct l2cap_conn *conn,
|
|
|
+ u16 cid)
|
|
|
+{
|
|
|
+ struct l2cap_chan *c;
|
|
|
+
|
|
|
+ mutex_lock(&conn->chan_lock);
|
|
|
+ c = __l2cap_get_chan_by_dcid(conn, cid);
|
|
|
+ if (c)
|
|
|
+ l2cap_chan_lock(c);
|
|
|
+ mutex_unlock(&conn->chan_lock);
|
|
|
+
|
|
|
+ return c;
|
|
|
+}
|
|
|
+
|
|
|
static struct l2cap_chan *__l2cap_get_chan_by_ident(struct l2cap_conn *conn,
|
|
|
u8 ident)
|
|
|
{
|