[Maverick SRU][master][ti-omap4]: [PATCH] smsc95xx: generate random MAC address once, not every ifup

Stefan Bader stefan.bader at canonical.com
Fri Nov 12 08:38:18 GMT 2010


On 11/11/2010 03:24 PM, Ricardo Salveti de Araujo wrote:
> SRU Justification:
> 
> Impact: The smsc95xx driver generates a new random MAC address on every
> ifdown/up instead of only one during driver's init, and doesn't let the user to
> set up the mac address using known methods like ifconfig usb0 hw ether <mac>.
> 
> Fix: Just move the init_mac_address function to bind instead of reset.
> 
> Testcase: The interface should keep the same generated mac address even when
> giving ifdown/up, and the user should be able to set up the mac address using
> 'ifconfig usb0 hw ether <mac>.
> 
> Patch is already upstream as f4e8ab7, and is tested already with a compiled
> kernel deb with the fix included.  
> 
> BugLink: https://bugs.launchpad.net/bugs/673504 and https://bugs.launchpad.net/bugs/673509
> 
Just minor formatting issues. The BugLink should be two lines and go into the
patch itself.

> From: Bernard Blackham <bernard at largestprime.net>
> Date: Tue, 19 Oct 2010 10:16:39 +1100
> Subject: [PATCH] smsc95xx: generate random MAC address once, not every ifup
> 
BugLink: https://bugs.launchpad.net/bugs/673504
BugLink: https://bugs.launchpad.net/bugs/673509

> The smsc95xx driver currently generates a new random MAC address
> every time the interface is brought up. This makes it impossible to
> override using the standard `ifconfig hw ether` approach.
> 
> Past patches tried to make the MAC address a module parameter or
> base it off the die ID, but it seems to me much simpler (and
> hopefully less controversial) to stick with the current random
> generation scheme, but allow the user to change the address.
> 
> This patch does exactly that - it moves the random address
> generation from smsc95xx_reset() into smsc95xx_bind(), so that it is
> done once on module load, not on every ifup. The user can then
> override this using the standard mechanisms.
> 
> Applies against 2.6.35 and linux-2.6 head.
> 
> Signed-off-by: Bernard Blackham <b-omap at largestprime.net>
> Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti at canonical.com>
Acked-by: Stefan Bader <stefan.bader at canonical.com>

> ---
>  drivers/net/usb/smsc95xx.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
> index 12a3c88..65cb1ab 100644
> --- a/drivers/net/usb/smsc95xx.c
> +++ b/drivers/net/usb/smsc95xx.c
> @@ -805,8 +805,6 @@ static int smsc95xx_reset(struct usbnet *dev)
>  		return ret;
>  	}
>  
> -	smsc95xx_init_mac_address(dev);
> -
>  	ret = smsc95xx_set_mac_address(dev);
>  	if (ret < 0)
>  		return ret;
> @@ -1047,6 +1045,8 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf)
>  	pdata->use_tx_csum = DEFAULT_TX_CSUM_ENABLE;
>  	pdata->use_rx_csum = DEFAULT_RX_CSUM_ENABLE;
>  
> +	smsc95xx_init_mac_address(dev);
> +
>  	/* Init all registers */
>  	ret = smsc95xx_reset(dev);
>  




More information about the kernel-team mailing list