Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Apr 2014 08:28:37 -0600
From:      Ian Lepore <ian@FreeBSD.org>
To:        "Bjoern A. Zeeb" <bz@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r264646 - head/sys/dev/netfpga10g/nf10bmac
Message-ID:  <1397831317.1124.301.camel@revolution.hippie.lan>
In-Reply-To: <201404181421.s3IELAH0082972@svn.freebsd.org>
References:  <201404181421.s3IELAH0082972@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 2014-04-18 at 14:21 +0000, Bjoern A. Zeeb wrote:
> Author: bz
> Date: Fri Apr 18 14:21:10 2014
> New Revision: 264646
> URL: http://svnweb.freebsd.org/changeset/base/264646
> 
> Log:
>   Now that I figured out where the ethernet addresses come from
>   on NetFPGA-10G, assign one to the interface by default in a very
>   similar way.
>   
>   MFC after:		6 days
>   X-Easter-Egg-Hunt:	yes
> 
> Modified:
>   head/sys/dev/netfpga10g/nf10bmac/if_nf10bmac.c
> 
> Modified: head/sys/dev/netfpga10g/nf10bmac/if_nf10bmac.c
> ==============================================================================
> --- head/sys/dev/netfpga10g/nf10bmac/if_nf10bmac.c	Fri Apr 18 12:51:30 2014	(r264645)
> +++ head/sys/dev/netfpga10g/nf10bmac/if_nf10bmac.c	Fri Apr 18 14:21:10 2014	(r264646)
> @@ -446,7 +446,25 @@ static int
>  nf10bmac_reset(struct nf10bmac_softc *sc)
>  {
>  
> -	/* Currently we cannot do anything. */
> +	/*
> +	 * If we do not have an ether address set, initialize to the same
> +	 * OUI as NetFPGA-10G Linux driver does (which luckily seems
> +	 * unallocated).  We just change the NIC specific part from
> +	 * the slightly long "\0NF10C0" to "\0NFBSD".
> +	 * Oh and we keep the way of setting it from a string as they do.
> +	 * It's an amazing way to hide it.
> +	 * XXX-BZ If NetFPGA gets their own OUI we should fix this.
> +	 */
> +	if (sc->nf10bmac_eth_addr[0] == 0x00 &&
> +	    sc->nf10bmac_eth_addr[1] == 0x00 &&
> +	    sc->nf10bmac_eth_addr[2] == 0x00 &&
> +	    sc->nf10bmac_eth_addr[3] == 0x00 &&
> +	    sc->nf10bmac_eth_addr[4] == 0x00 &&
> +	    sc->nf10bmac_eth_addr[5] == 0x00) {
> +		memcpy(&sc->nf10bmac_eth_addr, "\0NFBSD", ETHER_ADDR_LEN);
> +		sc->nf10bmac_eth_addr[5] += sc->nf10bmac_unit;
> +	}
> +
>  	return (0);
>  }
>  
> 

For other drivers/socs where we need to cook up an address on the fly,
we've used "bsd" as the OUI and a 24-bit random for the low order.
Aside from the nice aesthetic, 'bsd' has the "locally administered" bit
set and thus is g'teed to not clash with any globally assigned OUI.

-- Ian





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1397831317.1124.301.camel>