From patchwork Fri Nov 14 20:20:09 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Martin K. Petersen" X-Patchwork-Id: 410997 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 06988140082 for ; Sat, 15 Nov 2014 07:20:25 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753417AbaKNUUT (ORCPT ); Fri, 14 Nov 2014 15:20:19 -0500 Received: from userp1040.oracle.com ([156.151.31.81]:43726 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752085AbaKNUUS (ORCPT ); Fri, 14 Nov 2014 15:20:18 -0500 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id sAEKKDYl018979 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 14 Nov 2014 20:20:14 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id sAEKKCEb007109 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 14 Nov 2014 20:20:13 GMT Received: from abhmp0006.oracle.com (abhmp0006.oracle.com [141.146.116.12]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id sAEKKBDY002891; Fri, 14 Nov 2014 20:20:12 GMT Received: from mojo.mkp.net (/141.144.6.238) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 14 Nov 2014 12:20:11 -0800 To: Sergei Shtylyov Cc: "Martin K. Petersen" , netdev@vger.kernel.org, linux.nics@intel.com Subject: Re: [PATCH] ixgbe: Look up MAC address in Open Firmware From: "Martin K. Petersen" Organization: Oracle Corporation References: <54666106.9000609@cogentembedded.com> Date: Fri, 14 Nov 2014 15:20:09 -0500 In-Reply-To: <54666106.9000609@cogentembedded.com> (Sergei Shtylyov's message of "Fri, 14 Nov 2014 23:07:34 +0300") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 X-Source-IP: acsinet22.oracle.com [141.146.126.238] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org >>>>> "Sergei" == Sergei Shtylyov writes: >> +#ifdef CONFIG_OF >> + ixgbe_of_mac_addr(adapter); >> +#endif Sergei> Eww... why not define the following above instead: Sergei> #else Sergei> static inline void ixgbe_of_mac_addr(struct ixgbe_adapter Sergei> *adapter) {} Sergei> #endif I don't care much either way. But we might as well do this, then, and shave off an ifdef... commit 01e25f145972563ee87ebf85b7cb02a4ff8fce3b Author: Martin K. Petersen Date: Wed Nov 12 20:47:42 2014 -0500 ixgbe: Look up MAC address in Open Firmware Attempt to look up the MAC address in Open Firmware on systems that support it. If the "local-mac-address" property is not valid resort to using the IDPROM value. Signed-off-by: Martin K. Petersen --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index d2df4e3d1032..0e45a43172eb 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -50,6 +50,11 @@ #include #include +#ifdef CONFIG_OF +#include +#include +#endif + #include "ixgbe.h" #include "ixgbe_common.h" #include "ixgbe_dcb_82599.h" @@ -7960,6 +7965,31 @@ int ixgbe_wol_supported(struct ixgbe_adapter *adapter, u16 device_id, } /** + * ixgbe_of_mac_addr - Look up MAC address in Open Firmware + * @adapter: Pointer to adapter struct + */ +static void ixgbe_of_mac_addr(struct ixgbe_adapter *adapter) +{ +#ifdef CONFIG_OF + struct device_node *dp = pci_device_to_OF_node(adapter->pdev); + struct ixgbe_hw *hw = &adapter->hw; + const unsigned char *addr; + int len; + + addr = of_get_property(dp, "local-mac-address", &len); + if (addr && len == 6) { + e_dev_info("Using OpenPROM MAC address\n"); + memcpy(hw->mac.perm_addr, addr, 6); + } + + if (!is_valid_ether_addr(hw->mac.perm_addr)) { + e_dev_info("Using IDPROM MAC address\n"); + memcpy(hw->mac.perm_addr, idprom->id_ethaddr, 6); + } +#endif +} + +/** * ixgbe_probe - Device Initialization Routine * @pdev: PCI device information struct * @ent: entry in ixgbe_pci_tbl @@ -8223,6 +8253,8 @@ skip_sriov: goto err_sw_init; } + ixgbe_of_mac_addr(adapter); + memcpy(netdev->dev_addr, hw->mac.perm_addr, netdev->addr_len); if (!is_valid_ether_addr(netdev->dev_addr)) {