From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6F6BEA052B; Tue, 28 Jul 2020 13:54:25 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EAF882B9C; Tue, 28 Jul 2020 13:54:23 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2046.outbound.protection.outlook.com [40.107.21.46]) by dpdk.org (Postfix) with ESMTP id 71CC623D for ; Tue, 28 Jul 2020 13:54:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zr7xTITy53Pe3XH9owA+bttu+lB9eVJW1w6bAGO/WBG1JZSzIVi2sBhObXS9jE+zb9DumJdT2U3VY+ritSRx+L6Hmxr9KtFn6KY4keVstOKPspN8KwpfhxQeI27awX+EMdTkwyFdzpzdINK/bv8B1Y0hnNh5MJkXw8v5t6b3GebMi/61p4ItRizeNeR/29ppBw4HC5c7p/nUP1ZFXJ2obT/lT/u+zmh0gfRDZhhqcFTeRH8KcyhPlfz5Alfa181Y/5hurkZs5X6M9KyUQj0IqVdh90PGx6V3bpKeO9pSBJTB/cEJZNsM9ZuJxbACSwFpeCboKsEFOa58rIlgfgJdIQ== 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=jw3x2C7e+M1UsOYTSg9nlX/n1AgaQkvTkfSBMeNEK5k=; b=m4+KdYQd7oAk7Y81k2wiuIqSK0qF6QZbN8crxbS+c72EHxqJRDMmi3PsyxMCaDplpa5FCKajxAKDCcH9od/iywMMWcqhiCV+W2M2jlrKk3d3j2PStgmT8e5Wv/M7Fwc7fqq+OahFsUMbXwN+qXe6dQjBBlDHFK7vEALjzjleR8Gz9eqr5hW+RJRSgLdl2/hGwVh1TSPpV1GS2aixUpK6cQwMS/f0/NJBgNTOJaUgURuhFA7VUyF4HJGHPTyti5T/nL2qMVW+9ZGXG8xHI+zKWv1RJD2AXxQeplbwJMWBQTn3IIbqQLkjhmsxdnvEioG1BlvTxuQP7KzCIML/tn6f1w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none 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=jw3x2C7e+M1UsOYTSg9nlX/n1AgaQkvTkfSBMeNEK5k=; b=SaeDz+CBQ0ynGdInertepbglzpGw2el2Wkd4vFDlSSiCf2JJFkj3z/jlkIB2gZ4HpcPbAew79N0bOdpBpeXdIi0xzGQ7V74F3rAJCnd22iTvYP0mvDydcP0/8XtVHvIlcNM1Qc4MkZnQgWPmGiUx5Sb8n0nDftDWSQZr5P3tZLo= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB4209.eurprd05.prod.outlook.com (2603:10a6:208:61::22) by AM0PR05MB6065.eurprd05.prod.outlook.com (2603:10a6:208:133::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.22; Tue, 28 Jul 2020 11:54:21 +0000 Received: from AM0PR05MB4209.eurprd05.prod.outlook.com ([fe80::3949:70c3:126:3972]) by AM0PR05MB4209.eurprd05.prod.outlook.com ([fe80::3949:70c3:126:3972%7]) with mapi id 15.20.3216.034; Tue, 28 Jul 2020 11:54:21 +0000 From: Ophir Munk To: dev@dpdk.org Cc: Raslan Darawsheh , Ophir Munk , Matan Azrad Date: Tue, 28 Jul 2020 11:54:06 +0000 Message-Id: <20200728115406.20141-1-ophirmu@mellanox.com> X-Mailer: git-send-email 2.8.4 Content-Type: text/plain X-ClientProxiedBy: AM0PR10CA0118.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:e6::35) To AM0PR05MB4209.eurprd05.prod.outlook.com (2603:10a6:208:61::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from mellanox.com (37.142.13.130) by AM0PR10CA0118.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:e6::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.21 via Frontend Transport; Tue, 28 Jul 2020 11:54:20 +0000 X-Mailer: git-send-email 2.8.4 X-Originating-IP: [37.142.13.130] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 0c1b69e2-ce87-4783-e8b5-08d832ecf71c X-MS-TrafficTypeDiagnostic: AM0PR05MB6065: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wiabsVs1osY5gjdfhynVxKkg8NCOqnGs6bH8StzFpzqSneuIxWRFySwBJNjERYx1IXUJAg5ND1US1YBD31xXmufiHbcER7pSWTEzPW66KSRKo64yTtyzbkrDx4AFE9xCkVEaUl0MZVmBrNbTV5B7S5DZe7k0M4yFI6bQ6Bo2ZAzMceMq2iP4R0Ot4PlP4RM0t7bdVqMqKs6F/GyyD8eu6jSZXKe1fPacXieU8+j5G1liLQi2LIPRJs0eeZIEyOISZpu12jYol/J7EQboRW0+QyIXh/9JVjNRfL/SKTGb8kdIrCwPofIk7imvCTP/30BpBY6qnoWNyONgP/LxHvfgag== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4209.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(39860400002)(396003)(376002)(346002)(136003)(55016002)(478600001)(4326008)(316002)(107886003)(2906002)(8936002)(54906003)(8676002)(2616005)(83380400001)(66476007)(66946007)(6916009)(6666004)(5660300002)(26005)(16526019)(186003)(8886007)(1076003)(7696005)(52116002)(66556008)(956004)(86362001)(36756003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: YbdZaqJzKH0AyFZNAXZpvLXgYHF71NyjUUaibyAYquH11YBAB7ry1fi4GZ/w5kZK+uiEGFzHMMqW17P866Id7deyhBFS0SWjpsHIRa9AyMreYPssAsPKYMbqJCuIbvY6v32NOT9Ywvs7xdg8yxb6oghawxLgHgbOM/BjDRN7jcH9PlKPo9QFYxXzHBdRTaehQQcmU3E0kIwBRio6sicoThLGc+W35I5y366NTJ9OV2Ks8/B4iLRYcOph4NZoMZU6ieWk/xRWk56/jkYjyIJR5Z4Si2g8DL00i8BQ2jRyWdAYshdvk6Gc4Hv/LC611uw5+0iC5Ohy2Wcc9c3QJWDThJ6ubNnm6gEjC+1m8kCOTfKeHqc7JYKj8FAQeyDsrQyMZZ5Pv+wrsr8Rupu/HkwaYf8ZRhThDaiUwS4RzrVHC4f6IR3yZM1swnUc0cs+cz+WTMmrmvbmmpvgRqaHwpvjSY4dLpb5VHDLb0X++ScSaIY= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0c1b69e2-ce87-4783-e8b5-08d832ecf71c X-MS-Exchange-CrossTenant-AuthSource: AM0PR05MB4209.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2020 11:54:21.4671 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: II9V4JJaLxk/vR8vXz2H9sQVl1t0n2AVg1s6pDeEVEBKhwFsPnuprqcAbi6htzZATZFbZhU7Q/sydVoE7/dcYQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB6065 Subject: [dpdk-dev] [PATCH v1] net/mlx4: return EAGAIN on premature disable interrupt calls 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" RXQ interrupts under Linux are based on the epoll mechanism. An expected order of operations is as follows: 1. Call rte_eth_dev_rx_intr_enable(), to arm the CQ for receiving events on data input. 2. Block on rte_epoll_wait() with an array of file descriptors representing the CQ events. Upon data arrival the kernel will signal an input event on the corresponding CQ fd. 3. Call rte_eth_dev_rx_intr_disable() after the event was received and continue in polling mode. The mlx4 implementation of rte_eth_dev_rx_intr_disable() is to get the CQ event and ack it. In practice applications may wake up from rte_epoll_wait() due to timeout with no event to ack but still call rte_eth_dev_rx_intr_disable() unconditionally. In such cases the call should return EAGAIN (since the file descriptors are non-blocked), as opposed to EINVAL which indicates a real failure. In case of EAGAIN the PMD should not warn on "unable to disable interrupt on rx queue". Signed-off-by: Ophir Munk --- drivers/net/mlx4/mlx4_intr.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/net/mlx4/mlx4_intr.c b/drivers/net/mlx4/mlx4_intr.c index 020fc25..19af935 100644 --- a/drivers/net/mlx4/mlx4_intr.c +++ b/drivers/net/mlx4/mlx4_intr.c @@ -326,13 +326,20 @@ mlx4_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx) } else { ret = mlx4_glue->get_cq_event(rxq->cq->channel, &ev_cq, &ev_ctx); - if (ret || ev_cq != rxq->cq) + /** For non-zero ret save the errno (may be EAGAIN + * which means the get_cq_event function was called before + * receiving one). + */ + if (ret) + ret = errno; + else if (ev_cq != rxq->cq) ret = EINVAL; } if (ret) { rte_errno = ret; - WARN("unable to disable interrupt on rx queue %d", - idx); + if (ret != EAGAIN) + WARN("unable to disable interrupt on rx queue %d", + idx); } else { rxq->mcq.arm_sn++; mlx4_glue->ack_cq_events(rxq->cq, 1); -- 2.8.4