BT_CLOSED
case BT_CLOSED:
if (sk->sk_state == BT_CLOSED) {
if (sk->sk_state == BT_CLOSED)
conn->state = BT_CLOSED;
if (acl->state == BT_OPEN || acl->state == BT_CLOSED) {
(sco->state == BT_OPEN || sco->state == BT_CLOSED)) {
conn->state = BT_CLOSED;
conn->state = BT_CLOSED;
link->conn->state = BT_CLOSED;
link->conn->state = BT_CLOSED;
conn->state = BT_CLOSED;
conn->state = BT_CLOSED;
conn->state = BT_CLOSED;
conn->state = BT_CLOSED;
conn->state = BT_CLOSED;
conn->state = BT_CLOSED;
if (sk->sk_state == BT_CLOSED)
conn->state = BT_CLOSED;
err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
case BT_CLOSED:
sk->sk_state = BT_CLOSED;
parent->sk_state = BT_CLOSED;
err = bt_sock_wait_state(sk, BT_CLOSED,
case BT_CLOSED:
sk->sk_state = BT_CLOSED;
chan->state = BT_CLOSED;
sk->sk_state = BT_CLOSED;
chan->state = BT_CLOSED;
d->state = BT_CLOSED;
d->state = BT_CLOSED;
d->state = BT_CLOSED;
d->state = BT_CLOSED;
if (!skb_linearize(skb) && sk->sk_state != BT_CLOSED) {
if (s && (sk->sk_state == BT_CLOSED))
case BT_CLOSED:
if (d->state != BT_OPEN && d->state != BT_CLOSED)
d->state = BT_CLOSED;
s->state = BT_CLOSED;
d->state = BT_CLOSED;
parent->sk_state = BT_CLOSED;
if (d->state == BT_CLOSED) {
err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
sk->sk_state = BT_CLOSED;
} else if (dlc->state == BT_CLOSED)
err = bt_sock_wait_state(sk, BT_CLOSED,
err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
sk->sk_state = BT_CLOSED;
parent->sk_state = BT_CLOSED;