typhoon: set_settings broken on big-endian
authorAl Viro <viro@ftp.linux.org.uk>
Fri, 21 Dec 2007 06:20:43 +0000 (06:20 +0000)
committerJeff Garzik <jeff@garzik.org>
Sun, 23 Dec 2007 03:53:05 +0000 (22:53 -0500)
One cpu_to_le16() too many when passing argument for TYPHOON_CMD_XCVR_SELECT;
we end up passing host-endian while the hardware expects little-endian.  The
other place doing that (typhoon_start_runtime()) does the right thing, so the
card will recover at the next ifconfig up/tx timeout/resume, which limits the
amount of mess, but still, WTF?

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/typhoon.c

index 497c584..16d443b 100644 (file)
@@ -1157,7 +1157,7 @@ typhoon_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
        }
 
        INIT_COMMAND_NO_RESPONSE(&xp_cmd, TYPHOON_CMD_XCVR_SELECT);
-       xp_cmd.parm1 = cpu_to_le16(xcvr);
+       xp_cmd.parm1 = xcvr;
        err = typhoon_issue_command(tp, 1, &xp_cmd, 0, NULL);
        if(err < 0)
                goto out;