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

Brad Figg brad.figg at canonical.com
Wed Nov 17 17:35:16 GMT 2010


On 11/11/2010 06:24 AM, 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
>
> 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
>
> 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>
> ---
>   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);
>

Applied to Maverick master branch.

-- 
Brad Figg brad.figg at canonical.com http://www.canonical.com



More information about the kernel-team mailing list