mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-30 07:37:49 +00:00
Bluetooth: Refactor dlc disconnect logic in rfcomm_dlc_close()
Prepare for directly closing dlc if the RFCOMM session has not yet been started; refactor the dlc disconnect logic into a separate local function, __rfcomm_dlc_disconn(). Retains functional equivalence. Signed-off-by: Peter Hurley <peter@hurleysoftware.com> Tested-By: Alexander Holler <holler@ahsoftware.de> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
5998e04063
commit
f622357a5e
@ -431,6 +431,20 @@ int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 chann
|
||||
return r;
|
||||
}
|
||||
|
||||
static void __rfcomm_dlc_disconn(struct rfcomm_dlc *d)
|
||||
{
|
||||
struct rfcomm_session *s = d->session;
|
||||
|
||||
d->state = BT_DISCONN;
|
||||
if (skb_queue_empty(&d->tx_queue)) {
|
||||
rfcomm_send_disc(s, d->dlci);
|
||||
rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT);
|
||||
} else {
|
||||
rfcomm_queue_disc(d);
|
||||
rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2);
|
||||
}
|
||||
}
|
||||
|
||||
static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
|
||||
{
|
||||
struct rfcomm_session *s = d->session;
|
||||
@ -458,14 +472,7 @@ static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
|
||||
/* Fall through */
|
||||
|
||||
case BT_CONNECTED:
|
||||
d->state = BT_DISCONN;
|
||||
if (skb_queue_empty(&d->tx_queue)) {
|
||||
rfcomm_send_disc(s, d->dlci);
|
||||
rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT);
|
||||
} else {
|
||||
rfcomm_queue_disc(d);
|
||||
rfcomm_dlc_set_timer(d, RFCOMM_DISC_TIMEOUT * 2);
|
||||
}
|
||||
__rfcomm_dlc_disconn(d);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user