> -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Zhe Tao > Sent: Wednesday, March 23, 2016 3:28 AM > To: dev at dpdk.org > Cc: Tao, Zhe; Wu, Jingjing > Subject: [dpdk-dev] [PATCH v2] i40e: fix ipv6 TSO issue for tx function > > Issue: > when using the following CLI in testpmd to enable ipv6 TSO feature > ============= > set verbose 1 > csum set ip hw 0 > csum set udp hw 0 > csum set tcp hw 0 > csum set sctp hw 0 > csum set outer-ip hw 0 > csum parse_tunnel on 0 > tso set 800 0 > set fwd csum > > start > ============= > > We will not get we want, the ipv6 packets sent out from IXIA can be received > by > i40e, but cannot forward to another port. > The root cause is when HW doing the TSO offload for packets, it not only > depends > on the context descriptor to define the MSS and TSO payload size, it also > need to know whether this packets is ipv4 or ipv6, ipv4 need the header csum, > but ipv6 doesn't need the csum. We need to use the i40e_txd_enable_checksum to > set the ipv6 type flag into the data descriptor when the packets are for > ipv6 TSO. > > Fixes: e3f0151f (i40e: enable Tx checksum only for offloaded packets) > > Signed-off-by: Zhe Tao <zhe.tao at intel.com> > --- > v2: change condition check for ipv6 TSO checksum offload > use a more clear check method which include both ipv4 & ipv6 TSO > > > drivers/net/i40e/i40e_rxtx.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c > index 1488f2f..3422ec2 100644 > --- a/drivers/net/i40e/i40e_rxtx.c > +++ b/drivers/net/i40e/i40e_rxtx.c > @@ -73,9 +73,16 @@ > > #define I40E_TXD_CMD (I40E_TX_DESC_CMD_EOP | I40E_TX_DESC_CMD_RS) > > +/* need to add the TSO flag to the checksum offload mask > + * even the packets like ipv6 doesn't need the checksum for ip header > + * but the FW need to know whether this TCP packets is ipv4 or ipv6, > + * so add this kind of information in the checksum offload field in the > + * normal data descriptor. > + */ > #define I40E_TX_CKSUM_OFFLOAD_MASK ( \ > PKT_TX_IP_CKSUM | \ > PKT_TX_L4_MASK | \ > + PKT_TX_TCP_SEG | \ > PKT_TX_OUTER_IP_CKSUM) > > static uint16_t i40e_xmit_pkts_simple(void *tx_queue, > --
Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com> > 2.1.4