ccmp
memmove(mtod(m, u_int8_t *) + ccmp.ic_header, mtod(m, void *), hdrlen);
m_adj(m, ccmp.ic_header);
m_adj(m, -ccmp.ic_trailer);
KASSERT(ccmp.ic_header <= m->m_pkthdr.len - hdrlen);
data_len = m->m_pkthdr.len - (hdrlen + ccmp.ic_header);
aes_ccm_enc_mbuf(&aes_ccm, m, hdrlen + ccmp.ic_header, data_len, mic);
return m_append(m, ccmp.ic_trailer, mic);
KASSERT(ccmp.ic_header < m->m_pkthdr.len - hdrlen);
KASSERT(ccmp.ic_trailer < m->m_pkthdr.len - (hdrlen + ccmp.ic_header));
data_len = m->m_pkthdr.len - (hdrlen + ccmp.ic_header + ccmp.ic_trailer);
m_copydata(m, m->m_pkthdr.len - ccmp.ic_trailer, ccmp.ic_trailer, mic);
if (!aes_ccm_dec_mbuf(&aes_ccm, m, hdrlen + ccmp.ic_header, data_len,
ieee80211_crypto_register(&ccmp);