diff options
author | Lennert Buytenhek <buytenh@wantstofly.org> | 2010-01-04 15:56:46 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-05 17:13:31 -0500 |
commit | 610677d2f0415570a7590790e8be376a946cd08b (patch) | |
tree | 5d49f02e57495b1e29cd88e3284a66063bc73855 | |
parent | 9e1b17ead81e72d3db37b4cf15cde1f613603822 (diff) |
mwl8k: allow setting HT channels
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/mwl8k.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index de74c111d967..2ae6c363f374 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -2030,8 +2030,9 @@ struct mwl8k_cmd_set_rf_channel { | |||
2030 | } __attribute__((packed)); | 2030 | } __attribute__((packed)); |
2031 | 2031 | ||
2032 | static int mwl8k_cmd_set_rf_channel(struct ieee80211_hw *hw, | 2032 | static int mwl8k_cmd_set_rf_channel(struct ieee80211_hw *hw, |
2033 | struct ieee80211_channel *channel) | 2033 | struct ieee80211_conf *conf) |
2034 | { | 2034 | { |
2035 | struct ieee80211_channel *channel = conf->channel; | ||
2035 | struct mwl8k_cmd_set_rf_channel *cmd; | 2036 | struct mwl8k_cmd_set_rf_channel *cmd; |
2036 | int rc; | 2037 | int rc; |
2037 | 2038 | ||
@@ -2043,10 +2044,17 @@ static int mwl8k_cmd_set_rf_channel(struct ieee80211_hw *hw, | |||
2043 | cmd->header.length = cpu_to_le16(sizeof(*cmd)); | 2044 | cmd->header.length = cpu_to_le16(sizeof(*cmd)); |
2044 | cmd->action = cpu_to_le16(MWL8K_CMD_SET); | 2045 | cmd->action = cpu_to_le16(MWL8K_CMD_SET); |
2045 | cmd->current_channel = channel->hw_value; | 2046 | cmd->current_channel = channel->hw_value; |
2047 | |||
2046 | if (channel->band == IEEE80211_BAND_2GHZ) | 2048 | if (channel->band == IEEE80211_BAND_2GHZ) |
2047 | cmd->channel_flags = cpu_to_le32(0x00000081); | 2049 | cmd->channel_flags |= cpu_to_le32(0x00000001); |
2048 | else | 2050 | |
2049 | cmd->channel_flags = cpu_to_le32(0x00000000); | 2051 | if (conf->channel_type == NL80211_CHAN_NO_HT || |
2052 | conf->channel_type == NL80211_CHAN_HT20) | ||
2053 | cmd->channel_flags |= cpu_to_le32(0x00000080); | ||
2054 | else if (conf->channel_type == NL80211_CHAN_HT40MINUS) | ||
2055 | cmd->channel_flags |= cpu_to_le32(0x000001900); | ||
2056 | else if (conf->channel_type == NL80211_CHAN_HT40PLUS) | ||
2057 | cmd->channel_flags |= cpu_to_le32(0x000000900); | ||
2050 | 2058 | ||
2051 | rc = mwl8k_post_cmd(hw, &cmd->header); | 2059 | rc = mwl8k_post_cmd(hw, &cmd->header); |
2052 | kfree(cmd); | 2060 | kfree(cmd); |
@@ -2926,7 +2934,7 @@ static int mwl8k_config(struct ieee80211_hw *hw, u32 changed) | |||
2926 | if (rc) | 2934 | if (rc) |
2927 | goto out; | 2935 | goto out; |
2928 | 2936 | ||
2929 | rc = mwl8k_cmd_set_rf_channel(hw, conf->channel); | 2937 | rc = mwl8k_cmd_set_rf_channel(hw, conf); |
2930 | if (rc) | 2938 | if (rc) |
2931 | goto out; | 2939 | goto out; |
2932 | 2940 | ||