#include <linux/slab.h>
 
 #include <crypto/aes.h>
+#include <crypto/gcm.h>
 #include <crypto/internal/aead.h>
 #include <crypto/internal/hash.h>
 #include <crypto/internal/skcipher.h>
 
        memcpy(req_ctx->hw_ctx.J0, areq->iv, crypto_aead_ivsize(cipher));
        // The HW omits the initial increment of the counter field.
-       crypto_inc(req_ctx->hw_ctx.J0+12, 4);
+       memcpy(req_ctx->hw_ctx.J0 + GCM_AES_IV_SIZE, "\x00\x00\x00\x01", 4);
 
        ret = artpec6_crypto_setup_out_descr(common, &req_ctx->hw_ctx,
                sizeof(struct artpec6_crypto_aead_hw_ctx), false, false);
                .setkey = artpec6_crypto_aead_set_key,
                .encrypt = artpec6_crypto_aead_encrypt,
                .decrypt = artpec6_crypto_aead_decrypt,
-               .ivsize = AES_BLOCK_SIZE,
+               .ivsize = GCM_AES_IV_SIZE,
                .maxauthsize = AES_BLOCK_SIZE,
 
                .base = {