diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2007-12-09 17:00:54 +0000 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-12-14 15:26:04 -0500 |
commit | 813820b9b9adb98d4ad3cd7434eb662b0fc15684 (patch) | |
tree | 21279f6910e943155de235bb416c230a4ae083e5 /drivers | |
parent | 14c9d9b03bb8ec63c77aebddea9a6f730f1b62d5 (diff) | |
download | op-kernel-dev-813820b9b9adb98d4ad3cd7434eb662b0fc15684.zip op-kernel-dev-813820b9b9adb98d4ad3cd7434eb662b0fc15684.tar.gz |
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 <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/starfire.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c index bcc430b..6e00dc8 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++; } |