Hmm… it seemed to run at line speed on our machines. I’m also not sure where you’re getting two calls for sha256 from? Like 1 to derive the key (which is sha256 on a very small amount of data) and the second is?
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.