aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-07-14 14:13:52 -0400
committerMarcel Holtmann <marcel@holtmann.org>2008-07-14 14:13:52 -0400
commit8b6b3da765af9600b5edd8e3e84a20523e975884 (patch)
tree16c1ccc6c02ea8fd89043e7ed1934a9cd1d9b6be
parentca37bdd53b5af06d00e792f2415b93206aa2a541 (diff)
[Bluetooth] Store remote modem status for RFCOMM TTY
When switching a RFCOMM socket to a TTY, the remote modem status might be needed later. Currently it is lost since the original configuration is done via the socket interface. So store the modem status and reply it when the socket has been converted to a TTY. Signed-off-by: Denis Kenzior <denis.kenzior@trolltech.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--include/net/bluetooth/rfcomm.h1
-rw-r--r--net/bluetooth/rfcomm/core.c4
-rw-r--r--net/bluetooth/rfcomm/tty.c3
3 files changed, 8 insertions, 0 deletions
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h
index 8c54ff37ad4f..4dc8d92a4638 100644
--- a/include/net/bluetooth/rfcomm.h
+++ b/include/net/bluetooth/rfcomm.h
@@ -180,6 +180,7 @@ struct rfcomm_dlc {
180 u8 addr; 180 u8 addr;
181 u8 priority; 181 u8 priority;
182 u8 v24_sig; 182 u8 v24_sig;
183 u8 remote_v24_sig;
183 u8 mscex; 184 u8 mscex;
184 u8 out; 185 u8 out;
185 186
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index e56bcfc35a49..fcd2cafe70c8 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -1463,8 +1463,12 @@ static int rfcomm_recv_msc(struct rfcomm_session *s, int cr, struct sk_buff *skb
1463 clear_bit(RFCOMM_TX_THROTTLED, &d->flags); 1463 clear_bit(RFCOMM_TX_THROTTLED, &d->flags);
1464 1464
1465 rfcomm_dlc_lock(d); 1465 rfcomm_dlc_lock(d);
1466
1467 d->remote_v24_sig = msc->v24_sig;
1468
1466 if (d->modem_status) 1469 if (d->modem_status)
1467 d->modem_status(d, msc->v24_sig); 1470 d->modem_status(d, msc->v24_sig);
1471
1468 rfcomm_dlc_unlock(d); 1472 rfcomm_dlc_unlock(d);
1469 1473
1470 rfcomm_send_msc(s, 0, dlci, msc->v24_sig); 1474 rfcomm_send_msc(s, 0, dlci, msc->v24_sig);
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 248802796e12..8fcca08cef8e 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -271,6 +271,9 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
271 271
272 dlc->owner = dev; 272 dlc->owner = dev;
273 dev->dlc = dlc; 273 dev->dlc = dlc;
274
275 rfcomm_dev_modem_status(dlc, dlc->remote_v24_sig);
276
274 rfcomm_dlc_unlock(dlc); 277 rfcomm_dlc_unlock(dlc);
275 278
276 /* It's safe to call __module_get() here because socket already 279 /* It's safe to call __module_get() here because socket already