From: Al Viro Date: Fri, 21 Dec 2007 06:20:43 +0000 (+0000) Subject: typhoon: set_settings broken on big-endian X-Git-Tag: v2.6.24-rc7~40^2~14 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b46281f9c5d6ab7b6e412e83f8c62cecf4ebbdfd;p=linux-2.6 typhoon: set_settings broken on big-endian 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 Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c index 497c5846de..16d443b712 100644 --- a/drivers/net/typhoon.c +++ b/drivers/net/typhoon.c @@ -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;