From patchwork Tue Aug 25 08:19:55 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Govindarajulu Varadarajan <_govind@gmx.com> X-Patchwork-Id: 510407 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 6A87C1401DA for ; Tue, 25 Aug 2015 18:20:41 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755031AbbHYIUd (ORCPT ); Tue, 25 Aug 2015 04:20:33 -0400 Received: from mout.gmx.net ([212.227.15.15]:57396 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752371AbbHYIUa (ORCPT ); Tue, 25 Aug 2015 04:20:30 -0400 Received: from ws.cisco.cisco ([72.163.220.29]) by mail.gmx.com (mrgmx002) with ESMTPSA (Nemesis) id 0LtrKX-1YlUq82XIL-011Awa; Tue, 25 Aug 2015 10:20:22 +0200 From: Govindarajulu Varadarajan <_govind@gmx.com> To: davem@davemloft.net, netdev@vger.kernel.org Cc: ssujith@cisco.com, benve@cisco.com, Govindarajulu Varadarajan <_govind@gmx.com> Subject: [PATCH net-next] enic: reduce ioread in devcmd2 Date: Tue, 25 Aug 2015 13:49:55 +0530 Message-Id: <1440490795-6888-1-git-send-email-_govind@gmx.com> X-Mailer: git-send-email 2.5.0 X-Provags-ID: V03:K0:chbBewE3ea23DGId/T+xwIicxppingUA0EEvnDUKZVraa4gUjo4 4eUp63rXoCcySGqTMoklhqrND89HJ4DIDKSS6BU56W9HEo2qEcz5iYMn+v1YvCm7HSIRsHE 1c1j2MvD6bz3zBALaUyG/N0HFYxwCUJhfNzBk4RGhPmaHTGbC5bTbAvcr4sicPCWTRBNsZy p1Ipigs7DL7jXBX7HU+wA== X-UI-Out-Filterresults: notjunk:1; V01:K0:6wCmmYyPlOI=:dtU5CJdeM6GEWKyiA1GZg/ Jcy/rcUOhj3h8Ip2I+eatCz+fH9wBKGLhncgXAqBxr5HqhR4vLxjpLPr9hWftTtL4RHfTgCkU dWsVUtb/7iamETkAquFphHZIrJPvEfkgPV8ekL/vGsGRyfrRVv0PHUwNsj47t8DN6uVEVvgnu k5HbThNV5TJyAIxn9KeRxpLBPAI/OyjLypUSyqRJYKL1tTX1I/AQ2Ve8WxCkdxUdJ2AX6dQW4 59kWq0bt/wJUebcw5HPnL5ZKL5K45oTdBeXF8NReughj/u4pCT0Jq1LOcYfUzQAILnRyauHbt gC5Sk6HqcChQZ2YhD4l5zdhBiPcCQa/WKYwl1Yp/q2p1gyxQHoIe8dPy6QIq/s3koSITVCGKg 1jKuzsiQHnMXTqOudRKrtSnbCOC4aFkSPJpa9Wp9ApiY/jD5x+sQ/P8JcJ8QjlCm5vhdcpOWW AlI0331yLBZrstHIwG85wB6idIQpnA0v67PmcizL9plrT63SiGvow/vnpFF5pY4dbITo0SaSb NfSeY4S5DjS8m4RwG6BzH01UYrcwHD+990hEqoBkROaQBtisfwRyFwO20w1s5VNif2YCvsBbh TjW5U/XKJQkw53/H2/HjDONGLL3HDOtNszH+ylTc7zq5Sk9HBNOILE03AAmWe8XtsJFZAIzuz tc4vPG8gsy6PRPnbcXdd214BYUKFcrQOTcMCwHg4B0KkYe8C9B5agWRSsPBuyB2ikmrlX4pFl 2YL1DfhwuaR7xUpI Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org posted_index is RO in firmware. We need not do ioread everytime to get posted index. Store posted index locally. Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com> --- drivers/net/ethernet/cisco/enic/vnic_dev.c | 8 +++++--- drivers/net/ethernet/cisco/enic/vnic_wq.h | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/cisco/enic/vnic_dev.c b/drivers/net/ethernet/cisco/enic/vnic_dev.c index 19a49a6..a5fc073 100644 --- a/drivers/net/ethernet/cisco/enic/vnic_dev.c +++ b/drivers/net/ethernet/cisco/enic/vnic_dev.c @@ -301,12 +301,12 @@ static int _vnic_dev_cmd2(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, struct devcmd2_result *result = dc2c->result + dc2c->next_result; unsigned int i; int delay, err; - u32 fetch_index, posted, new_posted; + u32 fetch_index, new_posted; + u32 posted = dc2c->posted; - posted = ioread32(&dc2c->wq_ctrl->posted_index); fetch_index = ioread32(&dc2c->wq_ctrl->fetch_index); - if (posted == 0xFFFFFFFF || fetch_index == 0xFFFFFFFF) + if (fetch_index == 0xFFFFFFFF) return -ENODEV; new_posted = (posted + 1) % DEVCMD2_RING_SIZE; @@ -331,6 +331,7 @@ static int _vnic_dev_cmd2(struct vnic_dev *vdev, enum vnic_devcmd_cmd cmd, */ wmb(); iowrite32(new_posted, &dc2c->wq_ctrl->posted_index); + dc2c->posted = new_posted; if (dc2c->cmd_ring[posted].flags & DEVCMD2_FNORESULT) return 0; @@ -402,6 +403,7 @@ static int vnic_dev_init_devcmd2(struct vnic_dev *vdev) enic_wq_init_start(&vdev->devcmd2->wq, 0, fetch_index, fetch_index, 0, 0); + dc2c->posted = fetch_index; vnic_wq_enable(&vdev->devcmd2->wq); err = vnic_dev_alloc_desc_ring(vdev, &vdev->devcmd2->results_ring, diff --git a/drivers/net/ethernet/cisco/enic/vnic_wq.h b/drivers/net/ethernet/cisco/enic/vnic_wq.h index 8944af9..0120961 100644 --- a/drivers/net/ethernet/cisco/enic/vnic_wq.h +++ b/drivers/net/ethernet/cisco/enic/vnic_wq.h @@ -97,6 +97,7 @@ struct devcmd2_controller { int color; struct vnic_dev_ring results_ring; struct vnic_wq wq; + u32 posted; }; static inline unsigned int vnic_wq_desc_avail(struct vnic_wq *wq)