diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-core.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.c | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c index 42b5f90acd0a..ab5db2e71413 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.c +++ b/drivers/net/wireless/iwlwifi/iwl-core.c | |||
@@ -43,81 +43,6 @@ | |||
43 | 43 | ||
44 | const u8 iwl_bcast_addr[ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; | 44 | const u8 iwl_bcast_addr[ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; |
45 | 45 | ||
46 | static void _iwl_set_rxon_ht(struct iwl_priv *priv, | ||
47 | struct iwl_ht_config *ht_conf, | ||
48 | struct iwl_rxon_context *ctx) | ||
49 | { | ||
50 | struct iwl_rxon_cmd *rxon = &ctx->staging; | ||
51 | |||
52 | if (!ctx->ht.enabled) { | ||
53 | rxon->flags &= ~(RXON_FLG_CHANNEL_MODE_MSK | | ||
54 | RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK | | ||
55 | RXON_FLG_HT40_PROT_MSK | | ||
56 | RXON_FLG_HT_PROT_MSK); | ||
57 | return; | ||
58 | } | ||
59 | |||
60 | /* FIXME: if the definition of ht.protection changed, the "translation" | ||
61 | * will be needed for rxon->flags | ||
62 | */ | ||
63 | rxon->flags |= cpu_to_le32(ctx->ht.protection << RXON_FLG_HT_OPERATING_MODE_POS); | ||
64 | |||
65 | /* Set up channel bandwidth: | ||
66 | * 20 MHz only, 20/40 mixed or pure 40 if ht40 ok */ | ||
67 | /* clear the HT channel mode before set the mode */ | ||
68 | rxon->flags &= ~(RXON_FLG_CHANNEL_MODE_MSK | | ||
69 | RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK); | ||
70 | if (iwl_is_ht40_tx_allowed(priv, ctx, NULL)) { | ||
71 | /* pure ht40 */ | ||
72 | if (ctx->ht.protection == IEEE80211_HT_OP_MODE_PROTECTION_20MHZ) { | ||
73 | rxon->flags |= RXON_FLG_CHANNEL_MODE_PURE_40; | ||
74 | /* Note: control channel is opposite of extension channel */ | ||
75 | switch (ctx->ht.extension_chan_offset) { | ||
76 | case IEEE80211_HT_PARAM_CHA_SEC_ABOVE: | ||
77 | rxon->flags &= ~RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK; | ||
78 | break; | ||
79 | case IEEE80211_HT_PARAM_CHA_SEC_BELOW: | ||
80 | rxon->flags |= RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK; | ||
81 | break; | ||
82 | } | ||
83 | } else { | ||
84 | /* Note: control channel is opposite of extension channel */ | ||
85 | switch (ctx->ht.extension_chan_offset) { | ||
86 | case IEEE80211_HT_PARAM_CHA_SEC_ABOVE: | ||
87 | rxon->flags &= ~(RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK); | ||
88 | rxon->flags |= RXON_FLG_CHANNEL_MODE_MIXED; | ||
89 | break; | ||
90 | case IEEE80211_HT_PARAM_CHA_SEC_BELOW: | ||
91 | rxon->flags |= RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK; | ||
92 | rxon->flags |= RXON_FLG_CHANNEL_MODE_MIXED; | ||
93 | break; | ||
94 | case IEEE80211_HT_PARAM_CHA_SEC_NONE: | ||
95 | default: | ||
96 | /* channel location only valid if in Mixed mode */ | ||
97 | IWL_ERR(priv, "invalid extension channel offset\n"); | ||
98 | break; | ||
99 | } | ||
100 | } | ||
101 | } else { | ||
102 | rxon->flags |= RXON_FLG_CHANNEL_MODE_LEGACY; | ||
103 | } | ||
104 | |||
105 | iwlagn_set_rxon_chain(priv, ctx); | ||
106 | |||
107 | IWL_DEBUG_ASSOC(priv, "rxon flags 0x%X operation mode :0x%X " | ||
108 | "extension channel offset 0x%x\n", | ||
109 | le32_to_cpu(rxon->flags), ctx->ht.protection, | ||
110 | ctx->ht.extension_chan_offset); | ||
111 | } | ||
112 | |||
113 | void iwl_set_rxon_ht(struct iwl_priv *priv, struct iwl_ht_config *ht_conf) | ||
114 | { | ||
115 | struct iwl_rxon_context *ctx; | ||
116 | |||
117 | for_each_context(priv, ctx) | ||
118 | _iwl_set_rxon_ht(priv, ht_conf, ctx); | ||
119 | } | ||
120 | |||
121 | /** | 46 | /** |
122 | * iwl_set_rxon_channel - Set the band and channel values in staging RXON | 47 | * iwl_set_rxon_channel - Set the band and channel values in staging RXON |
123 | * @ch: requested channel as a pointer to struct ieee80211_channel | 48 | * @ch: requested channel as a pointer to struct ieee80211_channel |