aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-core.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c75
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
44const u8 iwl_bcast_addr[ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; 44const u8 iwl_bcast_addr[ETH_ALEN] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
45 45
46static 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
113void 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