From: Timo Teräs Date: Wed, 10 Aug 2005 03:28:21 +0000 (-0700) Subject: [Bluetooth]: Call tty_hangup() when DCD is de-asserted X-Git-Tag: v2.6.14-rc1~1035^2~128 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=7b9eb9e2099f6f4acd6a36bcd7820d27c3cf5ee3;p=~emulex%2Finfiniband.git [Bluetooth]: Call tty_hangup() when DCD is de-asserted The RFCOMM layer does not handle properly the de-assertation of CD signal. It should call tty_hangup() to work properly. Signed-off-by: Timo Teräs Signed-off-by: Marcel Holtmann Signed-off-by: David S. Miller --- diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index 6304590fd36..67d9dd6b0fa 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c @@ -528,9 +528,14 @@ static void rfcomm_dev_modem_status(struct rfcomm_dlc *dlc, u8 v24_sig) struct rfcomm_dev *dev = dlc->owner; if (!dev) return; - + BT_DBG("dlc %p dev %p v24_sig 0x%02x", dlc, dev, v24_sig); + if ((dev->modem_status & TIOCM_CD) && !(v24_sig & RFCOMM_V24_DV)) { + if (dev->tty && !C_CLOCAL(dev->tty)) + tty_hangup(dev->tty); + } + dev->modem_status = ((v24_sig & RFCOMM_V24_RTC) ? (TIOCM_DSR | TIOCM_DTR) : 0) | ((v24_sig & RFCOMM_V24_RTR) ? (TIOCM_RTS | TIOCM_CTS) : 0) |