From patchwork Tue Mar 22 10:00:02 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Lothar_Wa=C3=9Fmann?= X-Patchwork-Id: 87884 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 EAD6B1007D1 for ; Tue, 22 Mar 2011 21:00:11 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753642Ab1CVKAG (ORCPT ); Tue, 22 Mar 2011 06:00:06 -0400 Received: from mail.karo-electronics.de ([81.173.242.67]:53113 "EHLO mail.karo-electronics.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751754Ab1CVKAF (ORCPT ); Tue, 22 Mar 2011 06:00:05 -0400 From: =?utf-8?q?Lothar=20Wa=C3=9Fmann?= To: Cc: Shawn Guo , , =?utf-8?q?Lothar=20Wa=C3=9Fmann?= Subject: [PATCH 4/4] drivers/net/fec: Don't mess with configured MAC addresses. Date: Tue, 22 Mar 2011 11:00:02 +0100 Message-Id: X-Mailer: git-send-email 1.5.6.5 In-Reply-To: <49cf2dff25189eb7b7a0ff9eaceefab359f08b2e.1300724245.git.LW@KARO-electronics.de> References: <20110322092256.GG28098@S2100-06.ap.freescale.net> <49cf2dff25189eb7b7a0ff9eaceefab359f08b2e.1300724245.git.LW@KARO-electronics.de> In-Reply-To: <49cf2dff25189eb7b7a0ff9eaceefab359f08b2e.1300724245.git.LW@KARO-electronics.de> References: <4034db082a05693893d24f4b0db4063b84d8c268.1300724245.git.LW@KARO-electronics.de>, MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The FEC driver currently uses the MAC address assigned to the first interface incremented by one for the second interface. Change this to be able to configure distinct MAC addresses via platform_data. Signed-off-by: Lothar Waßmann Acked-by: --- drivers/net/fec.c | 9 ++------- 1 files changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/net/fec.c b/drivers/net/fec.c index 3666524..9d89e99 100644 --- a/drivers/net/fec.c +++ b/drivers/net/fec.c @@ -736,7 +736,7 @@ static void __inline__ fec_get_mac(struct net_device *ndev) { struct fec_enet_private *fep = netdev_priv(ndev); struct fec_platform_data *pdata = fep->pdev->dev.platform_data; - unsigned char *iap, tmpaddr[ETH_ALEN]; + unsigned char iap[ETH_ALEN], tmpaddr[ETH_ALEN]; /* * try to get mac address in following order: @@ -744,7 +744,10 @@ static void __inline__ fec_get_mac(struct net_device *ndev) * 1) module parameter via kernel command line in form * fec.macaddr=0x00,0x04,0x9f,0x01,0x30,0xe0 */ - iap = macaddr; + if (fep->pdev->id == 0) + memcpy(iap, macaddr, ETH_ALEN); + else + memset(iap, 0, ETH_ALEN); /* * 2) from flash or fuse (via platform data) @@ -767,14 +770,10 @@ static void __inline__ fec_get_mac(struct net_device *ndev) be32_to_cpu(readl(fep->hwp + FEC_ADDR_LOW)); *((unsigned short *) &tmpaddr[4]) = be16_to_cpu(readl(fep->hwp + FEC_ADDR_HIGH) >> 16); - iap = &tmpaddr[0]; + memcpy(iap, tmpaddr, ETH_ALEN); } memcpy(ndev->dev_addr, iap, ETH_ALEN); - - /* Adjust MAC if using macaddr */ - if (iap == macaddr) - ndev->dev_addr[ETH_ALEN-1] = macaddr[ETH_ALEN-1] + fep->pdev->id; } /* ------------------------------------------------------------------------- */