From 4feec2f44ba9ba19c4a046311b3ee4757c1282e4 Mon Sep 17 00:00:00 2001 From: Didier Pallard Date: Mon, 22 Jun 2015 16:21:18 +0200 Subject: [PATCH] ixgbe: fix TSO in IPv6 When TSO is used with IPv6, generated frames are incorrect. L4 frame is OK, but length field of IPv6 header was not populated correctly. IXGBE_ADVTXD_TUCMD_IPV6 flag is set for better readability, even if it does nothing. Signed-off-by: Didier Pallard Signed-off-by: David Marchand Acked-by: Konstantin Ananyev Acked-by: Helin Zhang --- drivers/net/ixgbe/ixgbe_rxtx.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c index 7cc26efa17..3ace8a879a 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx.c +++ b/drivers/net/ixgbe/ixgbe_rxtx.c @@ -375,10 +375,15 @@ ixgbe_set_xmit_ctx(struct ixgbe_tx_queue *txq, /* check if TCP segmentation required for this packet */ if (ol_flags & PKT_TX_TCP_SEG) { - /* implies IP cksum and TCP cksum */ - type_tucmd_mlhl = IXGBE_ADVTXD_TUCMD_IPV4 | - IXGBE_ADVTXD_TUCMD_L4T_TCP | - IXGBE_ADVTXD_DTYP_CTXT | IXGBE_ADVTXD_DCMD_DEXT; + /* implies IP cksum in IPv4 */ + if (ol_flags & PKT_TX_IP_CKSUM) + type_tucmd_mlhl = IXGBE_ADVTXD_TUCMD_IPV4 | + IXGBE_ADVTXD_TUCMD_L4T_TCP | + IXGBE_ADVTXD_DTYP_CTXT | IXGBE_ADVTXD_DCMD_DEXT; + else + type_tucmd_mlhl = IXGBE_ADVTXD_TUCMD_IPV6 | + IXGBE_ADVTXD_TUCMD_L4T_TCP | + IXGBE_ADVTXD_DTYP_CTXT | IXGBE_ADVTXD_DCMD_DEXT; tx_offload_mask.l2_len |= ~0; tx_offload_mask.l3_len |= ~0; -- 2.20.1