From: "Gary Zambrano" Initializing the b44 MAC & PCI functional blocks in the controller must occur inside init_one(). This will allow access to the MAC registers. The controller was being powered up in b44_open() which would not allow access to the registers before ifconfig was up. Philip Kohlbecher found this bug. Signed-off-by: Gary Zambrano Cc: Jeff Garzik Cc: "David S. Miller" Signed-off-by: Andrew Morton --- drivers/net/b44.c | 5 +++++ 1 files changed, 5 insertions(+) diff -puN drivers/net/b44.c~b44-fix-force-mac-address-before-ifconfig-up drivers/net/b44.c --- devel/drivers/net/b44.c~b44-fix-force-mac-address-before-ifconfig-up 2006-03-23 23:49:45.000000000 -0800 +++ devel-akpm/drivers/net/b44.c 2006-03-23 23:49:45.000000000 -0800 @@ -2033,6 +2033,11 @@ static int __devinit b44_init_one(struct pci_save_state(bp->pdev); + /* Chip reset provides power to the b44 MAC & PCI cores, which + * is necessary for MAC register access. + */ + b44_chip_reset(bp); + printk(KERN_INFO "%s: Broadcom 4400 10/100BaseT Ethernet ", dev->name); for (i = 0; i < 6; i++) printk("%2.2x%c", dev->dev_addr[i], _