From patchwork Sat Oct 15 01:28:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 682479 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 3swn1z4gdVz9sBr for ; Sat, 15 Oct 2016 12:29:27 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b=BbG4E6Vy; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753684AbcJOB3Y (ORCPT ); Fri, 14 Oct 2016 21:29:24 -0400 Received: from mail-pf0-f169.google.com ([209.85.192.169]:35683 "EHLO mail-pf0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752835AbcJOB3F (ORCPT ); Fri, 14 Oct 2016 21:29:05 -0400 Received: by mail-pf0-f169.google.com with SMTP id s8so56384639pfj.2 for ; Fri, 14 Oct 2016 18:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=61OSgYoSUlMFjhz3wrA7aGv5hHhJwx4f9w4i2tDl+SM=; b=BbG4E6VyI9nl7tl3WBHmZ+d2Zlr+wKRi86F2JRoTeMFOGSFSk9xSeNTelCL1+wQQM/ d+IutyFcbT4G+7iuKmzG+yv4/8dchP09Fataido0+bqdOiaWAnnD2caC0cdpm2Eb1vs2 VAwWNBButgc5j/Ow+M0rGrmo8jKSnwajJyzi8= 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=61OSgYoSUlMFjhz3wrA7aGv5hHhJwx4f9w4i2tDl+SM=; b=YD9wJEUNV2Tx4rdL6VQs6OFDdx3WzgFv0MXaLLMlGiUyYtMeKtxRalBvtuwsq4+uid inbxnaUNXhgLmuR0dG2xYhLtxXO4IKLAysu6P1zQALL7a6WHfcgi95PxX7fIGKkM/Urn W/P6AJZ7xQ2bH49n0OmV0uuZODORVArMth7SJPmm4jkbBl9ZXCjt2bTWDxCvl4R/78zT N02ETnhuIgiu1WEoY1UnWpVtZqDYXu8dzkHl8dvdAjdw+V5HPceFN6tqo46+bmtVx7Kt RcDO2OrAYy0PwxrSwueTQ+qCGDwVVXh0MlOTsdQUdEV4auCpQ548ZeW4SAEmIUE8yiL9 rD5Q== X-Gm-Message-State: AA6/9RmqhqGaEeEhTFTpQap49Pd8PTCIBAxq5E1WZStfT7KHUY5Z2DWhzWNewxBmwbE3v2fr X-Received: by 10.98.17.196 with SMTP id 65mr8724254pfr.55.1476494944634; Fri, 14 Oct 2016 18:29:04 -0700 (PDT) Received: from kenny.cumulusnetworks.com. ([216.129.126.126]) by smtp.googlemail.com with ESMTPSA id b88sm30193714pfe.72.2016.10.14.18.29.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 14 Oct 2016 18:29:04 -0700 (PDT) From: David Ahern To: jiri@mellanox.com, netdev@vger.kernel.org, davem@davemloft.net Cc: dledford@redhat.com, sean.hefty@intel.com, hal.rosenstock@gmail.com, linux-rdma@vger.kernel.org, j.vosburgh@gmail.com, vfalico@gmail.com, andy@greyhouse.net, jeffrey.t.kirsher@intel.com, intel-wired-lan@lists.osuosl.org, David Ahern Subject: [PATCH net-next 05/11] IB/ipoib: Flip to new dev walk API Date: Fri, 14 Oct 2016 18:28:45 -0700 Message-Id: <1476494931-31813-6-git-send-email-dsa@cumulusnetworks.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1476494931-31813-1-git-send-email-dsa@cumulusnetworks.com> References: <1476494931-31813-1-git-send-email-dsa@cumulusnetworks.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Convert ipoib_get_net_dev_match_addr to the new upper device walk API. This is just a code conversion; no functional change is intended. Signed-off-by: David Ahern --- drivers/infiniband/ulp/ipoib/ipoib_main.c | 37 +++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 5636fc3da6b8..624855ab7205 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -292,6 +292,25 @@ static struct net_device *ipoib_get_master_net_dev(struct net_device *dev) return dev; } +struct ipoib_walk_data { + const struct sockaddr *addr; + struct net_device *result; +}; + +static int ipoib_upper_walk(struct net_device *upper, void *_data) +{ + struct ipoib_walk_data *data = (struct ipoib_walk_data *)_data; + int ret = 0; + + if (ipoib_is_dev_match_addr_rcu(data->addr, upper)) { + dev_hold(upper); + data->result = upper; + ret = 1; + } + + return ret; +} + /** * Find a net_device matching the given address, which is an upper device of * the given net_device. @@ -304,27 +323,21 @@ static struct net_device *ipoib_get_master_net_dev(struct net_device *dev) static struct net_device *ipoib_get_net_dev_match_addr( const struct sockaddr *addr, struct net_device *dev) { - struct net_device *upper, - *result = NULL; - struct list_head *iter; + struct ipoib_walk_data data = { + .addr = addr, + }; rcu_read_lock(); if (ipoib_is_dev_match_addr_rcu(addr, dev)) { dev_hold(dev); - result = dev; + data.result = dev; goto out; } - netdev_for_each_all_upper_dev_rcu(dev, upper, iter) { - if (ipoib_is_dev_match_addr_rcu(addr, upper)) { - dev_hold(upper); - result = upper; - break; - } - } + netdev_walk_all_upper_dev_rcu(dev, ipoib_upper_walk, &data); out: rcu_read_unlock(); - return result; + return data.result; } /* returns the number of IPoIB netdevs on top a given ipoib device matching a