aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/ibmveth.h
diff options
context:
space:
mode:
authorSantiago Leon <santil@linux.vnet.ibm.com>2010-09-03 18:28:52 +0000
committerDavid S. Miller <davem@davemloft.net>2010-09-06 18:21:50 -0700
commitab78df75cac4d90b5b5471af795a64141243c02a (patch)
treed645048489a624d90687cb1d90747927150f3f80 /drivers/net/ibmveth.h
parentbc4c6f54e4e9971717d84c630acef0c7c3c75a97 (diff)
ibmveth: Enable IPv6 checksum offload
This patch enables TCP checksum offload support for IPv6 on ibmveth. This completely eliminates the generation and checking of the checksum for IPv6 packets that are completely virtual and never touch a physical network. A basic TCPIPV6_STREAM netperf run showed a ~30% throughput improvement when an MTU of 64000 was used. This featured is enabled by default, as is the case for IPv4 checksum offload. When checksum offload is enabled the driver will negotiate IPv4 and IPv6 offload with the firmware separately and enable what is available. As long as either IPv4 or IPv6 offload is supported and enabled the device will report that checksum offload is enabled. The device stats, available through ethtool, will display which checksum offload features are supported/enabled by firmware. Performance testing against a stock kernel shows no regression for IPv4 or IPv6 in terms of throughput or processor utilization with checksum disabled or enabled. Signed-off-by: Robert Jennings <rcj@linux.vnet.ibm.com> Signed-off-by: Santiago Leon <santil@linux.vnet.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ibmveth.h')
-rw-r--r--drivers/net/ibmveth.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/ibmveth.h b/drivers/net/ibmveth.h
index d5651c79e19..84e4ab22412 100644
--- a/drivers/net/ibmveth.h
+++ b/drivers/net/ibmveth.h
@@ -149,6 +149,8 @@ struct ibmveth_adapter {
void *bounce_buffer;
dma_addr_t bounce_buffer_dma;
+ u64 fw_ipv6_csum_support;
+ u64 fw_ipv4_csum_support;
/* adapter specific stats */
u64 replenish_task_cycles;
u64 replenish_no_mem;