OSDN Git Service

udp: enable UDP checksum offload for ESP
authorJacek Kalwas <jacek.kalwas@intel.com>
Thu, 12 Apr 2018 19:03:13 +0000 (12:03 -0700)
committerSteffen Klassert <steffen.klassert@secunet.com>
Wed, 18 Apr 2018 04:57:17 +0000 (06:57 +0200)
In case NIC has support for ESP TX CSUM offload skb->ip_summed is not
set to CHECKSUM_PARTIAL which results in checksum calculated by SW.

Fix enables ESP TX CSUM for UDP by extending condition with check for
NETIF_F_HW_ESP_TX_CSUM.

Signed-off-by: Jacek Kalwas <jacek.kalwas@intel.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/ipv4/ip_output.c

index 4c11b81..a2dfb5a 100644 (file)
@@ -907,7 +907,7 @@ static int __ip_append_data(struct sock *sk,
            length + fragheaderlen <= mtu &&
            rt->dst.dev->features & (NETIF_F_HW_CSUM | NETIF_F_IP_CSUM) &&
            !(flags & MSG_MORE) &&
-           !exthdrlen)
+           (!exthdrlen || (rt->dst.dev->features & NETIF_F_HW_ESP_TX_CSUM)))
                csummode = CHECKSUM_PARTIAL;
 
        cork->length += length;