Message ID | 20090111084504.GB12226@brownhat.org |
---|---|
State | Changes Requested, archived |
Headers | show |
From: Daniele Venzano <venza@brownhat.org> Date: Sun, 11 Jan 2009 09:45:04 +0100 > The attached patch modifies the sis900 driver to show a warning at boot > or module load time to show a message when a null MAC address > (00:00:00:00:00:00) is read from the the hardware. > This seems to happen with newer usage of the sis900 chipset, since this > never came up before. > > Signed-off-by: Daniele Venzano <venza@brownhat.org> Choose a random mac address, as other drivers do in this situation, so that the user ends up with a usable interface. -- 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
On Sun, 11 Jan 2009 09:45:04 +0100 Daniele Venzano <venza@brownhat.org> wrote: > The attached patch modifies the sis900 driver to show a warning at boot > or module load time to show a message when a null MAC address > (00:00:00:00:00:00) is read from the the hardware. > This seems to happen with newer usage of the sis900 chipset, since this > never came up before. > > Signed-off-by: Daniele Venzano <venza@brownhat.org> > > -- > Daniele Venzano > http://www.brownhat.org > /** + * sis900_check_mac_addr - Check the MAc adress for validity + * @net_dev: the net device that has the address to check + * + * Return false (0) if the mac address read from the hardware is + * composed of all zeros. + */ + +static int __devinit sis900_check_mac_addr(struct net_device *net_dev) +{ + int i; + + for (i = 0; i < 6; i++) + if (net_dev->dev_addr[i] != 0) + return 1; + + return 0; +} + This is a reimplementation of: return !is_zero_ether_addr(net_dev->dev_addr); You probably want to use is_valid_ether_addr() instead. -- 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
--- a/drivers/net/sis900.c 2008-12-31 09:15:17.000000000 +0100 +++ b/drivers/net/sis900.c 2008-12-31 09:24:47.000000000 +0100 @@ -382,6 +382,25 @@ static int __devinit sis96x_get_mac_addr } /** + * sis900_check_mac_addr - Check the MAc adress for validity + * @net_dev: the net device that has the address to check + * + * Return false (0) if the mac address read from the hardware is + * composed of all zeros. + */ + +static int __devinit sis900_check_mac_addr(struct net_device *net_dev) +{ + int i; + + for (i = 0; i < 6; i++) + if (net_dev->dev_addr[i] != 0) + return 1; + + return 0; +} + +/** * sis900_probe - Probe for sis900 device * @pci_dev: the sis900 pci device * @pci_id: the pci device ID @@ -504,6 +523,9 @@ static int __devinit sis900_probe(struct else ret = sis900_get_mac_addr(pci_dev, net_dev); + if (sis900_check_mac_addr(net_dev) == 0) + printk(KERN_WARNING "%s: Read an invalid MAC address, remember to set one manually\n", dev_name); + if (ret == 0) { printk(KERN_WARNING "%s: Cannot read MAC address.\n", dev_name); ret = -ENODEV;
The attached patch modifies the sis900 driver to show a warning at boot or module load time to show a message when a null MAC address (00:00:00:00:00:00) is read from the the hardware. This seems to happen with newer usage of the sis900 chipset, since this never came up before. Signed-off-by: Daniele Venzano <venza@brownhat.org> -- Daniele Venzano http://www.brownhat.org