From patchwork Thu Jul 19 15:32:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bartosz Golaszewski X-Patchwork-Id: 10534805 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 394436053F for ; Thu, 19 Jul 2018 15:33:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2243029B5A for ; Thu, 19 Jul 2018 15:33:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0D94629C7E; Thu, 19 Jul 2018 15:33:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 8F67029CAF for ; Thu, 19 Jul 2018 15:33:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=mD3/DCzLij718phCe4sIE7tiUx0POMtU7t93iuzXf9U=; b=fUueGIfUykwtF6NuDwyRT0qpIx OVgyQqlebB9ZSlUBZCISPPXjazYwJra/qD/DO2VuKztSgCHzBRxHbDdRB5QA9a6shGcg68fuwArCR KrfcqoCr6CuusKQsI8mr5xn80BkiD5dEi5FZ2svRnGaG27XTG1DBdigdvgo5VHTmbGg0yIBh9WtHB knHpHeAroHE0w8fe1CKko6Nth4bWfUzF27dU5bVgc4GVXdO2BKOreh9m2Sk5OFxx2tM4nPUTtTkmX 4PO9sYJWvJBXvFAPKvbdP7p719h4FG+3jEsVNPrPJQdMWta9pbAgM3+vnG+Z40uaapFUobu4mJkz6 erXyoz/w==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fgAvU-0004NY-ND; Thu, 19 Jul 2018 15:33:08 +0000 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fgAvK-0004Df-Ki for linux-arm-kernel@lists.infradead.org; Thu, 19 Jul 2018 15:32:59 +0000 Received: by mail-wm0-x242.google.com with SMTP id z13-v6so6850800wma.5 for ; Thu, 19 Jul 2018 08:32:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ILOXH9pVEXmkUqoRI158DGfYu5yW/dY65Iz0Pm4CfIk=; b=wpD1zpgjNoJzc7gGJjnsRMVNmmArkWJDssEGA6Xxw6MvRaJpoUQgIfU+2Zf7Tv9ea+ +hs20Hr3lNDgxMC4Pm5WTE3m0f9YBGg0JGJh6pU07ne4k827KjRJJ+XJhlb6s99Uo3Tx o/vIk/ZmWILR4XMzAuHQbK4XvIyWg2/zh7SbwHMhkyCWFnIG83EavP1lKQe5kJ+2K77j vyGa8aLI2mxaOPXJpM/pnWXyY7EG8lNTdcy27le7jKRVrnu4U7tsXAeI/uYJKS9kv3yq tC8lCz4hVLHCRwM34C9ecBjwTlBnuGJ/hQhWFZ7ixHBGFM21AfZvt7Bs0d5y9RPiUFUE So3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ILOXH9pVEXmkUqoRI158DGfYu5yW/dY65Iz0Pm4CfIk=; b=Jgi2P/VY7Lfj6+l4a+WFvrvTy1NOzfQFhhLQkguKGGOdND4mnAMSoCI0FBCpBh+KEG gB25L3Dtb9MmA0TxheEMG8t371N46uFQy2Rh05gUSjU1DY+ga6WUJbWyBoFf6XAXyoWy MPUC9ColeRAbP4NGq186elIBNtx3gdcNNIMDFvl3luF6H91ybJ0uk7aIPMuxuiC/rUmM DbBzfSHICd+qlvX4Ql+j1vmopb19KxT/SLlJCVn5EYmX9A8XYvRr5KCuDp+DYr3NjLfL ttZtdmBu9tVxOi1BCh/GFPhOu5jMgfOXdwAcxL8ENCaXBYaF+axD24F52smpLnipPtNt uAwA== X-Gm-Message-State: AOUpUlGkzO6xDGbcJOOe1mew+MupKj0qktKPdo78IlS8K3TdchcBPW9F bPcmRSBhKYSCQx6n1e7o/iGc3g== X-Google-Smtp-Source: AAOMgpfr+hiJTPGwnqvPCPW7pxNq4Y5VWbASiEBQ88EY7/i47Sed8+2rfaZXjnoIwDTOc+d0lS7TgQ== X-Received: by 2002:a1c:28c2:: with SMTP id o185-v6mr4577523wmo.40.1532014371999; Thu, 19 Jul 2018 08:32:51 -0700 (PDT) Received: from brgl-bgdev.baylibre.local (AStLambert-681-1-40-185.w90-86.abo.wanadoo.fr. [90.86.159.185]) by smtp.gmail.com with ESMTPSA id w9-v6sm8914090wrr.77.2018.07.19.08.32.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 Jul 2018 08:32:51 -0700 (PDT) From: Bartosz Golaszewski To: Sekhar Nori , Kevin Hilman , Russell King , Grygorii Strashko , "David S . Miller" , Srinivas Kandagatla , Lukas Wunner , Rob Herring , Florian Fainelli , Dan Carpenter , Ivan Khoronzhuk , David Lechner , Greg Kroah-Hartman , Andrew Lunn Subject: [PATCH v3 1/3] net: split eth_platform_get_mac_address() into subroutines Date: Thu, 19 Jul 2018 17:32:41 +0200 Message-Id: <20180719153243.20944-2-brgl@bgdev.pl> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180719153243.20944-1-brgl@bgdev.pl> References: <20180719153243.20944-1-brgl@bgdev.pl> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180719_083258_686778_BDB4F7A0 X-CRM114-Status: GOOD ( 14.80 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: netdev@vger.kernel.org, linux-omap@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Bartosz Golaszewski MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP From: Bartosz Golaszewski We want do add more sources from which to read the MAC address. In order to avoid bloating this function too much, start by splitting it into subroutines, each of which takes care of reading the MAC from one source. Signed-off-by: Bartosz Golaszewski --- net/ethernet/eth.c | 48 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index ee28440f57c5..cf54cdf042b7 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -525,26 +525,52 @@ unsigned char * __weak arch_get_platform_mac_address(void) return NULL; } -int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr) +static int mac_address_from_of(struct device *dev, u8 *mac_addr) { const unsigned char *addr; - struct device_node *dp; + struct device_node *np; - if (dev_is_pci(dev)) - dp = pci_device_to_OF_node(to_pci_dev(dev)); - else - dp = dev->of_node; + np = dev_is_pci(dev) ? pci_device_to_OF_node(to_pci_dev(dev)) + : dev->of_node; - addr = NULL; - if (dp) - addr = of_get_mac_address(dp); - if (!addr) - addr = arch_get_platform_mac_address(); + if (!np) + return -ENODEV; + addr = of_get_mac_address(np); if (!addr) return -ENODEV; + if (!addr || !is_valid_ether_addr(addr)) + return -ENODEV; + + ether_addr_copy(mac_addr, addr); + return 0; +} + +static int mac_address_from_arch(u8 *mac_addr) +{ + const unsigned char *addr; + + addr = arch_get_platform_mac_address(); + if (!addr || !is_valid_ether_addr(addr)) + return -ENODEV; + ether_addr_copy(mac_addr, addr); return 0; } + +int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr) +{ + int rv; + + rv = mac_address_from_of(dev, mac_addr); + if (!rv) + return 0; + + rv = mac_address_from_arch(mac_addr); + if (!rv) + return 0; + + return -ENODEV; +} EXPORT_SYMBOL(eth_platform_get_mac_address);