From patchwork Thu Feb 11 14:16:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 380996 Delivered-To: patch@linaro.org Received: by 2002:a02:b18a:0:0:0:0:0 with SMTP id t10csp2121426jah; Thu, 11 Feb 2021 06:28:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJxc4FLFG8tjgcxbNOLbJzQlapy/m8azN/t1UVv71SGr/rVERJL5+Pnc6WY2E6FBZxK6YrGL X-Received: by 2002:a17:906:8612:: with SMTP id o18mr8663046ejx.435.1613053697299; Thu, 11 Feb 2021 06:28:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613053697; cv=none; d=google.com; s=arc-20160816; b=1AfIFZecH7TiltH0eAWoUQUBFNwevF2b+ZMtaE5Sq9gyXSpgedVxcgl9yZrdmwLClZ e7G5FTm3d1608CPiO/xxDd0fjOtJT1WsgyqGbUPqLvyTekK6CjG69kop8Lqc33z3P+Q8 NnV2T6ULFol/eWwmCQqfQtWR9UIdIL/66Ya3T/55EeKNPWouLjXgcpkSJ56BbNfKSdWn fGNiqnct5IvRvw3dCmiCbPN+KEDtkWFn36wmeuq132VE/rv2qSnMHy7l/jvVe8IXX81K yz0jxqwPYPNI0WMceNR46lDeEzCvFuRl9yy5/FAZfogtBy5mdbA5Bl829ovhVIIJU5fi PGqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:to:from; bh=+bjqNpqWXJbds9fJ8lgdETFUx5HVUdcr2o5aGQd3nAA=; b=QmhKCdh2lc8oKenbFOY514qgHPos04whEpW3QOXNfiLjXtWdRYYH0YZNnTnyPxj1xB ZIb3rbymCXazl1miZiMgJ7nyH4n8761AmrpWk+89AqrktdH8leUJ7Wi260Ljjo0iy3CY EQC4IOR19z+QUURtkNaRPYXu2jbE1az4UrBxEYvcyioGa7oFc6kbipFUpoSxuFx4jYdt nFhP7UWMbJkTUD24aQQwUwzVtphnu27AnmlUfPq556xYIxZckeZvFJSlxlkhn3Q9PBhw F3otExtKXcRLTLQI2IWA9mCTEnTbUAHU0Ie4Jm9aqWJtU/W4y7f6dJZdUNmSj8IR0c1z LN2g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 217.70.189.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from mails.dpdk.org (mails.dpdk.org. [217.70.189.124]) by mx.google.com with ESMTP id cx13si3645297edb.500.2021.02.11.06.28.17; Thu, 11 Feb 2021 06:28:17 -0800 (PST) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 217.70.189.124 as permitted sender) client-ip=217.70.189.124; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 217.70.189.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0A49A1CC54F; Thu, 11 Feb 2021 15:28:03 +0100 (CET) Received: from inva021.nxp.com (inva021.nxp.com [92.121.34.21]) by mails.dpdk.org (Postfix) with ESMTP id BA8C01CC3B1 for ; Thu, 11 Feb 2021 15:27:59 +0100 (CET) Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 48DFC200903; Thu, 11 Feb 2021 15:27:59 +0100 (CET) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 08D912008D9; Thu, 11 Feb 2021 15:27:58 +0100 (CET) Received: from bf-netperf1.ap.freescale.net (bf-netperf1.ap.freescale.net [10.232.133.63]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 07662402B7; Thu, 11 Feb 2021 15:27:55 +0100 (CET) From: Hemant Agrawal To: dev@dpdk.org, ferruh.yigit@intel.com Date: Thu, 11 Feb 2021 19:46:02 +0530 Message-Id: <20210211141620.12482-3-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210211141620.12482-1-hemant.agrawal@nxp.com> References: <20210120142723.14090-1-hemant.agrawal@nxp.com> <20210211141620.12482-1-hemant.agrawal@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Subject: [dpdk-dev] [PATCH v2 02/20] bus/dpaa: fix statistics reading X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" From: Nipun Gupta Reading of word un-aligned values after reading word aligned values lead to corrution of memory, such that older value. This patch make changes such that word alignedaccess is made, before making an un-aligned access Fixes: 6d6b4f49a155 ("bus/dpaa: add FMAN hardware operations") Cc: stable@dpdk.org Signed-off-by: Nipun Gupta --- drivers/bus/dpaa/base/fman/fman_hw.c | 33 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 17 deletions(-) -- 2.17.1 diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c index 4ab49f7853..af9bac76c2 100644 --- a/drivers/bus/dpaa/base/fman/fman_hw.c +++ b/drivers/bus/dpaa/base/fman/fman_hw.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright 2017 NXP + * Copyright 2017,2020 NXP * */ @@ -219,20 +219,20 @@ fman_if_stats_get(struct fman_if *p, struct rte_eth_stats *stats) struct memac_regs *regs = m->ccsr_map; /* read recved packet count */ - stats->ipackets = ((u64)in_be32(®s->rfrm_u)) << 32 | - in_be32(®s->rfrm_l); - stats->ibytes = ((u64)in_be32(®s->roct_u)) << 32 | - in_be32(®s->roct_l); - stats->ierrors = ((u64)in_be32(®s->rerr_u)) << 32 | - in_be32(®s->rerr_l); + stats->ipackets = (u64)in_be32(®s->rfrm_l) | + ((u64)in_be32(®s->rfrm_u)) << 32; + stats->ibytes = (u64)in_be32(®s->roct_l) | + ((u64)in_be32(®s->roct_u)) << 32; + stats->ierrors = (u64)in_be32(®s->rerr_l) | + ((u64)in_be32(®s->rerr_u)) << 32; /* read xmited packet count */ - stats->opackets = ((u64)in_be32(®s->tfrm_u)) << 32 | - in_be32(®s->tfrm_l); - stats->obytes = ((u64)in_be32(®s->toct_u)) << 32 | - in_be32(®s->toct_l); - stats->oerrors = ((u64)in_be32(®s->terr_u)) << 32 | - in_be32(®s->terr_l); + stats->opackets = (u64)in_be32(®s->tfrm_l) | + ((u64)in_be32(®s->tfrm_u)) << 32; + stats->obytes = (u64)in_be32(®s->toct_l) | + ((u64)in_be32(®s->toct_u)) << 32; + stats->oerrors = (u64)in_be32(®s->terr_l) | + ((u64)in_be32(®s->terr_u)) << 32; } void @@ -244,10 +244,9 @@ fman_if_stats_get_all(struct fman_if *p, uint64_t *value, int n) uint64_t base_offset = offsetof(struct memac_regs, reoct_l); for (i = 0; i < n; i++) - value[i] = ((u64)in_be32((char *)regs - + base_offset + 8 * i + 4)) << 32 | - ((u64)in_be32((char *)regs - + base_offset + 8 * i)); + value[i] = (((u64)in_be32((char *)regs + base_offset + 8 * i) | + (u64)in_be32((char *)regs + base_offset + + 8 * i + 4)) << 32); } void