diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/htc.h')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/htc.h | 211 |
1 files changed, 141 insertions, 70 deletions
diff --git a/drivers/net/wireless/ath/ath9k/htc.h b/drivers/net/wireless/ath/ath9k/htc.h index ec47be94b74..48a88557508 100644 --- a/drivers/net/wireless/ath/ath9k/htc.h +++ b/drivers/net/wireless/ath/ath9k/htc.h | |||
@@ -67,8 +67,11 @@ enum htc_opmode { | |||
67 | }; | 67 | }; |
68 | 68 | ||
69 | #define ATH9K_HTC_HDRSPACE sizeof(struct htc_frame_hdr) | 69 | #define ATH9K_HTC_HDRSPACE sizeof(struct htc_frame_hdr) |
70 | #define ATH9K_HTC_AMPDU 1 | 70 | |
71 | #define ATH9K_HTC_AMPDU 1 | ||
71 | #define ATH9K_HTC_NORMAL 2 | 72 | #define ATH9K_HTC_NORMAL 2 |
73 | #define ATH9K_HTC_BEACON 3 | ||
74 | #define ATH9K_HTC_MGMT 4 | ||
72 | 75 | ||
73 | #define ATH9K_HTC_TX_CTSONLY 0x1 | 76 | #define ATH9K_HTC_TX_CTSONLY 0x1 |
74 | #define ATH9K_HTC_TX_RTSCTS 0x2 | 77 | #define ATH9K_HTC_TX_RTSCTS 0x2 |
@@ -82,7 +85,8 @@ struct tx_frame_hdr { | |||
82 | __be32 flags; /* ATH9K_HTC_TX_* */ | 85 | __be32 flags; /* ATH9K_HTC_TX_* */ |
83 | u8 key_type; | 86 | u8 key_type; |
84 | u8 keyix; | 87 | u8 keyix; |
85 | u8 reserved[26]; | 88 | u8 cookie; |
89 | u8 pad; | ||
86 | } __packed; | 90 | } __packed; |
87 | 91 | ||
88 | struct tx_mgmt_hdr { | 92 | struct tx_mgmt_hdr { |
@@ -92,26 +96,16 @@ struct tx_mgmt_hdr { | |||
92 | u8 flags; | 96 | u8 flags; |
93 | u8 key_type; | 97 | u8 key_type; |
94 | u8 keyix; | 98 | u8 keyix; |
95 | u16 reserved; | 99 | u8 cookie; |
100 | u8 pad; | ||
96 | } __packed; | 101 | } __packed; |
97 | 102 | ||
98 | struct tx_beacon_header { | 103 | struct tx_beacon_header { |
99 | u8 len_changed; | ||
100 | u8 vif_index; | 104 | u8 vif_index; |
105 | u8 len_changed; | ||
101 | u16 rev; | 106 | u16 rev; |
102 | } __packed; | 107 | } __packed; |
103 | 108 | ||
104 | struct ath9k_htc_target_hw { | ||
105 | u32 flags; | ||
106 | u32 flags_ext; | ||
107 | u32 ampdu_limit; | ||
108 | u8 ampdu_subframes; | ||
109 | u8 tx_chainmask; | ||
110 | u8 tx_chainmask_legacy; | ||
111 | u8 rtscts_ratecode; | ||
112 | u8 protmode; | ||
113 | } __packed; | ||
114 | |||
115 | struct ath9k_htc_cap_target { | 109 | struct ath9k_htc_cap_target { |
116 | u32 flags; | 110 | u32 flags; |
117 | u32 flags_ext; | 111 | u32 flags_ext; |
@@ -121,21 +115,16 @@ struct ath9k_htc_cap_target { | |||
121 | u8 tx_chainmask_legacy; | 115 | u8 tx_chainmask_legacy; |
122 | u8 rtscts_ratecode; | 116 | u8 rtscts_ratecode; |
123 | u8 protmode; | 117 | u8 protmode; |
118 | u8 pad; | ||
124 | } __packed; | 119 | } __packed; |
125 | 120 | ||
126 | struct ath9k_htc_target_vif { | 121 | struct ath9k_htc_target_vif { |
127 | u8 index; | 122 | u8 index; |
128 | u8 des_bssid[ETH_ALEN]; | 123 | u8 opmode; |
129 | __be32 opmode; | ||
130 | u8 myaddr[ETH_ALEN]; | 124 | u8 myaddr[ETH_ALEN]; |
131 | u8 bssid[ETH_ALEN]; | ||
132 | u32 flags; | ||
133 | u32 flags_ext; | ||
134 | u16 ps_sta; | ||
135 | __be16 rtsthreshold; | ||
136 | u8 ath_cap; | 125 | u8 ath_cap; |
137 | u8 node; | 126 | __be16 rtsthreshold; |
138 | s8 mcast_rate; | 127 | u8 pad; |
139 | } __packed; | 128 | } __packed; |
140 | 129 | ||
141 | #define ATH_HTC_STA_AUTH 0x0001 | 130 | #define ATH_HTC_STA_AUTH 0x0001 |
@@ -143,27 +132,16 @@ struct ath9k_htc_target_vif { | |||
143 | #define ATH_HTC_STA_ERP 0x0004 | 132 | #define ATH_HTC_STA_ERP 0x0004 |
144 | #define ATH_HTC_STA_HT 0x0008 | 133 | #define ATH_HTC_STA_HT 0x0008 |
145 | 134 | ||
146 | /* FIXME: UAPSD variables */ | ||
147 | struct ath9k_htc_target_sta { | 135 | struct ath9k_htc_target_sta { |
148 | u16 associd; | ||
149 | u16 txpower; | ||
150 | u32 ucastkey; | ||
151 | u8 macaddr[ETH_ALEN]; | 136 | u8 macaddr[ETH_ALEN]; |
152 | u8 bssid[ETH_ALEN]; | 137 | u8 bssid[ETH_ALEN]; |
153 | u8 sta_index; | 138 | u8 sta_index; |
154 | u8 vif_index; | 139 | u8 vif_index; |
155 | u8 vif_sta; | ||
156 | __be16 flags; /* ATH_HTC_STA_* */ | ||
157 | u16 htcap; | ||
158 | u8 valid; | ||
159 | u16 capinfo; | ||
160 | struct ath9k_htc_target_hw *hw; | ||
161 | struct ath9k_htc_target_vif *vif; | ||
162 | u16 txseqmgmt; | ||
163 | u8 is_vif_sta; | 140 | u8 is_vif_sta; |
164 | u16 maxampdu; | 141 | __be16 flags; /* ATH_HTC_STA_* */ |
165 | u16 iv16; | 142 | __be16 htcap; |
166 | u32 iv32; | 143 | __be16 maxampdu; |
144 | u8 pad; | ||
167 | } __packed; | 145 | } __packed; |
168 | 146 | ||
169 | struct ath9k_htc_target_aggr { | 147 | struct ath9k_htc_target_aggr { |
@@ -197,12 +175,31 @@ struct ath9k_htc_target_rate { | |||
197 | struct ath9k_htc_rate rates; | 175 | struct ath9k_htc_rate rates; |
198 | }; | 176 | }; |
199 | 177 | ||
200 | struct ath9k_htc_target_stats { | 178 | struct ath9k_htc_target_int_stats { |
201 | __be32 tx_shortretry; | 179 | __be32 rx; |
202 | __be32 tx_longretry; | 180 | __be32 rxorn; |
203 | __be32 tx_xretries; | 181 | __be32 rxeol; |
204 | __be32 ht_txunaggr_xretry; | 182 | __be32 txurn; |
205 | __be32 ht_tx_xretries; | 183 | __be32 txto; |
184 | __be32 cst; | ||
185 | } __packed; | ||
186 | |||
187 | struct ath9k_htc_target_tx_stats { | ||
188 | __be32 xretries; | ||
189 | __be32 fifoerr; | ||
190 | __be32 filtered; | ||
191 | __be32 timer_exp; | ||
192 | __be32 shortretries; | ||
193 | __be32 longretries; | ||
194 | __be32 qnull; | ||
195 | __be32 encap_fail; | ||
196 | __be32 nobuf; | ||
197 | } __packed; | ||
198 | |||
199 | struct ath9k_htc_target_rx_stats { | ||
200 | __be32 nobuf; | ||
201 | __be32 host_send; | ||
202 | __be32 host_done; | ||
206 | } __packed; | 203 | } __packed; |
207 | 204 | ||
208 | #define ATH9K_HTC_MAX_VIF 2 | 205 | #define ATH9K_HTC_MAX_VIF 2 |
@@ -244,6 +241,8 @@ struct ath9k_htc_vif { | |||
244 | u8 index; | 241 | u8 index; |
245 | u16 seq_no; | 242 | u16 seq_no; |
246 | bool beacon_configured; | 243 | bool beacon_configured; |
244 | int bslot; | ||
245 | __le64 tsfadjust; | ||
247 | }; | 246 | }; |
248 | 247 | ||
249 | struct ath9k_vif_iter_data { | 248 | struct ath9k_vif_iter_data { |
@@ -282,23 +281,65 @@ struct ath9k_htc_rx { | |||
282 | spinlock_t rxbuflock; | 281 | spinlock_t rxbuflock; |
283 | }; | 282 | }; |
284 | 283 | ||
284 | #define ATH9K_HTC_TX_CLEANUP_INTERVAL 50 /* ms */ | ||
285 | #define ATH9K_HTC_TX_TIMEOUT_INTERVAL 2500 /* ms */ | ||
286 | #define ATH9K_HTC_TX_RESERVE 10 | ||
287 | #define ATH9K_HTC_TX_TIMEOUT_COUNT 20 | ||
288 | #define ATH9K_HTC_TX_THRESHOLD (MAX_TX_BUF_NUM - ATH9K_HTC_TX_RESERVE) | ||
289 | |||
290 | #define ATH9K_HTC_OP_TX_QUEUES_STOP BIT(0) | ||
291 | #define ATH9K_HTC_OP_TX_DRAIN BIT(1) | ||
292 | |||
293 | struct ath9k_htc_tx { | ||
294 | u8 flags; | ||
295 | int queued_cnt; | ||
296 | struct sk_buff_head mgmt_ep_queue; | ||
297 | struct sk_buff_head cab_ep_queue; | ||
298 | struct sk_buff_head data_be_queue; | ||
299 | struct sk_buff_head data_bk_queue; | ||
300 | struct sk_buff_head data_vi_queue; | ||
301 | struct sk_buff_head data_vo_queue; | ||
302 | struct sk_buff_head tx_failed; | ||
303 | DECLARE_BITMAP(tx_slot, MAX_TX_BUF_NUM); | ||
304 | struct timer_list cleanup_timer; | ||
305 | spinlock_t tx_lock; | ||
306 | }; | ||
307 | |||
285 | struct ath9k_htc_tx_ctl { | 308 | struct ath9k_htc_tx_ctl { |
286 | u8 type; /* ATH9K_HTC_* */ | 309 | u8 type; /* ATH9K_HTC_* */ |
310 | u8 epid; | ||
311 | u8 txok; | ||
312 | u8 sta_idx; | ||
313 | unsigned long timestamp; | ||
287 | }; | 314 | }; |
288 | 315 | ||
316 | static inline struct ath9k_htc_tx_ctl *HTC_SKB_CB(struct sk_buff *skb) | ||
317 | { | ||
318 | struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); | ||
319 | |||
320 | BUILD_BUG_ON(sizeof(struct ath9k_htc_tx_ctl) > | ||
321 | IEEE80211_TX_INFO_DRIVER_DATA_SIZE); | ||
322 | return (struct ath9k_htc_tx_ctl *) &tx_info->driver_data; | ||
323 | } | ||
324 | |||
289 | #ifdef CONFIG_ATH9K_HTC_DEBUGFS | 325 | #ifdef CONFIG_ATH9K_HTC_DEBUGFS |
290 | 326 | ||
291 | #define TX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c++) | 327 | #define TX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c++) |
292 | #define RX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.rx_stats.c++) | 328 | #define RX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.rx_stats.c++) |
329 | #define CAB_STAT_INC priv->debug.tx_stats.cab_queued++ | ||
293 | 330 | ||
294 | #define TX_QSTAT_INC(q) (priv->debug.tx_stats.queue_stats[q]++) | 331 | #define TX_QSTAT_INC(q) (priv->debug.tx_stats.queue_stats[q]++) |
295 | 332 | ||
333 | void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv, | ||
334 | struct ath_htc_rx_status *rxs); | ||
335 | |||
296 | struct ath_tx_stats { | 336 | struct ath_tx_stats { |
297 | u32 buf_queued; | 337 | u32 buf_queued; |
298 | u32 buf_completed; | 338 | u32 buf_completed; |
299 | u32 skb_queued; | 339 | u32 skb_queued; |
300 | u32 skb_completed; | 340 | u32 skb_success; |
301 | u32 skb_dropped; | 341 | u32 skb_failed; |
342 | u32 cab_queued; | ||
302 | u32 queue_stats[WME_NUM_AC]; | 343 | u32 queue_stats[WME_NUM_AC]; |
303 | }; | 344 | }; |
304 | 345 | ||
@@ -306,25 +347,35 @@ struct ath_rx_stats { | |||
306 | u32 skb_allocated; | 347 | u32 skb_allocated; |
307 | u32 skb_completed; | 348 | u32 skb_completed; |
308 | u32 skb_dropped; | 349 | u32 skb_dropped; |
350 | u32 err_crc; | ||
351 | u32 err_decrypt_crc; | ||
352 | u32 err_mic; | ||
353 | u32 err_pre_delim; | ||
354 | u32 err_post_delim; | ||
355 | u32 err_decrypt_busy; | ||
356 | u32 err_phy; | ||
357 | u32 err_phy_stats[ATH9K_PHYERR_MAX]; | ||
309 | }; | 358 | }; |
310 | 359 | ||
311 | struct ath9k_debug { | 360 | struct ath9k_debug { |
312 | struct dentry *debugfs_phy; | 361 | struct dentry *debugfs_phy; |
313 | struct dentry *debugfs_tgt_stats; | ||
314 | struct dentry *debugfs_xmit; | ||
315 | struct dentry *debugfs_recv; | ||
316 | struct ath_tx_stats tx_stats; | 362 | struct ath_tx_stats tx_stats; |
317 | struct ath_rx_stats rx_stats; | 363 | struct ath_rx_stats rx_stats; |
318 | u32 txrate; | ||
319 | }; | 364 | }; |
320 | 365 | ||
321 | #else | 366 | #else |
322 | 367 | ||
323 | #define TX_STAT_INC(c) do { } while (0) | 368 | #define TX_STAT_INC(c) do { } while (0) |
324 | #define RX_STAT_INC(c) do { } while (0) | 369 | #define RX_STAT_INC(c) do { } while (0) |
370 | #define CAB_STAT_INC do { } while (0) | ||
325 | 371 | ||
326 | #define TX_QSTAT_INC(c) do { } while (0) | 372 | #define TX_QSTAT_INC(c) do { } while (0) |
327 | 373 | ||
374 | static inline void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv, | ||
375 | struct ath_htc_rx_status *rxs) | ||
376 | { | ||
377 | } | ||
378 | |||
328 | #endif /* CONFIG_ATH9K_HTC_DEBUGFS */ | 379 | #endif /* CONFIG_ATH9K_HTC_DEBUGFS */ |
329 | 380 | ||
330 | #define ATH_LED_PIN_DEF 1 | 381 | #define ATH_LED_PIN_DEF 1 |
@@ -351,10 +402,21 @@ struct ath_led { | |||
351 | int brightness; | 402 | int brightness; |
352 | }; | 403 | }; |
353 | 404 | ||
405 | #define BSTUCK_THRESHOLD 10 | ||
406 | |||
407 | /* | ||
408 | * Adjust these when the max. no of beaconing interfaces is | ||
409 | * increased. | ||
410 | */ | ||
411 | #define DEFAULT_SWBA_RESPONSE 40 /* in TUs */ | ||
412 | #define MIN_SWBA_RESPONSE 10 /* in TUs */ | ||
413 | |||
354 | struct htc_beacon_config { | 414 | struct htc_beacon_config { |
415 | struct ieee80211_vif *bslot[ATH9K_HTC_MAX_BCN_VIF]; | ||
355 | u16 beacon_interval; | 416 | u16 beacon_interval; |
356 | u16 dtim_period; | 417 | u16 dtim_period; |
357 | u16 bmiss_timeout; | 418 | u16 bmiss_timeout; |
419 | u32 bmiss_cnt; | ||
358 | }; | 420 | }; |
359 | 421 | ||
360 | struct ath_btcoex { | 422 | struct ath_btcoex { |
@@ -388,6 +450,9 @@ struct ath9k_htc_priv { | |||
388 | struct htc_target *htc; | 450 | struct htc_target *htc; |
389 | struct wmi *wmi; | 451 | struct wmi *wmi; |
390 | 452 | ||
453 | u16 fw_version_major; | ||
454 | u16 fw_version_minor; | ||
455 | |||
391 | enum htc_endpoint_id wmi_cmd_ep; | 456 | enum htc_endpoint_id wmi_cmd_ep; |
392 | enum htc_endpoint_id beacon_ep; | 457 | enum htc_endpoint_id beacon_ep; |
393 | enum htc_endpoint_id cab_ep; | 458 | enum htc_endpoint_id cab_ep; |
@@ -411,27 +476,23 @@ struct ath9k_htc_priv { | |||
411 | u16 txpowlimit; | 476 | u16 txpowlimit; |
412 | u16 nvifs; | 477 | u16 nvifs; |
413 | u16 nstations; | 478 | u16 nstations; |
414 | u32 bmiss_cnt; | ||
415 | bool rearm_ani; | 479 | bool rearm_ani; |
416 | bool reconfig_beacon; | 480 | bool reconfig_beacon; |
481 | unsigned int rxfilter; | ||
417 | 482 | ||
418 | struct ath9k_hw_cal_data caldata; | 483 | struct ath9k_hw_cal_data caldata; |
484 | struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; | ||
419 | 485 | ||
420 | spinlock_t beacon_lock; | 486 | spinlock_t beacon_lock; |
487 | struct htc_beacon_config cur_beacon_conf; | ||
421 | 488 | ||
422 | bool tx_queues_stop; | 489 | struct ath9k_htc_rx rx; |
423 | spinlock_t tx_lock; | 490 | struct ath9k_htc_tx tx; |
424 | 491 | ||
425 | struct ieee80211_vif *vif; | ||
426 | struct htc_beacon_config cur_beacon_conf; | ||
427 | unsigned int rxfilter; | ||
428 | struct tasklet_struct swba_tasklet; | 492 | struct tasklet_struct swba_tasklet; |
429 | struct tasklet_struct rx_tasklet; | 493 | struct tasklet_struct rx_tasklet; |
430 | struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; | ||
431 | struct ath9k_htc_rx rx; | ||
432 | struct tasklet_struct tx_tasklet; | ||
433 | struct sk_buff_head tx_queue; | ||
434 | struct delayed_work ani_work; | 494 | struct delayed_work ani_work; |
495 | struct tasklet_struct tx_failed_tasklet; | ||
435 | struct work_struct ps_work; | 496 | struct work_struct ps_work; |
436 | struct work_struct fatal_work; | 497 | struct work_struct fatal_work; |
437 | 498 | ||
@@ -470,11 +531,18 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz) | |||
470 | 531 | ||
471 | void ath9k_htc_reset(struct ath9k_htc_priv *priv); | 532 | void ath9k_htc_reset(struct ath9k_htc_priv *priv); |
472 | 533 | ||
534 | void ath9k_htc_assign_bslot(struct ath9k_htc_priv *priv, | ||
535 | struct ieee80211_vif *vif); | ||
536 | void ath9k_htc_remove_bslot(struct ath9k_htc_priv *priv, | ||
537 | struct ieee80211_vif *vif); | ||
538 | void ath9k_htc_set_tsfadjust(struct ath9k_htc_priv *priv, | ||
539 | struct ieee80211_vif *vif); | ||
473 | void ath9k_htc_beaconq_config(struct ath9k_htc_priv *priv); | 540 | void ath9k_htc_beaconq_config(struct ath9k_htc_priv *priv); |
474 | void ath9k_htc_beacon_config(struct ath9k_htc_priv *priv, | 541 | void ath9k_htc_beacon_config(struct ath9k_htc_priv *priv, |
475 | struct ieee80211_vif *vif); | 542 | struct ieee80211_vif *vif); |
476 | void ath9k_htc_beacon_reconfig(struct ath9k_htc_priv *priv); | 543 | void ath9k_htc_beacon_reconfig(struct ath9k_htc_priv *priv); |
477 | void ath9k_htc_swba(struct ath9k_htc_priv *priv, u8 beacon_pending); | 544 | void ath9k_htc_swba(struct ath9k_htc_priv *priv, |
545 | struct wmi_event_swba *swba); | ||
478 | 546 | ||
479 | void ath9k_htc_rxep(void *priv, struct sk_buff *skb, | 547 | void ath9k_htc_rxep(void *priv, struct sk_buff *skb, |
480 | enum htc_endpoint_id ep_id); | 548 | enum htc_endpoint_id ep_id); |
@@ -491,14 +559,23 @@ void ath9k_htc_start_ani(struct ath9k_htc_priv *priv); | |||
491 | void ath9k_htc_stop_ani(struct ath9k_htc_priv *priv); | 559 | void ath9k_htc_stop_ani(struct ath9k_htc_priv *priv); |
492 | 560 | ||
493 | int ath9k_tx_init(struct ath9k_htc_priv *priv); | 561 | int ath9k_tx_init(struct ath9k_htc_priv *priv); |
494 | void ath9k_tx_tasklet(unsigned long data); | 562 | int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, |
495 | int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb); | 563 | struct sk_buff *skb, u8 slot, bool is_cab); |
496 | void ath9k_tx_cleanup(struct ath9k_htc_priv *priv); | 564 | void ath9k_tx_cleanup(struct ath9k_htc_priv *priv); |
497 | bool ath9k_htc_txq_setup(struct ath9k_htc_priv *priv, int subtype); | 565 | bool ath9k_htc_txq_setup(struct ath9k_htc_priv *priv, int subtype); |
498 | int ath9k_htc_cabq_setup(struct ath9k_htc_priv *priv); | 566 | int ath9k_htc_cabq_setup(struct ath9k_htc_priv *priv); |
499 | int get_hw_qnum(u16 queue, int *hwq_map); | 567 | int get_hw_qnum(u16 queue, int *hwq_map); |
500 | int ath_htc_txq_update(struct ath9k_htc_priv *priv, int qnum, | 568 | int ath_htc_txq_update(struct ath9k_htc_priv *priv, int qnum, |
501 | struct ath9k_tx_queue_info *qinfo); | 569 | struct ath9k_tx_queue_info *qinfo); |
570 | void ath9k_htc_check_stop_queues(struct ath9k_htc_priv *priv); | ||
571 | void ath9k_htc_check_wake_queues(struct ath9k_htc_priv *priv); | ||
572 | int ath9k_htc_tx_get_slot(struct ath9k_htc_priv *priv); | ||
573 | void ath9k_htc_tx_clear_slot(struct ath9k_htc_priv *priv, int slot); | ||
574 | void ath9k_htc_tx_drain(struct ath9k_htc_priv *priv); | ||
575 | void ath9k_htc_txstatus(struct ath9k_htc_priv *priv, void *wmi_event); | ||
576 | void ath9k_htc_tx_failed(struct ath9k_htc_priv *priv); | ||
577 | void ath9k_tx_failed_tasklet(unsigned long data); | ||
578 | void ath9k_htc_tx_cleanup_timer(unsigned long data); | ||
502 | 579 | ||
503 | int ath9k_rx_init(struct ath9k_htc_priv *priv); | 580 | int ath9k_rx_init(struct ath9k_htc_priv *priv); |
504 | void ath9k_rx_cleanup(struct ath9k_htc_priv *priv); | 581 | void ath9k_rx_cleanup(struct ath9k_htc_priv *priv); |
@@ -528,15 +605,9 @@ void ath9k_htc_suspend(struct htc_target *htc_handle); | |||
528 | int ath9k_htc_resume(struct htc_target *htc_handle); | 605 | int ath9k_htc_resume(struct htc_target *htc_handle); |
529 | #endif | 606 | #endif |
530 | #ifdef CONFIG_ATH9K_HTC_DEBUGFS | 607 | #ifdef CONFIG_ATH9K_HTC_DEBUGFS |
531 | int ath9k_htc_debug_create_root(void); | ||
532 | void ath9k_htc_debug_remove_root(void); | ||
533 | int ath9k_htc_init_debug(struct ath_hw *ah); | 608 | int ath9k_htc_init_debug(struct ath_hw *ah); |
534 | void ath9k_htc_exit_debug(struct ath_hw *ah); | ||
535 | #else | 609 | #else |
536 | static inline int ath9k_htc_debug_create_root(void) { return 0; }; | ||
537 | static inline void ath9k_htc_debug_remove_root(void) {}; | ||
538 | static inline int ath9k_htc_init_debug(struct ath_hw *ah) { return 0; }; | 610 | static inline int ath9k_htc_init_debug(struct ath_hw *ah) { return 0; }; |
539 | static inline void ath9k_htc_exit_debug(struct ath_hw *ah) {}; | ||
540 | #endif /* CONFIG_ATH9K_HTC_DEBUGFS */ | 611 | #endif /* CONFIG_ATH9K_HTC_DEBUGFS */ |
541 | 612 | ||
542 | #endif /* HTC_H */ | 613 | #endif /* HTC_H */ |