From: Al Viro Date: Sun, 9 Dec 2007 17:00:54 +0000 (+0000) Subject: starfire VLAN fix X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=813820b9b9adb98d4ad3cd7434eb662b0fc15684;p=openwrt%2Fstaging%2Fblogic.git starfire VLAN fix Recognized VLAN ids are set via writew(), should go in host-endian. That's a long-standing bug, BTW - see http://lkml.org/lkml/2004/2/27/180 for example. What happens is that card gets VLAN id table populated by byteswapped values on little-endian boxen (so 257 works as expected, 256 and 258 do not, etc.). Bug is easily reproduced, patch fixes it. Signed-off-by: Al Viro Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c index bcc430bd9e49..6e00dc857afa 100644 --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c @@ -1742,7 +1742,7 @@ static void set_rx_mode(struct net_device *dev) if (vlan_group_get_device(np->vlgrp, i)) { if (vlan_count >= 32) break; - writew(cpu_to_be16(i), filter_addr); + writew(i, filter_addr); filter_addr += 16; vlan_count++; }