mlx4: Support TSO/GSO/LSO
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 6 Jun 2017 17:01:42 +0000 (13:01 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 6 Jun 2017 17:01:42 +0000 (13:01 -0400)
commit6bac2c6699bebf017ed37c8662c75529babe8596
treef02fb58ff686bbaf0631935df30c4f329f44e89b
parent3471393cad6ca1e450f054ef0e6cb33d08d68c3f
mlx4: Support TSO/GSO/LSO

The changes were taken from the Linux transmit function.  I added back in
the 'linear' checks (meaning, is there data in the block main body),
ignored the 'inline' stuff, and turned on LSO (a.k.a. TSO/GSO).

Also, there was a bug with the xsum flags.  Bipck is never set by the
stack, so we weren't setting a flag that Linux always sets.  We do the IP
header xsum in software - it's just 20 bytes.  However, the Bipck flag is
used by drivers to tell the stack that the NIC did the IP header xsum.
That's just the way it works for Plan 9.  This all popped up because LSO'd
packets had incorrect header xsums.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/net/mlx4/en_netdev.c
kern/drivers/net/mlx4/en_tx.c