ISOTP_IDLE
err = wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE);
so->tx.state = ISOTP_IDLE;
so->tx.state = ISOTP_IDLE;
while (wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE) == 0 &&
cmpxchg(&so->tx.state, ISOTP_IDLE, ISOTP_SHUTDOWN) != ISOTP_IDLE)
so->rx.state = ISOTP_IDLE;
so->rx.state = ISOTP_IDLE;
so->tx.state = ISOTP_IDLE;
if ((mask & EPOLLWRNORM) && (so->tx.state != ISOTP_IDLE))
so->rx.state = ISOTP_IDLE;
so->tx.state = ISOTP_IDLE;
so->tx.state = ISOTP_IDLE;
so->rx.state = ISOTP_IDLE;
so->rx.state = ISOTP_IDLE;
so->rx.state = ISOTP_IDLE;
so->rx.state = ISOTP_IDLE;
if ((so->tx.state != ISOTP_IDLE && n_pci_type != N_PCI_FC) ||
(so->rx.state != ISOTP_IDLE && n_pci_type == N_PCI_FC))
so->tx.state = ISOTP_IDLE;
if (so->tx.state == ISOTP_IDLE || so->tx.state == ISOTP_SHUTDOWN)
so->tx.state = ISOTP_IDLE;
while (cmpxchg(&so->tx.state, ISOTP_IDLE, ISOTP_SENDING) != ISOTP_IDLE) {
err = wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE);