From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755485AbcFTUKJ (ORCPT ); Mon, 20 Jun 2016 16:10:09 -0400 Received: from smtp2.provo.novell.com ([137.65.250.81]:45905 "EHLO smtp2.provo.novell.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932884AbcFTUHj (ORCPT ); Mon, 20 Jun 2016 16:07:39 -0400 From: Davidlohr Bueso To: peterz@infradead.org, mingo@kernel.org Cc: davem@davemloft.net, cw00.choi@samsung.com, dougthompson@xmission.com, bp@alien8.de, mchehab@osg.samsung.com, gregkh@linuxfoundation.org, pfg@sgi.com, jikos@kernel.org, hans.verkuil@cisco.com, awalls@md.metrocast.net, dledford@redhat.com, sean.hefty@intel.com, kys@microsoft.com, heiko.carstens@de.ibm.com, James.Bottomley@HansenPartnership.com, sumit.semwal@linaro.org, schwidefsky@de.ibm.com, linux-kernel@vger.kernel.org, dave@stgolabs.net, Hal Rosenstock , Davidlohr Bueso Subject: [PATCH 08/12] infiniband: Employ atomic_fetch_inc() Date: Mon, 20 Jun 2016 13:06:00 -0700 Message-Id: <1466453164-13185-9-git-send-email-dave@stgolabs.net> X-Mailer: git-send-email 2.6.6 In-Reply-To: <1466453164-13185-1-git-send-email-dave@stgolabs.net> References: <1466453164-13185-1-git-send-email-dave@stgolabs.net> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now that we have fetch_inc() we can stop using inc_return() - 1. These are very similar to the existing OP-RETURN primitives we already have, except they return the value of the atomic variable _before_ modification. Cc: Doug Ledford Cc: Sean Hefty Cc: Hal Rosenstock Signed-off-by: Davidlohr Bueso --- drivers/infiniband/hw/cxgb4/device.c | 3 +-- drivers/infiniband/hw/hfi1/verbs.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/infiniband/hw/cxgb4/device.c b/drivers/infiniband/hw/cxgb4/device.c index ae2e8b23d2dd..a32959fa2c82 100644 --- a/drivers/infiniband/hw/cxgb4/device.c +++ b/drivers/infiniband/hw/cxgb4/device.c @@ -111,8 +111,7 @@ void c4iw_log_wr_stats(struct t4_wq *wq, struct t4_cqe *cqe) if (!wq->rdev->wr_log) return; - idx = (atomic_inc_return(&wq->rdev->wr_log_idx) - 1) & - (wq->rdev->wr_log_size - 1); + idx = atomic_fetch_inc(&wq->rdev->wr_log_idx) & (wq->rdev->wr_log_size - 1); le.poll_sge_ts = cxgb4_read_sge_timestamp(wq->rdev->lldi.ports[0]); getnstimeofday(&le.poll_host_ts); le.valid = 1; diff --git a/drivers/infiniband/hw/hfi1/verbs.c b/drivers/infiniband/hw/hfi1/verbs.c index 849c4b9399d4..9ba311b53085 100644 --- a/drivers/infiniband/hw/hfi1/verbs.c +++ b/drivers/infiniband/hw/hfi1/verbs.c @@ -261,8 +261,7 @@ static void wss_advance_clean_counter(void) * wss.clean_entry. The table size, wss.num_entries, * is always a power-of-2. */ - entry = (atomic_inc_return(&wss.clean_entry) - 1) - & (wss.num_entries - 1); + entry = atomic_fetch_inc(&wss.clean_entry) & (wss.num_entries - 1); /* clear the entry and count the bits */ bits = xchg(&wss.entries[entry], 0); -- 2.6.6