From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f48.google.com (mail-wm0-f48.google.com [74.125.82.48]) by dpdk.org (Postfix) with ESMTP id 7933BDE0 for ; Fri, 14 Apr 2017 08:51:48 +0200 (CEST) Received: by mail-wm0-f48.google.com with SMTP id t189so60360719wmt.1 for ; Thu, 13 Apr 2017 23:51:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=6+bpgvfRMOUGuygrAjx5I/d3YTp8YQ/Z31ZaG/PkRlE=; b=K2I0VhLKODFzInRscx0zgRSYLQoUVHGFrPLrOZJjI5H5AEbgWGvByMpadAm4v33j8I sSOJ0006EogkHe86uKqpxruMLD5gRm/hJZlpHUygbuotwIZXZCis5aV3GZ/5wiW9E5Nz Kk62LQ51Jw5tuCLE2wNxEEaiDotkAiKebkMBsY9UCZFCddMpJQHkclED900+uxdwqUse 1kIGtmwTSDXjKhdW2F6R8F+as0Iken7xkLNWt/Vs3gpndxejQ8OHs5I+chs4MroCg1km x+1mS8c5yaaAFJXOYbT1UijaOpJriykwVfgkdQcj7Mp1n4JwlUj5caY+1pRSJ1trkfkt 94rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=6+bpgvfRMOUGuygrAjx5I/d3YTp8YQ/Z31ZaG/PkRlE=; b=Hvt4uQ8d1LHsfsBG2u8sCS7B1euek0Gv0F6o34DveVwSbPfCaY6+6hNwY6jBIKjyRZ Yo3yQvhIiSxKt2JB3z4BnwzqlYGNpJ/jX/DMUnIUsoGNlhuxgYd/8fjarSh1e2nFRHlU svIkYjfHFOtUkabj4fVUeKBG4MlRhYxjwmqZTKGY45PapvG1hIjfb+qoYI2K0X1bAsor SAjwWjkHLzCz8iaNTMyCO5URRLfpw4jdg0VxR45CTBBH6rS+69uDmkDBjDrPgihhWi8z qSWAOBW3zQJO1wjJP9xkKMDWiznYPytFPElQP6BfqpmzniSVRQVLO4F0EzyYIQSYZig6 C7UA== X-Gm-Message-State: AN3rC/4j+j31H+bAjLaEMD8Ny93gTbWxrDuI+5H5WESf2pohoatniPhU KuhucptUgAqNdZ5F X-Received: by 10.28.34.130 with SMTP id i124mr6340578wmi.111.1492152708026; Thu, 13 Apr 2017 23:51:48 -0700 (PDT) Received: from autoinstall.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id a66sm1221660wrc.58.2017.04.13.23.51.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 13 Apr 2017 23:51:47 -0700 (PDT) Date: Fri, 14 Apr 2017 08:51:39 +0200 From: =?iso-8859-1?Q?N=E9lio?= Laranjeiro To: Yongseok Koh Cc: ferruh.yigit@intel.com, dev@dpdk.org, adrien.mazarguil@6wind.com Message-ID: <20170414065139.GD14075@autoinstall.dev.6wind.com> References: <20170413174651.27860-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20170413174651.27860-1-yskoh@mellanox.com> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] [PATCH] net/mlx5: change calculating inline room for Tx X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Apr 2017 06:51:48 -0000 Hi Yongseok, On Thu, Apr 13, 2017 at 10:46:51AM -0700, Yongseok Koh wrote: > Current implementation is error-prone if the max inline size > (txq->max_inilne) is decoupled from txq->inline_en and becomes zero. If it > becomes zero, HW can crash due to WQ overflow. By reading this log, it seems more to be a fix, no? > Signed-off-by: Yongseok Koh > Acked-by: Shahaf Shuler > --- > drivers/net/mlx5/mlx5_rxtx.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index 2e208bf96..6254228a9 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.c > +++ b/drivers/net/mlx5/mlx5_rxtx.c > @@ -499,6 +499,8 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) > unsigned int j = 0; > unsigned int k = 0; > unsigned int max; > + unsigned int max_inline = txq->max_inline; Cannot it be declared as const too? Seems it is only read in the whole Tx burst function, as it a chance to be update in the middle? > + const unsigned int inline_en = !!max_inline && txq->inline_en; > uint16_t max_wqe; > unsigned int comp; > volatile struct mlx5_wqe_v *wqe = NULL; > @@ -685,14 +687,14 @@ mlx5_tx_burst(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n) > } > } > /* Inline if enough room. */ > - if (txq->inline_en || tso) { > + if (inline_en || tso) { > uintptr_t end = (uintptr_t) > (((uintptr_t)txq->wqes) + > (1 << txq->wqe_n) * MLX5_WQE_SIZE); > - unsigned int max_inline = txq->max_inline * > - RTE_CACHE_LINE_SIZE - > - (pkt_inline_sz - 2); > - uintptr_t addr_end = (addr + max_inline) & > + unsigned int inline_room = max_inline * > + RTE_CACHE_LINE_SIZE - > + (pkt_inline_sz - 2); > + uintptr_t addr_end = (addr + inline_room) & > ~(RTE_CACHE_LINE_SIZE - 1); > unsigned int copy_b = (addr_end > addr) ? > RTE_MIN((addr_end - addr), length) : > -- > 2.11.0 Thanks, -- Nélio Laranjeiro 6WIND