diff options
author | h.sandeep <h.sandeep@samsung.com> | 2016-09-16 14:45:24 +0530 |
---|---|---|
committer | Amit Purwar <amit.purwar@samsung.com> | 2019-06-28 10:40:11 +0530 |
commit | a2835b3330899dbcc8ef0b70c6d77f5d955a59fb (patch) | |
tree | 7e4d202ea966defedc5045ca74d1d2e5fa442c1f | |
parent | ae13651411e0b44f971d2bf64e951d3af44aab77 (diff) | |
download | linux-rpi3-a2835b3330899dbcc8ef0b70c6d77f5d955a59fb.tar.gz linux-rpi3-a2835b3330899dbcc8ef0b70c6d77f5d955a59fb.tar.bz2 linux-rpi3-a2835b3330899dbcc8ef0b70c6d77f5d955a59fb.zip |
Bluetooth: Fix IPSP connection callback event issue.
This patch fixes the IPSP connection callback event issue
between kernel and bluez layer.
Change-Id: Ia4d625aa8a6dbc9da89a7d9f12308af9c90d0594
Signed-off-by: h.sandeep <h.sandeep@samsung.com>
Signed-off-by: Sudha Bheemanna <b.sudha@samsung.com>
Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
-rw-r--r-- | net/bluetooth/l2cap_core.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 2c6eabf294b3..06453f5ad1c0 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -1259,8 +1259,23 @@ static void l2cap_chan_ready(struct l2cap_chan *chan) * case of receiving data before the L2CAP info req/rsp * procedure is complete. */ +#ifndef TIZEN_BT if (chan->state == BT_CONNECTED) return; +#else + if (chan->state == BT_CONNECTED) { + if (chan->psm == L2CAP_PSM_IPSP) { + struct l2cap_conn *conn = chan->conn; + + if (conn->hcon->out) + return; + else if (conn->hcon->type != LE_LINK) + return; + } else { + return; + } + } +#endif /* This clears all conf flags, including CONF_NOT_COMPLETE */ chan->conf_state = 0; @@ -6859,8 +6874,23 @@ static void l2cap_data_channel(struct l2cap_conn *conn, u16 cid, * procdure is done simply assume that the channel is supported * and mark it as ready. */ +#ifndef TIZEN_BT if (chan->chan_type == L2CAP_CHAN_FIXED) l2cap_chan_ready(chan); +#else + if (chan->chan_type == L2CAP_CHAN_FIXED) { + if (chan->psm == L2CAP_PSM_IPSP) { + struct l2cap_conn *conn = chan->conn; + + if (conn->hcon->out) + l2cap_chan_ready(chan); + else if (conn->hcon->type != LE_LINK) + l2cap_chan_ready(chan); + } else { + l2cap_chan_ready(chan); + } + } +#endif if (chan->state != BT_CONNECTED) goto drop; |