Yup, context switches between kernelspace and userspace are very expensive in high-performance situations, which is why these types of offloads are used.

At specific workloads (think: load balancers / proxy servers / etc), these things become extremely expensive.