From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?iso-8859-1?Q?N=E9lio?= Laranjeiro Subject: Re: [PATCH] net/mlx5: fix TSO segment size Date: Tue, 20 Jun 2017 09:13:33 +0200 Message-ID: <20170620071333.GT4949@autoinstall.dev.6wind.com> References: <20170620052447.31846-1-shahafs@mellanox.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Cc: adrien.mazarguil@6wind.com, dev@dpdk.org, stable@dpdk.org To: Shahaf Shuler Return-path: Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by dpdk.org (Postfix) with ESMTP id EC9332C72 for ; Tue, 20 Jun 2017 09:13:41 +0200 (CEST) Received: by mail-wm0-f45.google.com with SMTP id u195so11228831wmd.1 for ; Tue, 20 Jun 2017 00:13:41 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170620052447.31846-1-shahafs@mellanox.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Jun 20, 2017 at 08:24:47AM +0300, Shahaf Shuler wrote: > In case on multi segment packet, the TSO segment size > was taken from the last segment. This may lead to incorrect > values in case not all segments are initialized with the field. > > Fixing it by taking the value from the first segment. > > Fixes: 3f13f8c23a7c ("net/mlx5: support hardware TSO") > Cc: stable@dpdk.org > > Signed-off-by: Shahaf Shuler > Acked-by: Yongseok Koh > --- > drivers/net/mlx5/mlx5_rxtx.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index cade625f9..70314b393 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.c > +++ b/drivers/net/mlx5/mlx5_rxtx.c > @@ -527,6 +527,7 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) > uint16_t ehdr; > uint8_t cs_flags = 0; > uint64_t tso = 0; > + uint16_t tso_segsz = 0; > #ifdef MLX5_PMD_SOFT_COUNTERS > uint32_t total_length = 0; > #endif > @@ -622,6 +623,7 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) > > tso_header_sz = buf->l2_len + vlan_sz + > buf->l3_len + buf->l4_len; > + tso_segsz = buf->tso_segsz; > > if (is_tunneled && txq->tunnel_en) { > tso_header_sz += buf->outer_l2_len + > @@ -821,7 +823,7 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) > }; > wqe->eseg = (rte_v128u32_t){ > 0, > - cs_flags | (htons(buf->tso_segsz) << 16), > + cs_flags | (htons(tso_segsz) << 16), > 0, > (ehdr << 16) | htons(tso_header_sz), > }; > -- > 2.12.0 Acked-by: Nelio Laranjeiro -- Nélio Laranjeiro 6WIND