HWAES_BLOCK_LEN
memcpy(sc->sc_dma_bounce.dma_addr, in, HWAES_BLOCK_LEN);
0, HWAES_BLOCK_LEN, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
0, HWAES_BLOCK_LEN, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
memcpy(out, sc->sc_dma_bounce.dma_addr, HWAES_BLOCK_LEN);
hwaes_enc(enc, &in[n * HWAES_BLOCK_LEN],
&out[n * HWAES_BLOCK_LEN], AES_128_NROUNDS);
memcpy(sc->sc_dma_bounce.dma_addr, in, HWAES_BLOCK_LEN);
0, HWAES_BLOCK_LEN, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
0, HWAES_BLOCK_LEN, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
memcpy(out, sc->sc_dma_bounce.dma_addr, HWAES_BLOCK_LEN);
hwaes_dec(dec, &in[n * HWAES_BLOCK_LEN],
&out[n * HWAES_BLOCK_LEN], AES_128_NROUNDS);
KASSERT(nbytes % HWAES_BLOCK_LEN == 0);
const size_t blocks = MIN(nbytes / HWAES_BLOCK_LEN,
blocks * HWAES_BLOCK_LEN);
0, blocks * HWAES_BLOCK_LEN,
0, blocks * HWAES_BLOCK_LEN,
blocks * HWAES_BLOCK_LEN);
nbytes -= blocks * HWAES_BLOCK_LEN;
inp += blocks * HWAES_BLOCK_LEN;
outp += blocks * HWAES_BLOCK_LEN;
memcpy(iv, outp - HWAES_BLOCK_LEN, HWAES_BLOCK_LEN);
KASSERT(nbytes % HWAES_BLOCK_LEN == 0);
memcpy(iv, inp + nbytes - HWAES_BLOCK_LEN, HWAES_BLOCK_LEN);
const size_t blocks = MIN(nbytes / HWAES_BLOCK_LEN,
blocks * HWAES_BLOCK_LEN);
0, blocks * HWAES_BLOCK_LEN,
0, blocks * HWAES_BLOCK_LEN,
blocks * HWAES_BLOCK_LEN);
nbytes -= blocks * HWAES_BLOCK_LEN;
inp += blocks * HWAES_BLOCK_LEN;
outp += blocks * HWAES_BLOCK_LEN;
nbytes -= HWAES_BLOCK_LEN;
inp += HWAES_BLOCK_LEN;
outp += HWAES_BLOCK_LEN;
nbytes -= HWAES_BLOCK_LEN;
inp += HWAES_BLOCK_LEN;
outp += HWAES_BLOCK_LEN;
nbytes -= HWAES_BLOCK_LEN;
inp += HWAES_BLOCK_LEN;
nbytes -= HWAES_BLOCK_LEN;
inp += HWAES_BLOCK_LEN;
outp += HWAES_BLOCK_LEN;
nbytes -= HWAES_BLOCK_LEN;
inp += HWAES_BLOCK_LEN;
outp += HWAES_BLOCK_LEN;
#define HWAES_MAX_AES_LEN (HWAES_BLOCK_LEN * HWAES_MAX_BLOCKS)