Forwarded on to Jim Leu to see what he thinks about it.
According to Jim Leu:
There was a bug in the tap device in earlier kernels. The result was that
every read from a tap device had an extra 2 bytes at the begining. With
the newer kernels I'm not sure if this still exists. I'll do some tests
and find out. Either way this patch is not the right way to fix it.