clatd: Add support for handling GRO coalesced packets

With this change, we can notify network stack to disable checksum
validation for GRO packets as well as other packets which have
checksum validation completed earlier in a driver.

GRO packets have the ip_summed field set to CHECKSUM_PARTIAL while
checksum offloaded packets have the ip_summed field as
CHECKSUM_UNNECESSARY. Kernel copies this ip_summed field to the
status field in the tpacket filter. The information from the status
field is then passed as part of the TUN header to the TUN interface.

Any other packet will have the complete checksum validation done
in the network stack. Note that this only applies to packets which
are captured in packet sockets and passed onto the TUN interface.

MTU serves a dual purpose for CLAT. The segment size of the packet
ring is based on the MAXMTU apart from the interface MTU itself.

GRO coalesce happens on the receive path which is not affected by
the MTU (transmit). In other words, increasing the MAXMTU does not
affect if a GRO coalesced packet is delivered to CLAT.
It only affects the amount of data being read from the TPacket ring.

Introduce a new parameter MAXMRU which handles the increased MRU
to account for GRO packets. Increase the ring size to compensate
for the larger segments to maintain the same throughput as earlier.

CRs-Fixed: 2043781
Change-Id: I5f5ff05918f3d3e03bb18fe799ccb5770a85038a
7 files changed