summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorh.sandeep <h.sandeep@samsung.com>2016-09-16 14:45:24 +0530
committerAmit Purwar <amit.purwar@samsung.com>2019-06-28 10:40:11 +0530
commita2835b3330899dbcc8ef0b70c6d77f5d955a59fb (patch)
tree7e4d202ea966defedc5045ca74d1d2e5fa442c1f
parentae13651411e0b44f971d2bf64e951d3af44aab77 (diff)
downloadlinux-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.c30
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;