On (27/10/10 22:39), Matt Johnson wrote: > Adding a patch to linux-omap-2.6.36rc for beagleboard. Patch is adapted > from one submitted by Mark Crichton to the Beagleboard Google Group > (see > http://groups.google.com/group/beagleboard/browse_thread/thread/92d41bb344f8939b?fwc=1). > BeagleBoard xM now uses the OMAP's die ID as a MAC instead of generating a > random one > (since it doesn't have an EEPROM to store it), so you have a consistent MAC > across boots. > > Signed-off-by: Matt Johnson <[email protected]>
Thank you for your contribution. Your patch looks good however you need to bump the PR for the recipe. Please resend the patch with PR update included Thanks -Khem > > --- > ...e-beagleboard-xm-a-consistent-MAC-address.patch | 82 > ++++++++++++++++++++ > recipes/linux/linux-omap_2.6.36rc.bb | 1 + > 2 files changed, 83 insertions(+), 0 deletions(-) > create mode 100644 > recipes/linux/linux-omap-2.6.36rc/0008-give-the-beagleboard-xm-a-consistent-MAC-address.patch > > diff --git > a/recipes/linux/linux-omap-2.6.36rc/0008-give-the-beagleboard-xm-a-consistent-MAC-address.patch > > b/recipes/linux/linux-omap-2.6.36rc/0008-give-the-beagleboard-xm-a-consistent-MAC-address.patch > new file mode 100644 > index 0000000..0526e0d > --- /dev/null > +++ > b/recipes/linux/linux-omap-2.6.36rc/0008-give-the-beagleboard-xm-a-consistent-MAC-address.patch > @@ -0,0 +1,82 @@ > +From 60ec781c775e8413ef8ca521b63a07ba9ed2f4aa Mon Sep 17 00:00:00 2001 > +From: Matt Johnson <[email protected]> > +Date: Wed, 27 Oct 2010 22:17:36 -0500 > +Subject: [PATCH] Give BeagleBoard xM a consistent MAC address > + > + Adapting the patch submitted by Mark Crichton to the Beagleboard Google > Group > + (see > http://groups.google.com/group/beagleboard/browse_thread/thread/92d41bb344f8939b?fwc=1) > + The Beagleboard xM includes an smsc95xx ethernet interface attached to the > DM3730 via USB. > + The Beagleboard lacks an EEPROM to store the MAC address, so the driver > generates a random > + MAC address on every boot. This patch instead uses the OMAP's die ID as > the MAC address > + (modifying a couple bits to make it a valid MAC), so that the MAC is > consistent across boots. > + A consistent MAC is important if the Beagleboard is to be used on a network > with MAC filtering > + and/or static IP addresses. > + > + Signed-off-by: Matt Johnson <[email protected]> > + > +--- > + drivers/net/usb/smsc95xx.c | 36 +++++++++++++++++++++++++++++++++++- > + 1 files changed, 35 insertions(+), 1 deletions(-) > + > +diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c > +index 12a3c88..1219bb6 100644 > +--- a/drivers/net/usb/smsc95xx.c > ++++ b/drivers/net/usb/smsc95xx.c > +@@ -29,6 +29,9 @@ > + #include <linux/crc32.h> > + #include <linux/usb/usbnet.h> > + #include <linux/slab.h> > ++#if defined (CONFIG_MACH_OMAP_BEAGLE) > ++#include <mach/id.h> > ++#endif > + #include "smsc95xx.h" > + > + #define SMSC_CHIPNAME "smsc95xx" > +@@ -639,6 +642,14 @@ static int smsc95xx_ioctl(struct net_device *netdev, > struct ifreq *rq, int cmd) > + > + static void smsc95xx_init_mac_address(struct usbnet *dev) > + { > ++#if defined (CONFIG_MACH_OMAP3_BEAGLE) > ++ u32 i; > ++ struct omap_die_id odi; > ++ union { > ++ u32 idi[2]; > ++ u8 id[8]; > ++ } cpu; > ++#endif > + /* try reading mac address from EEPROM */ > + if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN, > + dev->net->dev_addr) == 0) { > +@@ -648,7 +659,30 @@ static void smsc95xx_init_mac_address(struct usbnet > *dev) > + return; > + } > + } > +- > ++#if defined (CONFIG_MACH_OMAP3_BEAGLE) > ++ /* The BeagleBoard xM has a smsm95xx, but no EEPROM. */ > ++ /* Rather than just come up with a random MAC address, we'll */ > ++ /* Use a hash of our DM3730's die ID, so at least it's consistent */ > ++ /* between boots. */ > ++ > ++ /* Look at section 1.5.2 of DM3730 documentation */ > ++ omap_get_die_id(&odi); > ++ cpu.idi[0] = odi.id_0; > ++ cpu.idi[1] = odi.id_1; > ++ /* Now interpret the die id as a MAC address */ > ++ /* We need to clear the multicast bit */ > ++ cpu.id[0] &= 0xfe; > ++ /* Set local assignment bit (IEEE802) */ > ++ cpu.id[1] |= 0x02; > ++ > ++ for(i = 0; i < ETH_ALEN; i++) { > ++ dev->net->dev_addr[i] = cpu.id[i]; > ++ } > ++ //TODO: Do error checking, etc. on die_id. > ++ //TODO: Allow the user to set MAC after boot. > ++ //TODO: Allow user to select whether they want this behavior or not */ > ++ return; > ++#endif > + /* no eeprom, or eeprom values are invalid. generate random MAC */ > + random_ether_addr(dev->net->dev_addr); > + netif_dbg(dev, ifup, dev->net, "MAC address set to > random_ether_addr\n"); > +-- > +1.6.3.3 > + > diff --git a/recipes/linux/linux-omap_2.6.36rc.bb > b/recipes/linux/linux-omap_2.6.36rc.bb > index 64200e1..c79ffa9 100644 > --- a/recipes/linux/linux-omap_2.6.36rc.bb > +++ b/recipes/linux/linux-omap_2.6.36rc.bb > @@ -25,6 +25,7 @@ SRC_URI_append = " \ > > file://0005-mmc-don-t-display-single-block-read-console-messages.patch \ > file://0006-MTD-silence-ecc-errors-on-mtdblock0.patch \ > > file://0007-OMAP-DSS2-OMAPFB-use-phys_to_virt-for-RAM-mappings.patch \ > + > file://0008-give-the-beagleboard-xm-a-consistent-MAC-address.patch \ > " > > SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ > -- > 1.6.3.3 > > > _______________________________________________ > Openembedded-devel mailing list > [email protected] > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
