mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
Bluetooth: Change RFCOMM to use BT_CONNECT2 for BT_DEFER_SETUP
When BT_DEFER_SETUP is enabled on a RFCOMM socket, then switch its current state from BT_OPEN to BT_CONNECT2. This gives the Bluetooth core a unified way to handle L2CAP and RFCOMM sockets. The BT_CONNECT2 state is designated for incoming connections. Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
d5f2d2be68
commit
8bf4794174
@ -448,6 +448,7 @@ static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err)
|
||||
break;
|
||||
|
||||
case BT_OPEN:
|
||||
case BT_CONNECT2:
|
||||
if (test_and_clear_bit(RFCOMM_DEFER_SETUP, &d->flags)) {
|
||||
set_bit(RFCOMM_AUTH_REJECT, &d->flags);
|
||||
rfcomm_schedule(RFCOMM_SCHED_AUTH);
|
||||
@ -1208,6 +1209,11 @@ static void rfcomm_check_accept(struct rfcomm_dlc *d)
|
||||
if (d->defer_setup) {
|
||||
set_bit(RFCOMM_DEFER_SETUP, &d->flags);
|
||||
rfcomm_dlc_set_timer(d, RFCOMM_AUTH_TIMEOUT);
|
||||
|
||||
rfcomm_dlc_lock(d);
|
||||
d->state = BT_CONNECT2;
|
||||
d->state_change(d, 0);
|
||||
rfcomm_dlc_unlock(d);
|
||||
} else
|
||||
rfcomm_dlc_accept(d);
|
||||
} else {
|
||||
@ -1749,6 +1755,11 @@ static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
|
||||
if (d->defer_setup) {
|
||||
set_bit(RFCOMM_DEFER_SETUP, &d->flags);
|
||||
rfcomm_dlc_set_timer(d, RFCOMM_AUTH_TIMEOUT);
|
||||
|
||||
rfcomm_dlc_lock(d);
|
||||
d->state = BT_CONNECT2;
|
||||
d->state_change(d, 0);
|
||||
rfcomm_dlc_unlock(d);
|
||||
} else
|
||||
rfcomm_dlc_accept(d);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user