From patchwork Sun Dec 4 13:19:29 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Netanel Belgazal X-Patchwork-Id: 702442 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3tWpWK53nnz9t0p for ; Mon, 5 Dec 2016 00:23:57 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=annapurnalabs-com.20150623.gappssmtp.com header.i=@annapurnalabs-com.20150623.gappssmtp.com header.b="BS2FkgnO"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752353AbcLDNXo (ORCPT ); Sun, 4 Dec 2016 08:23:44 -0500 Received: from mail-wj0-f178.google.com ([209.85.210.178]:33412 "EHLO mail-wj0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751722AbcLDNUa (ORCPT ); Sun, 4 Dec 2016 08:20:30 -0500 Received: by mail-wj0-f178.google.com with SMTP id xy5so268859704wjc.0 for ; Sun, 04 Dec 2016 05:20:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=annapurnalabs-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9RUjY7U7iTS0APUF4Ab95rQPFbNfMK4gkYBmWa1X1NU=; b=BS2FkgnODYFBIE7HxYEcqqZHv3mHaVDTv0+vSoJmGRWSIpPKWc8z3Mox9GjTzgsixs hUCQ6UIRREiLpNErGnQGiT1Y67muG0UB39LjcSlHDNkXSryM8q9DRbSajCPtlATbBy53 BfxFSBPvNK1TB6zhM3qDa9BwGqtLeIQXXMRfaqIbWMmTYPWL8y5sV6c0eVuab0Hg4ggC XDbr5rSAKgXMgWZBJtoIbIiBuvY2Wb4i+a1/i9cFxoTgMamoUyOzo2V/R3SA/lnHFRTI j3aSaZlrNBwoKBjp2+AOUDovDeYAF7M9Rlg86UFjsBAFKd27/vcwXtRpa3eXz6+ztO7n e4/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9RUjY7U7iTS0APUF4Ab95rQPFbNfMK4gkYBmWa1X1NU=; b=atWRar7RMUrXG2GvFrjkYki9teoTCfpYLvPLQOH7mf0jsJm4Kd0c8Hu95urWJwk5KF oVvirxzMoHEo5jzuoUQdHPuc+Jm28Z3W7feu9dFbUSV8IMjnJtClDPHcYJAUid7OaXov 69uMx1Lb7cD+bmFPtVbNNFkc4GaXPH4QIlc8Qw+oWutetTc6S6JlNZGo7XEMoZ6ZlIx5 UT6tBb4Q0Xfd6X0ccJ+wq4AFJKDc7zufilDxlti/Aod3Q/yuhrwDdHKDU5yIsJ+7SavA MtXLYt0tX/iM+BJC/XtVc4rI/+RI+lBELPPAzY/sVLU/jm/f8vLlJTbxBqbWLlN69FVC hHBA== X-Gm-Message-State: AKaTC03VEQGsyMzMF+Mc3EHLLUAqqz2o0Id5GeK/n+ev195+ZijChZ0vfg2DnSZrOnzNJuwf X-Received: by 10.194.164.42 with SMTP id yn10mr506471wjb.46.1480857628916; Sun, 04 Dec 2016 05:20:28 -0800 (PST) Received: from u28f10e31dbcc580f6671.ant.amazon.com ([82.166.188.253]) by smtp.gmail.com with ESMTPSA id l187sm13039315wml.6.2016.12.04.05.20.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 04 Dec 2016 05:20:28 -0800 (PST) From: Netanel Belgazal To: linux-kernel@vger.kernel.org, davem@davemloft.net, netdev@vger.kernel.org Cc: Netanel Belgazal , dwmw@amazon.com, zorik@annapurnalabs.com, alex@annapurnalabs.com, saeed@annapurnalabs.com, msw@amazon.com, aliguori@amazon.com, nafea@annapurnalabs.com Subject: [PATCH V2 net 11/20] net/ena: use READ_ONCE to access completion descriptors Date: Sun, 4 Dec 2016 15:19:29 +0200 Message-Id: <1480857578-5065-12-git-send-email-netanel@annapurnalabs.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1480857578-5065-1-git-send-email-netanel@annapurnalabs.com> References: <1480857578-5065-1-git-send-email-netanel@annapurnalabs.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Completion descriptors are accessed from the driver and from the device. To avoid reading the old value, use READ_ONCE macro. Signed-off-by: Netanel Belgazal --- drivers/net/ethernet/amazon/ena/ena_com.h | 1 + drivers/net/ethernet/amazon/ena/ena_eth_com.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/amazon/ena/ena_com.h b/drivers/net/ethernet/amazon/ena/ena_com.h index 6883ee5..f8cdce0 100644 --- a/drivers/net/ethernet/amazon/ena/ena_com.h +++ b/drivers/net/ethernet/amazon/ena/ena_com.h @@ -33,6 +33,7 @@ #ifndef ENA_COM #define ENA_COM +#include #include #include #include diff --git a/drivers/net/ethernet/amazon/ena/ena_eth_com.c b/drivers/net/ethernet/amazon/ena/ena_eth_com.c index 539c536..f999305 100644 --- a/drivers/net/ethernet/amazon/ena/ena_eth_com.c +++ b/drivers/net/ethernet/amazon/ena/ena_eth_com.c @@ -45,7 +45,7 @@ static inline struct ena_eth_io_rx_cdesc_base *ena_com_get_next_rx_cdesc( cdesc = (struct ena_eth_io_rx_cdesc_base *)(io_cq->cdesc_addr.virt_addr + (head_masked * io_cq->cdesc_entry_size_in_bytes)); - desc_phase = (cdesc->status & ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK) >> + desc_phase = (READ_ONCE(cdesc->status) & ENA_ETH_IO_RX_CDESC_BASE_PHASE_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_PHASE_SHIFT; if (desc_phase != expected_phase) @@ -141,7 +141,7 @@ static inline u16 ena_com_cdesc_rx_pkt_get(struct ena_com_io_cq *io_cq, ena_com_cq_inc_head(io_cq); count++; - last = (cdesc->status & ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK) >> + last = (READ_ONCE(cdesc->status) & ENA_ETH_IO_RX_CDESC_BASE_LAST_MASK) >> ENA_ETH_IO_RX_CDESC_BASE_LAST_SHIFT; } while (!last); @@ -489,13 +489,13 @@ int ena_com_tx_comp_req_id_get(struct ena_com_io_cq *io_cq, u16 *req_id) * expected, it mean that the device still didn't update * this completion. */ - cdesc_phase = cdesc->flags & ENA_ETH_IO_TX_CDESC_PHASE_MASK; + cdesc_phase = READ_ONCE(cdesc->flags) & ENA_ETH_IO_TX_CDESC_PHASE_MASK; if (cdesc_phase != expected_phase) return -EAGAIN; ena_com_cq_inc_head(io_cq); - *req_id = cdesc->req_id; + *req_id = READ_ONCE(cdesc->req_id); return 0; }