[Applied] [Maverick SRU][master][ti-omap4]: [PATCH] smsc95xx: generate random MAC address once, not every ifup
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