aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.h87
1 files changed, 32 insertions, 55 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index d1716844002e..d941c4c98e4b 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -109,42 +109,25 @@ extern struct iwl_cfg iwl135_bg_cfg;
109extern struct iwl_cfg iwl135_bgn_cfg; 109extern struct iwl_cfg iwl135_bgn_cfg;
110 110
111extern struct iwl_mod_params iwlagn_mod_params; 111extern struct iwl_mod_params iwlagn_mod_params;
112extern struct iwl_hcmd_ops iwlagn_hcmd;
113extern struct iwl_hcmd_ops iwlagn_bt_hcmd;
114extern struct iwl_hcmd_utils_ops iwlagn_hcmd_utils;
115 112
116extern struct ieee80211_ops iwlagn_hw_ops; 113extern struct ieee80211_ops iwlagn_hw_ops;
117 114
118int iwl_reset_ict(struct iwl_priv *priv); 115int iwl_reset_ict(struct iwl_priv *priv);
119void iwl_disable_ict(struct iwl_priv *priv);
120int iwl_alloc_isr_ict(struct iwl_priv *priv);
121void iwl_free_isr_ict(struct iwl_priv *priv);
122irqreturn_t iwl_isr_ict(int irq, void *data);
123 116
124/* call this function to flush any scheduled tasklet */ 117static inline void iwl_set_calib_hdr(struct iwl_calib_hdr *hdr, u8 cmd)
125static inline void iwl_synchronize_irq(struct iwl_priv *priv)
126{ 118{
127 /* wait to make sure we flush pending tasklet*/ 119 hdr->op_code = cmd;
128 synchronize_irq(priv->pci_dev->irq); 120 hdr->first_group = 0;
129 tasklet_kill(&priv->irq_tasklet); 121 hdr->groups_num = 1;
122 hdr->data_valid = 1;
130} 123}
131 124
132int iwl_prepare_card_hw(struct iwl_priv *priv);
133
134int iwlagn_start_device(struct iwl_priv *priv);
135void iwlagn_stop_device(struct iwl_priv *priv);
136
137/* tx queue */ 125/* tx queue */
138void iwlagn_set_wr_ptrs(struct iwl_priv *priv,
139 int txq_id, u32 index);
140void iwlagn_tx_queue_set_status(struct iwl_priv *priv,
141 struct iwl_tx_queue *txq,
142 int tx_fifo_id, int scd_retry);
143void iwlagn_txq_set_sched(struct iwl_priv *priv, u32 mask);
144void iwl_free_tfds_in_queue(struct iwl_priv *priv, 126void iwl_free_tfds_in_queue(struct iwl_priv *priv,
145 int sta_id, int tid, int freed); 127 int sta_id, int tid, int freed);
146 128
147/* RXON */ 129/* RXON */
130int iwlagn_set_pan_params(struct iwl_priv *priv);
148int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx); 131int iwlagn_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *ctx);
149void iwlagn_set_rxon_chain(struct iwl_priv *priv, struct iwl_rxon_context *ctx); 132void iwlagn_set_rxon_chain(struct iwl_priv *priv, struct iwl_rxon_context *ctx);
150int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed); 133int iwlagn_mac_config(struct ieee80211_hw *hw, u32 changed);
@@ -161,41 +144,29 @@ void iwlagn_send_prio_tbl(struct iwl_priv *priv);
161int iwlagn_run_init_ucode(struct iwl_priv *priv); 144int iwlagn_run_init_ucode(struct iwl_priv *priv);
162int iwlagn_load_ucode_wait_alive(struct iwl_priv *priv, 145int iwlagn_load_ucode_wait_alive(struct iwl_priv *priv,
163 struct fw_img *image, 146 struct fw_img *image,
164 int subtype, int alternate_subtype); 147 enum iwlagn_ucode_type ucode_type);
165 148
166/* lib */ 149/* lib */
167void iwl_check_abort_status(struct iwl_priv *priv, 150void iwl_check_abort_status(struct iwl_priv *priv,
168 u8 frame_count, u32 status); 151 u8 frame_count, u32 status);
169void iwlagn_rx_handler_setup(struct iwl_priv *priv);
170void iwlagn_setup_deferred_work(struct iwl_priv *priv);
171int iwlagn_hw_valid_rtc_data_addr(u32 addr); 152int iwlagn_hw_valid_rtc_data_addr(u32 addr);
172int iwlagn_send_tx_power(struct iwl_priv *priv); 153int iwlagn_send_tx_power(struct iwl_priv *priv);
173void iwlagn_temperature(struct iwl_priv *priv); 154void iwlagn_temperature(struct iwl_priv *priv);
174u16 iwlagn_eeprom_calib_version(struct iwl_priv *priv); 155u16 iwlagn_eeprom_calib_version(struct iwl_priv *priv);
175const u8 *iwlagn_eeprom_query_addr(const struct iwl_priv *priv,
176 size_t offset);
177void iwlagn_rx_queue_reset(struct iwl_priv *priv, struct iwl_rx_queue *rxq);
178int iwlagn_rx_init(struct iwl_priv *priv, struct iwl_rx_queue *rxq);
179int iwlagn_hw_nic_init(struct iwl_priv *priv);
180int iwlagn_wait_tx_queue_empty(struct iwl_priv *priv); 156int iwlagn_wait_tx_queue_empty(struct iwl_priv *priv);
181int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control); 157int iwlagn_txfifo_flush(struct iwl_priv *priv, u16 flush_control);
182void iwlagn_dev_txfifo_flush(struct iwl_priv *priv, u16 flush_control); 158void iwlagn_dev_txfifo_flush(struct iwl_priv *priv, u16 flush_control);
159int iwlagn_send_beacon_cmd(struct iwl_priv *priv);
183 160
184/* rx */ 161/* rx */
185void iwlagn_rx_queue_restock(struct iwl_priv *priv);
186void iwlagn_rx_allocate(struct iwl_priv *priv, gfp_t priority);
187void iwlagn_rx_replenish(struct iwl_priv *priv);
188void iwlagn_rx_replenish_now(struct iwl_priv *priv);
189void iwlagn_rx_queue_free(struct iwl_priv *priv, struct iwl_rx_queue *rxq);
190int iwlagn_rxq_stop(struct iwl_priv *priv);
191int iwlagn_hwrate_to_mac80211_idx(u32 rate_n_flags, enum ieee80211_band band); 162int iwlagn_hwrate_to_mac80211_idx(u32 rate_n_flags, enum ieee80211_band band);
192void iwl_setup_rx_handlers(struct iwl_priv *priv); 163void iwl_setup_rx_handlers(struct iwl_priv *priv);
164void iwl_rx_dispatch(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb);
165
193 166
194/* tx */ 167/* tx */
195void iwlagn_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq); 168void iwlagn_txq_free_tfd(struct iwl_priv *priv, struct iwl_tx_queue *txq,
196int iwlagn_txq_attach_buf_to_tfd(struct iwl_priv *priv, 169 int index);
197 struct iwl_tx_queue *txq,
198 dma_addr_t addr, u16 len, u8 reset);
199void iwlagn_hwrate_to_tx_control(struct iwl_priv *priv, u32 rate_n_flags, 170void iwlagn_hwrate_to_tx_control(struct iwl_priv *priv, u32 rate_n_flags,
200 struct ieee80211_tx_info *info); 171 struct ieee80211_tx_info *info);
201int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb); 172int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb);
@@ -203,18 +174,12 @@ int iwlagn_tx_agg_start(struct iwl_priv *priv, struct ieee80211_vif *vif,
203 struct ieee80211_sta *sta, u16 tid, u16 *ssn); 174 struct ieee80211_sta *sta, u16 tid, u16 *ssn);
204int iwlagn_tx_agg_stop(struct iwl_priv *priv, struct ieee80211_vif *vif, 175int iwlagn_tx_agg_stop(struct iwl_priv *priv, struct ieee80211_vif *vif,
205 struct ieee80211_sta *sta, u16 tid); 176 struct ieee80211_sta *sta, u16 tid);
206void iwlagn_txq_agg_queue_setup(struct iwl_priv *priv,
207 struct ieee80211_sta *sta,
208 int tid, int frame_limit);
209int iwlagn_txq_check_empty(struct iwl_priv *priv, 177int iwlagn_txq_check_empty(struct iwl_priv *priv,
210 int sta_id, u8 tid, int txq_id); 178 int sta_id, u8 tid, int txq_id);
211void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv, 179void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
212 struct iwl_rx_mem_buffer *rxb); 180 struct iwl_rx_mem_buffer *rxb);
181void iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb);
213int iwlagn_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index); 182int iwlagn_tx_queue_reclaim(struct iwl_priv *priv, int txq_id, int index);
214void iwlagn_hw_txq_ctx_free(struct iwl_priv *priv);
215int iwlagn_txq_ctx_alloc(struct iwl_priv *priv);
216void iwlagn_txq_ctx_reset(struct iwl_priv *priv);
217void iwlagn_txq_ctx_stop(struct iwl_priv *priv);
218 183
219static inline u32 iwl_tx_status_to_mac80211(u32 status) 184static inline u32 iwl_tx_status_to_mac80211(u32 status)
220{ 185{
@@ -249,10 +214,6 @@ void iwlagn_post_scan(struct iwl_priv *priv);
249int iwlagn_manage_ibss_station(struct iwl_priv *priv, 214int iwlagn_manage_ibss_station(struct iwl_priv *priv,
250 struct ieee80211_vif *vif, bool add); 215 struct ieee80211_vif *vif, bool add);
251 216
252/* hcmd */
253int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant);
254int iwlagn_send_beacon_cmd(struct iwl_priv *priv);
255
256/* bt coex */ 217/* bt coex */
257void iwlagn_send_advance_bt_config(struct iwl_priv *priv); 218void iwlagn_send_advance_bt_config(struct iwl_priv *priv);
258void iwlagn_bt_coex_profile_notif(struct iwl_priv *priv, 219void iwlagn_bt_coex_profile_notif(struct iwl_priv *priv,
@@ -260,6 +221,8 @@ void iwlagn_bt_coex_profile_notif(struct iwl_priv *priv,
260void iwlagn_bt_rx_handler_setup(struct iwl_priv *priv); 221void iwlagn_bt_rx_handler_setup(struct iwl_priv *priv);
261void iwlagn_bt_setup_deferred_work(struct iwl_priv *priv); 222void iwlagn_bt_setup_deferred_work(struct iwl_priv *priv);
262void iwlagn_bt_cancel_deferred_work(struct iwl_priv *priv); 223void iwlagn_bt_cancel_deferred_work(struct iwl_priv *priv);
224void iwlagn_bt_coex_rssi_monitor(struct iwl_priv *priv);
225void iwlagn_bt_adjust_rssi_monitor(struct iwl_priv *priv, bool rssi_ena);
263 226
264#ifdef CONFIG_IWLWIFI_DEBUG 227#ifdef CONFIG_IWLWIFI_DEBUG
265const char *iwl_get_tx_fail_reason(u32 status); 228const char *iwl_get_tx_fail_reason(u32 status);
@@ -283,11 +246,13 @@ int iwl_set_default_wep_key(struct iwl_priv *priv,
283int iwl_restore_default_wep_keys(struct iwl_priv *priv, 246int iwl_restore_default_wep_keys(struct iwl_priv *priv,
284 struct iwl_rxon_context *ctx); 247 struct iwl_rxon_context *ctx);
285int iwl_set_dynamic_key(struct iwl_priv *priv, struct iwl_rxon_context *ctx, 248int iwl_set_dynamic_key(struct iwl_priv *priv, struct iwl_rxon_context *ctx,
286 struct ieee80211_key_conf *key, u8 sta_id); 249 struct ieee80211_key_conf *key,
250 struct ieee80211_sta *sta);
287int iwl_remove_dynamic_key(struct iwl_priv *priv, struct iwl_rxon_context *ctx, 251int iwl_remove_dynamic_key(struct iwl_priv *priv, struct iwl_rxon_context *ctx,
288 struct ieee80211_key_conf *key, u8 sta_id); 252 struct ieee80211_key_conf *key,
253 struct ieee80211_sta *sta);
289void iwl_update_tkip_key(struct iwl_priv *priv, 254void iwl_update_tkip_key(struct iwl_priv *priv,
290 struct iwl_rxon_context *ctx, 255 struct ieee80211_vif *vif,
291 struct ieee80211_key_conf *keyconf, 256 struct ieee80211_key_conf *keyconf,
292 struct ieee80211_sta *sta, u32 iv32, u16 *phase1key); 257 struct ieee80211_sta *sta, u32 iv32, u16 *phase1key);
293int iwl_sta_tx_modify_enable_tid(struct iwl_priv *priv, int sta_id, int tid); 258int iwl_sta_tx_modify_enable_tid(struct iwl_priv *priv, int sta_id, int tid);
@@ -296,6 +261,8 @@ int iwl_sta_rx_agg_start(struct iwl_priv *priv, struct ieee80211_sta *sta,
296int iwl_sta_rx_agg_stop(struct iwl_priv *priv, struct ieee80211_sta *sta, 261int iwl_sta_rx_agg_stop(struct iwl_priv *priv, struct ieee80211_sta *sta,
297 int tid); 262 int tid);
298void iwl_sta_modify_sleep_tx_count(struct iwl_priv *priv, int sta_id, int cnt); 263void iwl_sta_modify_sleep_tx_count(struct iwl_priv *priv, int sta_id, int cnt);
264int iwl_update_bcast_station(struct iwl_priv *priv,
265 struct iwl_rxon_context *ctx);
299int iwl_update_bcast_stations(struct iwl_priv *priv); 266int iwl_update_bcast_stations(struct iwl_priv *priv);
300void iwlagn_mac_sta_notify(struct ieee80211_hw *hw, 267void iwlagn_mac_sta_notify(struct ieee80211_hw *hw,
301 struct ieee80211_vif *vif, 268 struct ieee80211_vif *vif,
@@ -343,6 +310,9 @@ extern int iwl_alive_start(struct iwl_priv *priv);
343/* svtool */ 310/* svtool */
344#ifdef CONFIG_IWLWIFI_DEVICE_SVTOOL 311#ifdef CONFIG_IWLWIFI_DEVICE_SVTOOL
345extern int iwl_testmode_cmd(struct ieee80211_hw *hw, void *data, int len); 312extern int iwl_testmode_cmd(struct ieee80211_hw *hw, void *data, int len);
313extern int iwl_testmode_dump(struct ieee80211_hw *hw, struct sk_buff *skb,
314 struct netlink_callback *cb,
315 void *data, int len);
346extern void iwl_testmode_init(struct iwl_priv *priv); 316extern void iwl_testmode_init(struct iwl_priv *priv);
347extern void iwl_testmode_cleanup(struct iwl_priv *priv); 317extern void iwl_testmode_cleanup(struct iwl_priv *priv);
348#else 318#else
@@ -352,6 +322,13 @@ int iwl_testmode_cmd(struct ieee80211_hw *hw, void *data, int len)
352 return -ENOSYS; 322 return -ENOSYS;
353} 323}
354static inline 324static inline
325int iwl_testmode_dump(struct ieee80211_hw *hw, struct sk_buff *skb,
326 struct netlink_callback *cb,
327 void *data, int len)
328{
329 return -ENOSYS;
330}
331static inline
355void iwl_testmode_init(struct iwl_priv *priv) 332void iwl_testmode_init(struct iwl_priv *priv)
356{ 333{
357} 334}