|
From: Anders J. <and...@us...> - 2001-09-11 09:00:30
|
The following file was modified in linux/drivers/char/bluetooth:
Name Old version New version Comment
---- ----------- ----------- -------
l2cap.c 1.113 1.114=20=20=20=20=20=20=20=20=20=20=20
The accompanying log:
*=A0Added retransmission timer on l2ca_disconnect_req.
The diff of the modified file(s):
--- l2cap.c 2001/08/30 05:37:17 1.113
+++ l2cap.c 2001/09/11 09:00:28 1.114
@@ -1208,6 +1208,8 @@
return;
}
=20
+ con->c_status =3D conrsp->result;=09
+
#ifdef CONFIG_BLUETOOTH_L2CAP_USE_TIMERS
disable_rtx(con);
#endif
@@ -1712,22 +1714,23 @@
D_STATE(__FUNCTION__ ": remote cid : %d\n", con->remote_cid);
=20
if (con->current_state =3D=3D OPEN || con->current_state =3D=3D CONFIG) {
-
- result =3D l2cap_disconnect_req(con);
-
ENTERSTATE(con, W4_L2CAP_DISCONNECT_RSP);
PRINTSTATE(con);
+ do {
+ result =3D l2cap_disconnect_req(con);
+ l2ca_wait(__FUNCTION__, con);
+ PRINTSTATE(con);
+=09=09=09
+ } while (con->c_status =3D=3D CSTATUS_RTX_TIMEOUT);
} else {
D_ERR(__FUNCTION__ ": Invalid state!\n");
PRINTSTATE(con);
return -1;=20=20=20=20
}
=20=09
- /* wait here until we get a confirm */
- l2ca_wait(__FUNCTION__, con);
-
result =3D con->c_result;
=20
+ if(con->c_status !=3D CSTATUS_MAX_NO_RTX) {
if (con->current_state =3D=3D CLOSED) {=09
/* remove l2cap connection */
delete_con(con);
@@ -1735,6 +1738,8 @@
D_ERR("L2CAP Disconnect failed\n");
PRINTSTATE(con);
}
+ }
+=09
=20=09
/* fixme -- if we want to keep baseband connection we must=20
leave the l2cap connection which holds the hci handle=20
|