From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20047.outbound.protection.outlook.com [40.107.2.47]) by dpdk.org (Postfix) with ESMTP id B51C41C01 for ; Fri, 27 Jul 2018 04:11:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=57uXaVZa/9i6398hXzSZ2vgyt9NjG5AA603Bh19tDkk=; b=jJV0ZYlKBPheimpQN+kdl2aPqsp1+Iys2Dtb0KF6lIoSdKFhP06qvCTcI5iIzWNuI8msUUMyX5rT6Q8kPB6whNmPvX9rJRCLfdAScspMA7OxIthYO8yErQtiz0bdgero8+CdXs/+kbQjIGAOZFvDx/UpikJz4ZZ6is0SZHk0OQI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by HE1PR0501MB2041.eurprd05.prod.outlook.com (2603:10a6:3:35::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.973.21; Fri, 27 Jul 2018 02:11:26 +0000 From: Yongseok Koh To: Yongseok Koh Cc: Shahaf Shuler , dpdk stable Date: Thu, 26 Jul 2018 19:09:25 -0700 Message-Id: <20180727021019.37388-29-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180727021019.37388-1-yskoh@mellanox.com> References: <20180727021019.37388-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: DM6PR08CA0022.namprd08.prod.outlook.com (2603:10b6:5:80::35) To HE1PR0501MB2041.eurprd05.prod.outlook.com (2603:10a6:3:35::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 35939490-55a4-4b6d-69ed-08d5f36642d7 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:HE1PR0501MB2041; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2041; 3:+ZYYK07OgPeCWR2z/klRNDkZ7ei3jhYdw53AP7NSudvV0dV3lSEyY3Op2aE1HYt9Dy1jb97y1XR56twgVfRaKu0JRxxphVzCCAnDbTpUXckBlCI4LLEFh8V9Yxwv8Ghxo8CfRmStJEgsjHVdxU5orzMc/SzrllBWPIcLTlQ3NX/ikbdGDS0IrT5MSfPg8A/A+VaPCTS26JYSq6RcKHxPlvfOQ8PlWgP/QOVAE+wuwAZO7eZqkJfntqug+QRv9hmp; 25:wUaEiU1V/KnzSprzgBgb6pA4Z6fTYMebloqyvntQpu+QoOQDlxCczobg6cVDh/OwPqzqog1csw7sQ3dy13DmODc1xglcAsgI4KqkvfkwuClI+CIT2LROZ3KVnOvFiWUZ6KOkK6c5Yto6B3tdwyG99OtAWpj32LMr55BHNLDT113SKYo550IyPLj9zjRkSmnQ3cyw9f7+zcuiolobh1yA11rgp6f+H6peh4UKkWCCiDXu0Km5CMEmuZCjM2PN44HpBtdi0YCqKYfP9ciRyyZp2W/qwU/FDMk6DcRrD17VTmeiAdRlizitOrr6mvKQ3a7Y3PoTPOsKJTuacP3qtCrqyQ==; 31:wCgn+BNaj0h4zvL3HOvMYi6r35jGsEHHdNnX3SM2JoIiCU7KWW9qiWcPfnJv2j//jfEjK4bQV28bwYmazELARbY6i56vut8qbn9fKdisOYlfsHjjYWYZGGOIIx2PRmTnZd4djqiOGz43AuEFYpTyVzisNgwtKdHDkCmjNs8/23hhh51mffzLklUlqleS3mmNulBxDPLJy1W4cv81dm9i/Y8LjEguzrGSv+ZLAaOwCWY= X-MS-TrafficTypeDiagnostic: HE1PR0501MB2041: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2041; 20:zVf7nRBWz5ccYp31srqiWS9B4AlAWhzk51vA4dyDCGcC9ozg5RZZ2cBt6+SiyGo7ox4MDrLrnqdRBoX0uiWmAtLNGiJdrZZ5qvCAp2Xyq9Q4guRgcl4XWehUdUdgXkwdqF0TfDBpQgYl6mCzMKgrtlIv0Ufll3pu4u88onbKv13w0+29kG3gELil1fAM0Nx/NtopwNiRkMm81azi4JnmDBOiLs/6jxY3OrknTY75pUeFP77TGL718LobMs8bchjIEG8BKk9CgDJJupHTuMrxWI9KeWy7ASXs+YqPy20lKck0lGR1WoCEmVwNqmnHx/CjzQspSBJ62WYRLWotdLOSv7fPrLU6+VNeS9i6keWKZox5kZ6GbyECN50Vag3tDebuA1vHJlX4M+C7/zC47J/z9UJVmk1xrf8F79AZ8pQNj2teWPv9wEFsuDr0CbWqFs4aXUNfQKl6XSvtr4tGLb6MfKM7mgh0ci+TUl8HJZsnq4SgF6EWryUzszLwAAKE1tiq; 4:zUOudZLa9ufoNrcuBASzxk7FBOgmVbiH/czxnyJIiMKy3QqDDWsB9EwnjusQ7+UUjd6hMlAx6qAahTuJHLm+/2Yst7I3K3tgdvBtTEb2p685tozk5EO48EiFYRQQr03hokZJ8PRxPMtV88E56GhE25Um/lv8Cw1W3k6hlTtW71baQbKea675W3haaMfGsLM5jwDmXrgWuiLm+D7YX+qJzwDLcz9pfhc44Pvg8IAxZmh4iLnA0YpzyiZ7IbQWy4EN99q6AZsVM0wt+YohpF/PSA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231311)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123558120)(6072148)(201708071742011)(7699016); SRVR:HE1PR0501MB2041; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0501MB2041; X-Forefront-PRVS: 07467C4D33 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(376002)(396003)(346002)(69234005)(28163001)(189003)(199004)(6306002)(6862004)(55016002)(53376002)(36756003)(4326008)(76176011)(2906002)(105586002)(26005)(2616005)(25786009)(956004)(486006)(21086003)(386003)(966005)(106356001)(51416003)(7736002)(86362001)(53546011)(575784001)(6200100001)(50466002)(16526019)(48376002)(1076002)(52116002)(8936002)(54906003)(37006003)(5660300001)(11346002)(3846002)(7049001)(16586007)(446003)(66066001)(81166006)(68736007)(316002)(69596002)(7696005)(6116002)(97736004)(53936002)(476003)(81156014)(50226002)(47776003)(1720100001)(8676002)(305945005)(478600001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0501MB2041; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0501MB2041; 23:JM9Nng+t3rMubYYDVaI62a2Tx7KckdjS4cWQl3X?= =?us-ascii?Q?XpKxCwZpXPbKC8dH/eoks08PlGtWcb1pnjKk9Ir9W46byuB3/Ht3eJmgPNYM?= =?us-ascii?Q?hBmOTX0sKnValm3L2B6jvmyHHUGom+eYrUBRSgSM0/BfDukQmb4UyFkwjz4Q?= =?us-ascii?Q?6rKq3pPgjopKyakl0J69WHDUraI9WQXXB45WIgLLQAQ+Tna2UapW+ktipMvo?= =?us-ascii?Q?CXuGah25CPY+FnrXpWUovg/CUDiuJGfjv7sVgcFFi930gD5aB4YDuR4O5vBY?= =?us-ascii?Q?wwgBnJR4hq3iYG8cyJzrdD8liKZKHqXa8W7P7DKAb8sA6kYIWQuTN39zfKZK?= =?us-ascii?Q?bZiPXVAIPpzJW6ahKHhDFiBkVh/MR47x9lqrFL/AkERRUIMFPJ53u7tDh533?= =?us-ascii?Q?qGK/Ca357Vb9rJkITMjJ/9ECudTuFHgiFlllP+zQ/r23VmQ0O5fi3k49idz6?= =?us-ascii?Q?Q1+emWjanHSzhPRv6Nno/LVT2fbm5aj+nEbD5+yIBQDs8UtI66bVitQsSwGx?= =?us-ascii?Q?rPd6btuS37Ufk3kS3gFCU26tf5738lZqhAWjUkm/WlwvVMmwKbwaU5bfKMPK?= =?us-ascii?Q?070vHIeOjOPNBeF7Uv+aKZWj3PQ0Z3WQBWuO46nqvsODuBr2k5lGNPp7BT3f?= =?us-ascii?Q?s5ZbXu8ydVuAfrhjpqNd71kHpFe2k64mruTb0svS7RkiAfbRsoM/xycK7HjG?= =?us-ascii?Q?aloYvVgJsYTsYxpp5SQgWAqc5HL/sMMtA7qGmdHTVg1+ILj2xJBWb36w5Dum?= =?us-ascii?Q?JzH/4dMk1wEMzt7RY//OHASO0KiPCFjm/g5QwZPdLz+qoXkrS22kAI9+XJYL?= =?us-ascii?Q?7100jjdPbr2K5+gra1vc78KXjiTmpFVtZeQW+7LRTA7Nn8WATe+VfG7nZcXD?= =?us-ascii?Q?veSK/LYgJ6OYIl+j37l/CVRA/2TYPpgOiEF5zIxKhD1e+d7XBth6jFDA25Rx?= =?us-ascii?Q?SasSl+BsCTpohHc2UXpRk21GeqIeCK7AwUNGAOx7vEhUQcMFAIywnnMUzoI0?= =?us-ascii?Q?G/fe0SLrKTK5vCQgYvlXw2DbxOxxESN3YMnm9CEJJzGGeIBKhuxJhyY7mne1?= =?us-ascii?Q?39R3p0HEhC7ysGYktltNNjMTKxtOZ8Iy3kMlQemwFHxFDrpQnZtDgJqVr/HF?= =?us-ascii?Q?DSgIVqRdNagctZ5aTRtzZYRzUXgKM2cDXMi6qCPza7G2Fc5hLZQl6ZuAER4o?= =?us-ascii?Q?rzZRtJdjDgviUeXdxm9TcFKIIFaZB+BWzU4qSiX1AVPQB6LBGDrj/dq/7sK8?= =?us-ascii?Q?SfEjeE4WCS0zgHLH69yuK94l+Fn8VOWG36Ya3yqtNITLAQPT7AcqUXSQeQh/?= =?us-ascii?Q?63cSwwsMZ3PWqXhkiNyKDM2CWKj/8hEvjYVvDA8+lSxX8AhQZkZSc91LGVak?= =?us-ascii?Q?IcMj4SY8jltsp8NSnX50kz3n2YRnE9FQCzZlozLe+/cW4st4R6/sJRkew7GY?= =?us-ascii?Q?7r3Zy2zvyjIHxb7Nl9D6xzJIxCFypO2Y=3D?= X-Microsoft-Antispam-Message-Info: lQN2AVW5HHll6yGwh1C8+nsmSUcTKUtTDN35jHF9A9ywdwIQ7ysvIvozR/8ltA8bXqb3jjF9pMvGUS4AWoSMUU4P8Cg0wJsiKnJitKnVXoOmE+7TAOPMtNo5YoCktTfD/hXJVksOG2haF5gkKKuRRUZ4w5GJQguhWdZYpigYPpWpKoSz7l0O/GV+v0gMsrrxDnTKRA4sbiz75MDvzBjj+o4JGnkduWV7Xy7NFkrfOYxbaKnC2XSWL2A6BaK1He9eviakPMCNcjPsd6hYZgVWZ6k4h4Lpr0fl52jNoZGtljNw8DkfQqK8w+0wPtF60UkT1ExL7nBCWJyJOgKONIHQE/1EUaezcZDbGo+QsvPG12g= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0501MB2041; 6:ykSW3a3F0vVJ24P0rgIDl8rTlOxvMv2wC8oY/19gTVtkrGPhws8YyO5S+Uf6vTRnw8WwP/22KuRSstVwgiPwNdN+QckRMBBeYOCOsiO2YjiAWy/KChcXNF4sZbU5OBtn6btRHs7maU5kt629aq2qnJ3C1ZzAQCrkq1FYwuk9j1w6oMFeyegu4CfDtpCogLKTk6Ff2YdIq7+4Z5Jb/vBIdVH+uyEnhniU82n9qBUn5LXHZZM9NHAI6gtPJrCmTYZQ0CAjOGlW++GRFPKx/hYIRhqOI6zQU7bJfUbVydxztZni7e/GLe5NZHc/M9pf8cQVn4qwL80umzh811HimX6p84pknFbZ868X7NU9cqo/1QbTZqetN4pP0hfN6+T8IvHD3IZmlVw1vqp+X/e/CUzeKVMNjQtQHPBIF1Uke81HtVKGc/WksOrW9RaDatQuqZLZmhlByGxFbNojfPjzKQI2zw==; 5:oL1Pq7Tfg8skqo7BrZFfDPPvK/D+aOckQKESpOdqc04KW0io5w7K+zjRh9KyZ/txUoIys+sEBvjl3Lxiud/bdhjgXQrpXtItVdqBeqLFWgi5rcZsZNyXe7n/y3DqJm1F0PKk4AO2XH//Ri1AcI99KTjiCSbg3E2XpOzwDq9NMNE=; 7:9ywxDp1wmlfUkBlDpr0KxVLC96UfaqAXX8GPSVOClxQVu1hE4HBdxalTCMIL68Ki/Log2lIhTsyFTMWAsWMlMVOciLPuSkKtYTeRzE1mB2Mz2wAWrkUmN5lKDxzo+Rav+qunao0bGlSLZdbLJtlWlb5X7Pql+B3Rfb4woOzBhpdksUvEkQNkRHVI5tyu7YpMEKyeeRsWTBQS2UXD7tI+gwo95mWa6g1kaS3P3GE4RfUZEc438CZHGTdXhBRa+I4b SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2018 02:11:26.7045 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 35939490-55a4-4b6d-69ed-08d5f36642d7 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0501MB2041 Subject: [dpdk-stable] patch 'net/mlx5: fix Rx buffer replenishment threshold' has been queued to LTS release 17.11.4 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: Fri, 27 Jul 2018 02:11:29 -0000 Hi, FYI, your patch has been queued to LTS release 17.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/28/18. So please shout if anyone has objections. Thanks. Yongseok --- >>From b9e1edfe8ee644be2fe5c13e3239c8ee1f48afb4 Mon Sep 17 00:00:00 2001 From: Yongseok Koh Date: Tue, 26 Jun 2018 04:33:35 -0700 Subject: [PATCH] net/mlx5: fix Rx buffer replenishment threshold [ upstream commit e10245a13b2e340f48ce80484f19bcbc13e9ebe6 ] The threshold of buffer replenishment for vectorized Rx burst is a constant value (64). If the size of Rx queue is comparatively small, device could run out of buffers. For example, if the size of Rx queue is 128, buffers are replenished only twice per a wraparound. This can cause jitter in receiving packets and the jitter can cause unnecessary retransmission for TCP connections. Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86") Fixes: 570acdb1da8a ("net/mlx5: add vectorized Rx/Tx burst for ARM") Signed-off-by: Yongseok Koh Acked-by: Shahaf Shuler --- drivers/net/mlx5/mlx5_defs.h | 5 +++-- drivers/net/mlx5/mlx5_rxtx_vec.h | 4 ++-- drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 2 +- drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/net/mlx5/mlx5_defs.h b/drivers/net/mlx5/mlx5_defs.h index d70635767..e9cda9a08 100644 --- a/drivers/net/mlx5/mlx5_defs.h +++ b/drivers/net/mlx5/mlx5_defs.h @@ -92,10 +92,11 @@ #define MLX5_VPMD_MIN_TXQS 4 /* Threshold of buffer replenishment for vectorized Rx. */ -#define MLX5_VPMD_RXQ_RPLNSH_THRESH 64U +#define MLX5_VPMD_RXQ_RPLNSH_THRESH(n) \ + (RTE_MIN(MLX5_VPMD_RX_MAX_BURST, (unsigned int)(n) >> 2)) /* Maximum size of burst for vectorized Rx. */ -#define MLX5_VPMD_RX_MAX_BURST MLX5_VPMD_RXQ_RPLNSH_THRESH +#define MLX5_VPMD_RX_MAX_BURST 64U /* * Maximum size of burst for vectorized Tx. This is related to the maximum size diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.h b/drivers/net/mlx5/mlx5_rxtx_vec.h index 1f08ed0b2..d504e2aee 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec.h @@ -106,9 +106,9 @@ mlx5_rx_replenish_bulk_mbuf(struct mlx5_rxq_data *rxq, uint16_t n) volatile struct mlx5_wqe_data_seg *wq = &(*rxq->wqes)[elts_idx]; unsigned int i; - assert(n >= MLX5_VPMD_RXQ_RPLNSH_THRESH); + assert(n >= MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n)); assert(n <= (uint16_t)(q_n - (rxq->rq_ci - rxq->rq_pi))); - assert(MLX5_VPMD_RXQ_RPLNSH_THRESH > MLX5_VPMD_DESCS_PER_LOOP); + assert(MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n) > MLX5_VPMD_DESCS_PER_LOOP); /* Not to cross queue end. */ n = RTE_MIN(n - MLX5_VPMD_DESCS_PER_LOOP, q_n - elts_idx); if (rte_mempool_get_bulk(rxq->mp, (void *)elts, n) < 0) { diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h index cf424778a..1604d0430 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h @@ -754,7 +754,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n, * N - (rq_ci - rq_pi) := # of buffers consumed (to be replenished). */ repl_n = q_n - (rxq->rq_ci - rxq->rq_pi); - if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH) + if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n)) mlx5_rx_replenish_bulk_mbuf(rxq, repl_n); /* See if there're unreturned mbufs from compressed CQE. */ rcvd_pkt = rxq->cq_ci - rxq->rq_pi; diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h index 793142922..01a93a4b4 100644 --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h @@ -735,7 +735,7 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n, * N - (rq_ci - rq_pi) := # of buffers consumed (to be replenished). */ repl_n = q_n - (rxq->rq_ci - rxq->rq_pi); - if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH) + if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n)) mlx5_rx_replenish_bulk_mbuf(rxq, repl_n); /* See if there're unreturned mbufs from compressed CQE. */ rcvd_pkt = rxq->cq_ci - rxq->rq_pi; -- 2.11.0