From: Herbert Xu Turns out that somebody wasn't following the documentation. We were doing 16-bit writes to 32-bit registers which led to some addresses working and others not so lucky. Signed-off-by: Herbert Xu Cc: Jeff Garzik Signed-off-by: Andrew Morton --- drivers/net/natsemi.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff -puN drivers/net/natsemi.c~natsemi-multicast-initialisation-fix drivers/net/natsemi.c --- 25/drivers/net/natsemi.c~natsemi-multicast-initialisation-fix 2005-04-27 00:10:26.657321848 -0700 +++ 25-akpm/drivers/net/natsemi.c 2005-04-27 00:10:26.663320936 -0700 @@ -2444,9 +2444,9 @@ static void __set_rx_mode(struct net_dev rx_mode = RxFilterEnable | AcceptBroadcast | AcceptMulticast | AcceptMyPhys; for (i = 0; i < 64; i += 2) { - writew(HASH_TABLE + i, ioaddr + RxFilterAddr); - writew((mc_filter[i+1]<<8) + mc_filter[i], - ioaddr + RxFilterData); + writel(HASH_TABLE + i, ioaddr + RxFilterAddr); + writel((mc_filter[i + 1] << 8) + mc_filter[i], + ioaddr + RxFilterData); } } writel(rx_mode, ioaddr + RxFilterAddr); _