Patchwork SIS900 show warning if bogus MAC address (take 2)

login
register
mail settings
Submitter Daniele Venzano
Date Jan. 13, 2009, 6:18 p.m.
Message ID <20090113181821.GA21342@milesteg.arr>
Download mbox | patch
Permalink /patch/18267/
State Accepted
Delegated to: David Miller
Headers show

Comments

Daniele Venzano - Jan. 13, 2009, 6:18 p.m.
The attached patch modifies the sis900 driver when the MAC address
read from the hardware is invalid. As suggested, the patch now
generates a random address so that the user can go on and use
the hardware. In any case a message is also shown to warn on the
unexpected condition.
This seems to happen with newer HW implementation of the sis900
chipset, since this never came up before.

Patch is against vanilla 2.6.28 (but the driver doesn't change so often,
so it will probably apply to older/newer versions too).

See bugzilla ID 10201 and 11649 and ignore the previous patch.

Signed-off-by: Daniele Venzano <venza@brownhat.org>

--
Daniele Venzano
http://www.brownhat.org
stephen hemminger - Jan. 13, 2009, 7:06 p.m.
On Tue, 13 Jan 2009 19:18:21 +0100
Daniele Venzano <venza@brownhat.org> wrote:

> The attached patch modifies the sis900 driver when the MAC address
> read from the hardware is invalid. As suggested, the patch now
> generates a random address so that the user can go on and use
> the hardware. In any case a message is also shown to warn on the
> unexpected condition.
> This seems to happen with newer HW implementation of the sis900
> chipset, since this never came up before.
> 
> Patch is against vanilla 2.6.28 (but the driver doesn't change so often,
> so it will probably apply to older/newer versions too).
> 
> See bugzilla ID 10201 and 11649 and ignore the previous patch.
> 
> Signed-off-by: Daniele Venzano <venza@brownhat.org>
> 
> --
> Daniele Venzano
> http://www.brownhat.org
> 

It would be good if this driver was converted from using dev_name (ie pci_name()) 
and used the standard routines which print that and more: dev_err, dev_warn, dev_dbg, etc?
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andrew Morton - Jan. 13, 2009, 11:44 p.m.
On Tue, 13 Jan 2009 19:18:21 +0100
Daniele Venzano <venza@brownhat.org> wrote:
>
> Subject: [PATCH] SIS900 show warning if bogus MAC address (take 2)
>

The title is now wrong.  I rewrote it in my copy to

sis900: generate fake MAC address if the hardware doesn't have one

> The attached patch modifies the sis900 driver when the MAC address
> read from the hardware is invalid. As suggested, the patch now
> generates a random address so that the user can go on and use
> the hardware. In any case a message is also shown to warn on the
> unexpected condition.
> This seems to happen with newer HW implementation of the sis900
> chipset, since this never came up before.
> 
> Patch is against vanilla 2.6.28 (but the driver doesn't change so often,
> so it will probably apply to older/newer versions too).
> 
> See bugzilla ID 10201 and 11649 and ignore the previous patch.

When referring to bugzilla reports I like to use the full URL.  It's
simpler for readers and makes life easier for those people who search
changelogs looking for bug reports to close off.

> diff -puN drivers/net/sis900.c~sis900-generate-fake-mac-address-if-the-hardware-doesnt-have-one drivers/net/sis900.c
> --- a/drivers/net/sis900.c~sis900-generate-fake-mac-address-if-the-hardware-doesnt-have-one
> +++ a/drivers/net/sis900.c
> @@ -509,10 +509,10 @@ static int __devinit sis900_probe(struct
>  	else
>  		ret = sis900_get_mac_addr(pci_dev, net_dev);
>  
> -	if (ret == 0) {
> -		printk(KERN_WARNING "%s: Cannot read MAC address.\n", dev_name);
> -		ret = -ENODEV;
> -		goto err_unmap_rx;
> +	if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) {
> +		random_ether_addr(net_dev->dev_addr);
> +		printk(KERN_WARNING "%s: Unreadable or invalid MAC address,"
> +				"using random generated one\n", dev_name);

So we generate the fake address a) if the reading failed and b) if the
reading succeeded, but returned a bad address.

Fair enough, I guess.  I wonder if other drivers implement that policy.

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller - Jan. 15, 2009, 4:46 a.m.
From: Andrew Morton <akpm@linux-foundation.org>
Date: Tue, 13 Jan 2009 15:44:07 -0800

> On Tue, 13 Jan 2009 19:18:21 +0100
> Daniele Venzano <venza@brownhat.org> wrote:
> >
> > Subject: [PATCH] SIS900 show warning if bogus MAC address (take 2)
> >
> 
> The title is now wrong.  I rewrote it in my copy to
> 
> sis900: generate fake MAC address if the hardware doesn't have one

I've applied this patch with this correction to net-2.6

> So we generate the fake address a) if the reading failed and b) if the
> reading succeeded, but returned a bad address.
> 
> Fair enough, I guess.  I wonder if other drivers implement that policy.

Several do.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

--- a/drivers/net/sis900.c	2009-01-13 15:12:35.000000000 +0100
+++ b/drivers/net/sis900.c	2009-01-13 15:38:05.000000000 +0100
@@ -504,10 +504,10 @@  static int __devinit sis900_probe(struct
 	else
 		ret = sis900_get_mac_addr(pci_dev, net_dev);
 
-	if (ret == 0) {
-		printk(KERN_WARNING "%s: Cannot read MAC address.\n", dev_name);
-		ret = -ENODEV;
-		goto err_unmap_rx;
+	if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) {
+		random_ether_addr(net_dev->dev_addr);
+		printk(KERN_WARNING "%s: Unreadable or invalid MAC address,"
+				"using random generated one\n", dev_name);
 	}
 
 	/* 630ET : set the mii access mode as software-mode */