aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-10-23 12:15:41 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-11-15 13:24:53 -0500
commit2295c66b68ae160dde2e6e2dc4f3061105153bfc (patch)
tree9bfbaf309944d5f72bd36b291680ddf370733c1a /drivers/net/wireless/iwlwifi/iwl-agn.h
parent2d4e43c3c6783f956163c11568303b0390725e28 (diff)
iwlagn: new RXON processing for modern devices
In order to simplify the flow, and make new enhancements easier, separate out the RXON processing for modern AGN (5000 and newer) from RXON processing for the older 3945 and 4965 devices. Avoid changing these old ones to avoid regressions and move their code to a new file (iwl-legacy.c). 4965 gets the commit_rxon that used to be common for all AGN devices, but with removed PAN support. The new RXON processing is more central and does more work in committing, so that it is easier to follow. To make it more evident what is split out for legacy, split the necessary operations for that into a new struct iwl_legacy_ops. Those parts that still exist in the new AGN code don't need to be parametrized. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index ba88e78e6116..aca93f4477a8 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -103,6 +103,7 @@ extern struct iwl_hcmd_ops iwlagn_bt_hcmd;
103extern struct iwl_hcmd_utils_ops iwlagn_hcmd_utils; 103extern struct iwl_hcmd_utils_ops iwlagn_hcmd_utils;
104 104
105extern struct ieee80211_ops iwlagn_hw_ops; 105extern struct ieee80211_ops iwlagn_hw_ops;
106extern struct ieee80211_ops iwl4965_hw_ops;
106 107
107int iwl_reset_ict(struct iwl_priv *priv); 108int iwl_reset_ict(struct iwl_priv *priv);
108void iwl_disable_ict(struct iwl_priv *priv); 109void iwl_disable_ict(struct iwl_priv *priv);
@@ -134,6 +135,11 @@ void iwl_free_tfds_in_queue(struct iwl_priv *priv,
134/* RXON */ 135/* RXON */
135int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx); 136int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx);
136void iwlagn_set_rxon_chain(struct iwl_priv *priv, struct iwl_rxon_context *ctx); 137void iwlagn_set_rxon_chain(struct iwl_priv *priv, struct iwl_rxon_context *ctx);
138int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed);
139void iwlagn_bss_info_changed(struct ieee80211_hw *hw,
140 struct ieee80211_vif *vif,
141 struct ieee80211_bss_conf *bss_conf,
142 u32 changes);
137 143
138/* uCode */ 144/* uCode */
139int iwlagn_load_ucode(struct iwl_priv *priv); 145int iwlagn_load_ucode(struct iwl_priv *priv);
@@ -251,6 +257,7 @@ int iwlagn_manage_ibss_station(struct iwl_priv *priv,
251int iwlagn_send_rxon_assoc(struct iwl_priv *priv, 257int iwlagn_send_rxon_assoc(struct iwl_priv *priv,
252 struct iwl_rxon_context *ctx); 258 struct iwl_rxon_context *ctx);
253int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant); 259int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant);
260int iwlagn_send_beacon_cmd(struct iwl_priv *priv);
254 261
255/* bt coex */ 262/* bt coex */
256void iwlagn_send_advance_bt_config(struct iwl_priv *priv); 263void iwlagn_send_advance_bt_config(struct iwl_priv *priv);
@@ -320,4 +327,31 @@ void iwl_eeprom_get_mac(const struct iwl_priv *priv, u8 *mac);
320int iwlcore_eeprom_acquire_semaphore(struct iwl_priv *priv); 327int iwlcore_eeprom_acquire_semaphore(struct iwl_priv *priv);
321void iwlcore_eeprom_release_semaphore(struct iwl_priv *priv); 328void iwlcore_eeprom_release_semaphore(struct iwl_priv *priv);
322 329
330/* mac80211 handlers (for 4965) */
331int iwlagn_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb);
332int iwlagn_mac_start(struct ieee80211_hw *hw);
333void iwlagn_mac_stop(struct ieee80211_hw *hw);
334void iwlagn_configure_filter(struct ieee80211_hw *hw,
335 unsigned int changed_flags,
336 unsigned int *total_flags,
337 u64 multicast);
338int iwlagn_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
339 struct ieee80211_vif *vif, struct ieee80211_sta *sta,
340 struct ieee80211_key_conf *key);
341void iwlagn_mac_update_tkip_key(struct ieee80211_hw *hw,
342 struct ieee80211_vif *vif,
343 struct ieee80211_key_conf *keyconf,
344 struct ieee80211_sta *sta,
345 u32 iv32, u16 *phase1key);
346int iwlagn_mac_ampdu_action(struct ieee80211_hw *hw,
347 struct ieee80211_vif *vif,
348 enum ieee80211_ampdu_mlme_action action,
349 struct ieee80211_sta *sta, u16 tid, u16 *ssn);
350int iwlagn_mac_sta_add(struct ieee80211_hw *hw,
351 struct ieee80211_vif *vif,
352 struct ieee80211_sta *sta);
353void iwlagn_mac_channel_switch(struct ieee80211_hw *hw,
354 struct ieee80211_channel_switch *ch_switch);
355void iwlagn_mac_flush(struct ieee80211_hw *hw, bool drop);
356
323#endif /* __iwl_agn_h__ */ 357#endif /* __iwl_agn_h__ */