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 63CA9A04A5 for ; Wed, 17 Jun 2020 09:18:45 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2E534FEB; Wed, 17 Jun 2020 09:18:45 +0200 (CEST) Received: from integrity.niometrics.com (integrity.niometrics.com [42.61.70.122]) by dpdk.org (Postfix) with ESMTP id 6A0FCFEB for ; Wed, 17 Jun 2020 09:18:44 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by integrity.niometrics.com (Postfix) with ESMTP id 3532A409CBA8; Wed, 17 Jun 2020 15:18:42 +0800 (+08) DKIM-Filter: OpenDKIM Filter v2.11.0 integrity.niometrics.com 3532A409CBA8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niometrics.com; s=default; t=1592378322; bh=GAhPQ05lZuIyUsX4GytQYLW+U8mF7qsx4NXUKJe3OlQ=; h=From:To:Cc:Subject:Date:From; b=vScGvU9R5J2FisCZUOWnLggTJNLHoyWX+zOV5y6lw43nJqvYl3KniM+NkklY0lWew y+ogG/i7k+kEkJR515Suv79aXZ7RYz5Lkrm29IWCDFHYINJ1N/Y8O6GtmK4dgzIMfr 2X1S1KhCcruBzsDhd87S3MRBSKKI7fDouOit5TH0= X-Virus-Scanned: amavisd-new at niometrics.com Received: from integrity.niometrics.com ([127.0.0.1]) by localhost (integrity.niometrics.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xmiwI3kLI-v3; Wed, 17 Jun 2020 15:18:42 +0800 (+08) Received: from monkey-island.localdomain (unknown [10.15.0.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by integrity.niometrics.com (Postfix) with ESMTPSA id CD685409CBAC; Wed, 17 Jun 2020 15:18:40 +0800 (+08) DMARC-Filter: OpenDMARC Filter v1.3.2 integrity.niometrics.com CD685409CBAC DKIM-Filter: OpenDKIM Filter v2.11.0 integrity.niometrics.com CD685409CBAC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niometrics.com; s=default; t=1592378322; bh=GAhPQ05lZuIyUsX4GytQYLW+U8mF7qsx4NXUKJe3OlQ=; h=From:To:Cc:Subject:Date:From; b=vScGvU9R5J2FisCZUOWnLggTJNLHoyWX+zOV5y6lw43nJqvYl3KniM+NkklY0lWew y+ogG/i7k+kEkJR515Suv79aXZ7RYz5Lkrm29IWCDFHYINJ1N/Y8O6GtmK4dgzIMfr 2X1S1KhCcruBzsDhd87S3MRBSKKI7fDouOit5TH0= From: Mohsin Shaikh To: stable@dpdk.org Cc: akozyrev@mellanox.com, Mohsin Shaikh Date: Wed, 17 Jun 2020 15:18:01 +0800 Message-Id: <1592378281-5174-1-git-send-email-mohsinshaikh@niometrics.com> X-Mailer: git-send-email 1.8.3.1 X-Spam-Status: No, score=-1.1 required=3.5 tests=ALL_TRUSTED, AWL, DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on integrity.niometrics.com Subject: [dpdk-stable] [PATCH 18.11] net/mlx5: use open/read/close for ib stats query 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: , Errors-To: stable-bounces@dpdk.org Sender: "stable" [ upstream commit 00437823cb80b8fa87dbe61becc07bd42ee98549 ] fgets(3)/fread(3)/fscanf(3) etc. use mmap(2)/munmap(2) which leads to TLB shutdown interrupts to all DPDK app cores including RX cores. This can cause packet drops. Use read(2)/write(2) instead. Bugzilla ID: 440 Signed-off-by: Mohsin Shaikh Reviewed-by: Alexander Kozyrev Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_stats.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c index 6906dc8..0b1fe3d 100644 --- a/drivers/net/mlx5/mlx5_stats.c +++ b/drivers/net/mlx5/mlx5_stats.c @@ -3,11 +3,13 @@ * Copyright 2015 Mellanox Technologies, Ltd */ +#include #include #include #include #include #include +#include #include #include @@ -139,19 +141,24 @@ static inline void mlx5_read_ib_stat(struct mlx5_priv *priv, const char *ctr_name, uint64_t *stat) { - FILE *file; + int fd; + MKSTR(path, "%s/ports/1/hw_counters/%s", priv->ibdev_path, ctr_name); - file = fopen(path, "rb"); - if (file) { - int n = fscanf(file, "%" SCNu64, stat); + fd = open(path, O_RDONLY); + if (fd != -1) { + char buf[21] = {'\0'}; + ssize_t n = read(fd, buf, sizeof(buf)); - fclose(file); - if (n != 1) - stat = 0; + close(fd); + if (n != -1) { + *stat = strtoull(buf, NULL, 10); + return; + } } + *stat = 0; } /** -- 1.8.3.1