aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mwl8k.c
diff options
context:
space:
mode:
authorLennert Buytenhek <buytenh@wantstofly.org>2010-01-04 15:56:46 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-01-05 17:13:31 -0500
commit610677d2f0415570a7590790e8be376a946cd08b (patch)
tree5d49f02e57495b1e29cd88e3284a66063bc73855 /drivers/net/wireless/mwl8k.c
parent9e1b17ead81e72d3db37b4cf15cde1f613603822 (diff)
mwl8k: allow setting HT channels
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/mwl8k.c')
-rw-r--r--drivers/net/wireless/mwl8k.c18
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
2032static int mwl8k_cmd_set_rf_channel(struct ieee80211_hw *hw, 2032static 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