and - if (espi->tx == 0 && espi->rx == 0) - espi->fifo_level = 0; since it's always created as 0 and is always reset to 0 by the end of a transfer and if you like /* is transfer finished? */ - if (espi->tx == t->len && espi->rx == t->len) { + if (espi->fifo_level == 0) { to save a couple of instructions M