HMAC requires two calls to the underlying hash function. In this case one is with a block-size input and the other is smaller (key size plus output of the first call). When called per-block this approach is much slower than any modern AEAD (which typically requires simple polynomial math on each block plus a single AES/ChaCha/whatever finalization call).
It might be “fast enough for line rate” in your situation but even then you could be saving CPU cycles for other work by using a more efficient construction.
It might be “fast enough for line rate” in your situation but even then you could be saving CPU cycles for other work by using a more efficient construction.