]> git.baikalelectronics.ru Git - kernel.git/commit
net: do not disable sg for packets requiring no checksum
authorEd Cashin <ecashin@coraid.com>
Wed, 19 Sep 2012 15:49:00 +0000 (15:49 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Sep 2012 02:23:40 +0000 (22:23 -0400)
commit8c33961d3b99c88e8b3dc9789a8d4b4cda318bba
tree986a381bb1175a89554b48ca08a9000370f719c7
parent08ab9c9109316e7d87ff7689b2bb36d0eacebe63
net: do not disable sg for packets requiring no checksum

A change in a series of VLAN-related changes appears to have
inadvertently disabled the use of the scatter gather feature of
network cards for transmission of non-IP ethernet protocols like ATA
over Ethernet (AoE).  Below is a reference to the commit that
introduces a "harmonize_features" function that turns off scatter
gather when the NIC does not support hardware checksumming for the
ethernet protocol of an sk buff.

  commit 491aa03f157c90b3f105b38368822acee101c22b
  Author: Jesse Gross <jesse@nicira.com>
  Date:   Sun Jan 9 06:23:31 2011 +0000

      net offloading: Generalize netif_get_vlan_features().

The can_checksum_protocol function is not equipped to consider a
protocol that does not require checksumming.  Calling it for a
protocol that requires no checksum is inappropriate.

The patch below has harmonize_features call can_checksum_protocol when
the protocol needs a checksum, so that the network layer is not forced
to perform unnecessary skb linearization on the transmission of AoE
packets.  Unnecessary linearization results in decreased performance
and increased memory pressure, as reported here:

  http://www.spinics.net/lists/linux-mm/msg15184.html

The problem has probably not been widely experienced yet, because
only recently has the kernel.org-distributed aoe driver acquired the
ability to use payloads of over a page in size, with the patchset
recently included in the mm tree:

  https://lkml.org/lkml/2012/8/28/140

The coraid.com-distributed aoe driver already could use payloads of
greater than a page in size, but its users generally do not use the
newest kernels.

Signed-off-by: Ed Cashin <ecashin@coraid.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c