From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5F22EA0C3F for ; Sat, 12 Jun 2021 01:11:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 54B9A4003F; Sat, 12 Jun 2021 01:11:44 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2083.outbound.protection.outlook.com [40.107.243.83]) by mails.dpdk.org (Postfix) with ESMTP id 8325E4003F for ; Sat, 12 Jun 2021 01:11:42 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UDtk3BLWOCbA4bMhcXneYC1IyCuuIAOMp9uS8IBDr5KVWMnnH4LfOBB0kDm7cECLJpXhiMYuwnQ9NFsXn/+dxnLSnwH5G1oga4essUyyy4ZO5dvFsaP7jvjv2hDD4ySeZ+6UWGJQbgllUGhvwz5AWA8ycutUvQu2JL8nfnM+w46bLrcCEvRD6Uj03I+CZIHnAaJN/15fc5oBBDKKGRgS6Q6lRrpI5288YwvGJ/erDYLqsA5j/UqRkFPzHhAKftdJVfnoouIQac3qnLeEia4cf3rpbLP3fVQn3jju1KjB+wbLXNxfRpp/64P+zu7D2aZ9IwpPJfGmwXyZ00OEkTrgmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IywaWqtWmmo5/5WeCZg1mAcj407piDZ8W0QZApjUvKw=; b=CvEqxjBzqKoKltbDRaOqBDDZzAXH9TBCQ0T50N/YfbkGUY43Nd1X0w381peHhcKrvCEtVorEHlZsUbWo6QYoy15VvfBDqvUyKaOHPVC7NxlC1xaMlowFtg/b2zh2gzMKeQ3/YciPh9p0ckXDXoKzx8dlJXdpzB3Ez+L3Q+kJzM9DCgsbtssZFqRiQdIaHfefsNK13JuAMPmGsWTiFH2kJdCUkFi6ODHN3WvAolM5A/aACVQ/hr8PwvbxwApUabguEX1oVFRkv7LY2xeFxW4Egtm8LjwR+X9/lRq1G0EvlNGMWyFfoFEsOEclhH5LdAJ4EC432KrRT6mZpCYDj86QKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=redhat.com smtp.mailfrom=nvidia.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IywaWqtWmmo5/5WeCZg1mAcj407piDZ8W0QZApjUvKw=; b=tvXJ7cXrw3f2aos9EfJgOJj9P+A2b+kY2ozDX59VHalf/c2lkbUDYhiO7t61B6yOXcGYm0nRdALsCn9XKX4CS9OR9lDJQkUtVmSIvSY1zfzmPL2DTJyzJ1dkH9emLh6cSxhmEI09e3aA7/X0SJOn5arkLlT6G/La7yCVFlGoZ9nnRhCa7J/qJH6tWT3gDhACpYjp+VASrmd9Jhq2U5ptfgM0JVlIElFjgJ5q22eFjzynVNhGiGk89Sbm9i889jzFRg4ImJ3dMOPaQmuV7GgDO6HuuP5JhWPOv8p4Xpb1UWYaN/5Q+wi9Wk3bvewBDmDLi0vVA61L1Ju9ymnk8WpE2w== Received: from MW4PR04CA0379.namprd04.prod.outlook.com (2603:10b6:303:81::24) by DM5PR12MB2504.namprd12.prod.outlook.com (2603:10b6:4:b5::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.23; Fri, 11 Jun 2021 23:11:40 +0000 Received: from CO1NAM11FT045.eop-nam11.prod.protection.outlook.com (2603:10b6:303:81:cafe::b2) by MW4PR04CA0379.outlook.office365.com (2603:10b6:303:81::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4219.21 via Frontend Transport; Fri, 11 Jun 2021 23:11:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by CO1NAM11FT045.mail.protection.outlook.com (10.13.175.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4219.21 via Frontend Transport; Fri, 11 Jun 2021 23:11:40 +0000 Received: from nvidia.com (172.20.187.5) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 11 Jun 2021 23:11:38 +0000 From: Xueming Li To: Xueming Li CC: Luca Boccassi , David Christensen , Maxime Coquelin , "dpdk stable" Date: Sat, 12 Jun 2021 07:02:45 +0800 Message-ID: <20210611230433.8208-71-xuemingl@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210611230433.8208-1-xuemingl@nvidia.com> References: <20210510160258.30982-229-xuemingl@nvidia.com> <20210611230433.8208-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [172.20.187.5] X-ClientProxiedBy: HQMAIL105.nvidia.com (172.20.187.12) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2cfa443-fd8c-40da-deeb-08d92d2e453b X-MS-TrafficTypeDiagnostic: DM5PR12MB2504: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JOTyZscFKfOva8Ti4U1VMFbGDrt36ySoTRTu2Bv0hP3Xb7NoiBotdXawhWQOiz31VShxGprXuGwK5LyxahW4YjqJqqOeiKKSoLciFe2Ajzd/P/ncw5W5PgNywvuF72kSxqCt8FR3r/nOJUUb3SVYmPLML2oPh1gmOzDKVVuxVLqZ/HOkuyW91IYQrHuuj90VJFRA9w6XVe5syyIvt6dZjL6ZutqL3C7+d+VVOFEnet4FUs4o0N9SsMLuDgjVAJI077JMG2YRwPjWmZu5ApoFlwS2t0viwOyWtT86XiVX8JAOXLlFDnZHSlqA+ifOSCYSkRDwfzi+htqitZ/pkHkufECeWOa+TaCiwY01EOTuiuWLGRLPIJ4kTQKYpvPYZ4CSzr68d6HIEt43BIzFKR5fh5fasHV1XIOEzzg5DgCh7rwUFtDYTBkJN9UIsF8jMwIbB3IM3TpDmE/RaRDugOeuA4o5LCfmXFktY+TvSIEYwZoYhblw0GWHOloO0xrHfrU5b14fKlxRunMmhrL3nemO0vedljV7PIh5QFQ5vRV1tedZrR1wnmG4YZC20Gk4SEy3PJItQ6xQgPGVPUuFGFts2sOc6v+jDA/e15cL63zsTIn17m/JO64JpQF3u/PrUKf/SXBMN59KDFBQPxQZ+VLsxvzONimn7LNLLWwJqFRQEkr6jpta8oFdo/Ppy/1wEN19acuJG21OIxomfuLp8HccqJDUM8vFTdbgnpVakS7Jg0AxKQkGO1WUiBIDeMBVQmTvBAoo4vq3kCpFIHLp5kAIjTUGcL3+ysnycapAxeRGmxNfP2HbOmS+RFXOFngKvfZC X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(396003)(39860400002)(376002)(346002)(136003)(46966006)(36840700001)(36906005)(426003)(70586007)(6200100001)(36860700001)(70206006)(82310400003)(336012)(53546011)(2616005)(6286002)(47076005)(83380400001)(6862004)(7696005)(966005)(86362001)(1076003)(36756003)(478600001)(356005)(7636003)(186003)(82740400003)(8936002)(316002)(2906002)(26005)(54906003)(7049001)(4326008)(37006003)(16526019)(55016002)(8676002)(5660300002)(6666004); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jun 2021 23:11:40.1843 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c2cfa443-fd8c-40da-deeb-08d92d2e453b X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT045.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB2504 Subject: [dpdk-stable] patch 'net/virtio: fix vectorized Rx queue rearm' has been queued to stable release 20.11.2 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 20.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 06/14/21. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/steevenlee/dpdk This queued commit can be viewed at: https://github.com/steevenlee/dpdk/commit/96c209b1a6b0bdce7875fb91e8db27e0d930fc91 Thanks. Xueming Li --- >From 96c209b1a6b0bdce7875fb91e8db27e0d930fc91 Mon Sep 17 00:00:00 2001 From: Xueming Li Date: Wed, 14 Apr 2021 22:14:04 +0800 Subject: [PATCH] net/virtio: fix vectorized Rx queue rearm Cc: Luca Boccassi [ upstream commit d99088431ea5d6bb568c5cb5542688453084dcc6 ] When Rx queue worked in vectorized mode and rxd <= 512, under traffic of high PPS rate, testpmd often start and receive packets of rxd without further growth. Testpmd started with rxq flush which tried to rx MAX_PKT_BURST(512) packets and drop. When Rx burst size >= Rx queue size, all descriptors in used queue consumed without rearm, device can't receive more packets. The next Rx burst returned at once since no used descriptors found, rearm logic was skipped, rx vq kept in starving state. To avoid rx vq starving, this patch always check the available queue, rearm if needed even no used descriptor reported by device. Fixes: fc3d66212fed ("virtio: add vector Rx") Fixes: 2d7c37194ee4 ("net/virtio: add NEON based Rx handler") Fixes: 52b5a707e6ca ("net/virtio: add Altivec Rx") Signed-off-by: Xueming Li Reviewed-by: David Christensen Reviewed-by: Maxime Coquelin --- drivers/net/virtio/virtio_rxtx_simple_altivec.c | 12 ++++++------ drivers/net/virtio/virtio_rxtx_simple_neon.c | 12 ++++++------ drivers/net/virtio/virtio_rxtx_simple_sse.c | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/net/virtio/virtio_rxtx_simple_altivec.c b/drivers/net/virtio/virtio_rxtx_simple_altivec.c index a260ebdf57..bcd7d5ee59 100644 --- a/drivers/net/virtio/virtio_rxtx_simple_altivec.c +++ b/drivers/net/virtio/virtio_rxtx_simple_altivec.c @@ -85,6 +85,12 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, if (unlikely(nb_pkts < RTE_VIRTIO_DESC_PER_LOOP)) return 0; + if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) { + virtio_rxq_rearm_vec(rxvq); + if (unlikely(virtqueue_kick_prepare(vq))) + virtqueue_notify(vq); + } + nb_used = virtqueue_nused(vq); rte_compiler_barrier(); @@ -102,12 +108,6 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, rte_prefetch0(rused); - if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) { - virtio_rxq_rearm_vec(rxvq); - if (unlikely(virtqueue_kick_prepare(vq))) - virtqueue_notify(vq); - } - nb_total = nb_used; ref_rx_pkts = rx_pkts; for (nb_pkts_received = 0; diff --git a/drivers/net/virtio/virtio_rxtx_simple_neon.c b/drivers/net/virtio/virtio_rxtx_simple_neon.c index 12e034dc0a..afe6a25944 100644 --- a/drivers/net/virtio/virtio_rxtx_simple_neon.c +++ b/drivers/net/virtio/virtio_rxtx_simple_neon.c @@ -84,6 +84,12 @@ virtio_recv_pkts_vec(void *rx_queue, if (unlikely(nb_pkts < RTE_VIRTIO_DESC_PER_LOOP)) return 0; + if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) { + virtio_rxq_rearm_vec(rxvq); + if (unlikely(virtqueue_kick_prepare(vq))) + virtqueue_notify(vq); + } + /* virtqueue_nused has a load-acquire or rte_io_rmb inside */ nb_used = virtqueue_nused(vq); @@ -100,12 +106,6 @@ virtio_recv_pkts_vec(void *rx_queue, rte_prefetch_non_temporal(rused); - if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) { - virtio_rxq_rearm_vec(rxvq); - if (unlikely(virtqueue_kick_prepare(vq))) - virtqueue_notify(vq); - } - nb_total = nb_used; ref_rx_pkts = rx_pkts; for (nb_pkts_received = 0; diff --git a/drivers/net/virtio/virtio_rxtx_simple_sse.c b/drivers/net/virtio/virtio_rxtx_simple_sse.c index 1056e9c20b..e4e85c2b80 100644 --- a/drivers/net/virtio/virtio_rxtx_simple_sse.c +++ b/drivers/net/virtio/virtio_rxtx_simple_sse.c @@ -85,6 +85,12 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, if (unlikely(nb_pkts < RTE_VIRTIO_DESC_PER_LOOP)) return 0; + if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) { + virtio_rxq_rearm_vec(rxvq); + if (unlikely(virtqueue_kick_prepare(vq))) + virtqueue_notify(vq); + } + nb_used = virtqueue_nused(vq); if (unlikely(nb_used == 0)) @@ -100,12 +106,6 @@ virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, rte_prefetch0(rused); - if (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) { - virtio_rxq_rearm_vec(rxvq); - if (unlikely(virtqueue_kick_prepare(vq))) - virtqueue_notify(vq); - } - nb_total = nb_used; ref_rx_pkts = rx_pkts; for (nb_pkts_received = 0; -- 2.25.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2021-06-12 06:53:58.447683600 +0800 +++ 0071-net-virtio-fix-vectorized-Rx-queue-rearm.patch 2021-06-12 06:53:56.330000000 +0800 @@ -1 +1 @@ -From d99088431ea5d6bb568c5cb5542688453084dcc6 Mon Sep 17 00:00:00 2001 +From 96c209b1a6b0bdce7875fb91e8db27e0d930fc91 Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Luca Boccassi + +[ upstream commit d99088431ea5d6bb568c5cb5542688453084dcc6 ] @@ -22 +24,0 @@ -Cc: stable@dpdk.org @@ -34 +36 @@ -index 62e5100a48..7534974ef4 100644 +index a260ebdf57..bcd7d5ee59 100644 @@ -64 +66 @@ -index c8e4b13a02..7fd92d1b0c 100644 +index 12e034dc0a..afe6a25944 100644 @@ -94 +96 @@ -index ff4eba33d6..7577f5e86d 100644 +index 1056e9c20b..e4e85c2b80 100644