From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 871352BA3 for ; Wed, 25 Jan 2017 14:35:58 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from shahafs@mellanox.com) with ESMTPS (AES256-SHA encrypted); 25 Jan 2017 15:35:55 +0200 Received: from arch010.mtl.labs.mlnx (arch010.mtl.labs.mlnx [10.7.12.210]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id v0PDZtxP023728; Wed, 25 Jan 2017 15:35:55 +0200 Received: from arch010.mtl.labs.mlnx (localhost [127.0.0.1]) by arch010.mtl.labs.mlnx (8.14.7/8.14.7) with ESMTP id v0PDZt5Z048104; Wed, 25 Jan 2017 15:35:55 +0200 Received: (from root@localhost) by arch010.mtl.labs.mlnx (8.14.7/8.14.7/Submit) id v0PDZqDV048102; Wed, 25 Jan 2017 15:35:52 +0200 From: Shahaf Shuler To: stable@dpdk.org Cc: adrien.mazarguil@6wind.com Date: Wed, 25 Jan 2017 15:35:52 +0200 Message-Id: <1485351352-48066-1-git-send-email-shahafs@mellanox.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-stable] [PATCH] net/mlx5: fix multi segment packet send X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2017 13:35:58 -0000 [ backported from upstream commit 786b5c2dac785fe2fdbd303c236edc9491c00e5e ] Dseg pointer is not initialized when the first segment is inlined causing a segmentation fault in such situation. Fixes: 2a66cf378954 ("net/mlx5: support inline send") Signed-off-by: Shahaf Shuler Acked-by: Adrien Mazarguil --- Strangely i didn't had any conflicts when applying this patch on top of 16.11 stable branch. Please let me know if you have any. --- drivers/net/mlx5/mlx5_rxtx.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 9b59801..eda88b6 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -488,7 +488,7 @@ /* Store the inlined packet size in the WQE. */ wqe->eseg.inline_hdr_sz = htons(pkt_inline_sz); /* - * 2 DWORDs consumed by the WQE header + 1 DSEG + + * 2 DWORDs consumed by the WQE header + ETH segment + * the size of the inline part of the packet. */ ds = 2 + MLX5_WQE_DS(pkt_inline_sz - 2); @@ -503,6 +503,10 @@ } else if (!segs_n) { goto next_pkt; } else { + /* dseg will be advance as part of next_seg */ + dseg = (volatile rte_v128u32_t *) + ((uintptr_t)wqe + + ((ds - 1) * MLX5_WQE_DWORD_SIZE)); goto next_seg; } } else { -- 1.8.3.1