~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to drivers/net/wireless/ath/ath9k/htc.h

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (c) 2010 Atheros Communications Inc.
 
2
 * Copyright (c) 2010-2011 Atheros Communications Inc.
3
3
 *
4
4
 * Permission to use, copy, modify, and/or distribute this software for any
5
5
 * purpose with or without fee is hereby granted, provided that the above
32
32
#include "wmi.h"
33
33
 
34
34
#define ATH_STA_SHORT_CALINTERVAL 1000    /* 1 second */
 
35
#define ATH_AP_SHORT_CALINTERVAL  100     /* 100 ms */
35
36
#define ATH_ANI_POLLINTERVAL      100     /* 100 ms */
36
37
#define ATH_LONG_CALINTERVAL      30000   /* 30 seconds */
37
38
#define ATH_RESTART_CALINTERVAL   1200000 /* 20 minutes */
45
46
extern int htc_modparam_nohwcrypt;
46
47
 
47
48
enum htc_phymode {
48
 
        HTC_MODE_AUTO           = 0,
49
 
        HTC_MODE_11A            = 1,
50
 
        HTC_MODE_11B            = 2,
51
 
        HTC_MODE_11G            = 3,
52
 
        HTC_MODE_FH             = 4,
53
 
        HTC_MODE_TURBO_A        = 5,
54
 
        HTC_MODE_TURBO_G        = 6,
55
 
        HTC_MODE_11NA           = 7,
56
 
        HTC_MODE_11NG           = 8
 
49
        HTC_MODE_11NA           = 0,
 
50
        HTC_MODE_11NG           = 1
57
51
};
58
52
 
59
53
enum htc_opmode {
65
59
        HTC_M_WDS       = 2
66
60
};
67
61
 
68
 
#define ATH9K_HTC_HDRSPACE sizeof(struct htc_frame_hdr)
69
 
#define ATH9K_HTC_AMPDU 1
 
62
#define ATH9K_HTC_AMPDU  1
70
63
#define ATH9K_HTC_NORMAL 2
 
64
#define ATH9K_HTC_BEACON 3
 
65
#define ATH9K_HTC_MGMT   4
71
66
 
72
67
#define ATH9K_HTC_TX_CTSONLY      0x1
73
68
#define ATH9K_HTC_TX_RTSCTS       0x2
74
 
#define ATH9K_HTC_TX_USE_MIN_RATE 0x100
75
69
 
76
70
struct tx_frame_hdr {
77
71
        u8 data_type;
81
75
        __be32 flags; /* ATH9K_HTC_TX_* */
82
76
        u8 key_type;
83
77
        u8 keyix;
84
 
        u8 reserved[26];
 
78
        u8 cookie;
 
79
        u8 pad;
85
80
} __packed;
86
81
 
87
82
struct tx_mgmt_hdr {
91
86
        u8 flags;
92
87
        u8 key_type;
93
88
        u8 keyix;
94
 
        u16 reserved;
 
89
        u8 cookie;
 
90
        u8 pad;
95
91
} __packed;
96
92
 
97
93
struct tx_beacon_header {
 
94
        u8 vif_index;
98
95
        u8 len_changed;
99
 
        u8 vif_index;
100
96
        u16 rev;
101
97
} __packed;
102
98
 
103
 
struct ath9k_htc_target_hw {
104
 
        u32 flags;
105
 
        u32 flags_ext;
106
 
        u32 ampdu_limit;
107
 
        u8 ampdu_subframes;
108
 
        u8 tx_chainmask;
109
 
        u8 tx_chainmask_legacy;
110
 
        u8 rtscts_ratecode;
111
 
        u8 protmode;
112
 
} __packed;
 
99
#define MAX_TX_AMPDU_SUBFRAMES_9271 17
 
100
#define MAX_TX_AMPDU_SUBFRAMES_7010 22
113
101
 
114
102
struct ath9k_htc_cap_target {
115
 
        u32 flags;
116
 
        u32 flags_ext;
117
 
        u32 ampdu_limit;
 
103
        __be32 ampdu_limit;
118
104
        u8 ampdu_subframes;
 
105
        u8 enable_coex;
119
106
        u8 tx_chainmask;
120
 
        u8 tx_chainmask_legacy;
121
 
        u8 rtscts_ratecode;
122
 
        u8 protmode;
 
107
        u8 pad;
123
108
} __packed;
124
109
 
125
110
struct ath9k_htc_target_vif {
126
111
        u8 index;
127
 
        u8 des_bssid[ETH_ALEN];
128
 
        __be32 opmode;
 
112
        u8 opmode;
129
113
        u8 myaddr[ETH_ALEN];
130
 
        u8 bssid[ETH_ALEN];
131
 
        u32 flags;
132
 
        u32 flags_ext;
133
 
        u16 ps_sta;
 
114
        u8 ath_cap;
134
115
        __be16 rtsthreshold;
135
 
        u8 ath_cap;
136
 
        u8 node;
137
 
        s8 mcast_rate;
 
116
        u8 pad;
138
117
} __packed;
139
118
 
140
 
#define ATH_HTC_STA_AUTH  0x0001
141
 
#define ATH_HTC_STA_QOS   0x0002
142
 
#define ATH_HTC_STA_ERP   0x0004
143
 
#define ATH_HTC_STA_HT    0x0008
144
 
 
145
 
/* FIXME: UAPSD variables */
146
119
struct ath9k_htc_target_sta {
147
 
        u16 associd;
148
 
        u16 txpower;
149
 
        u32 ucastkey;
150
120
        u8 macaddr[ETH_ALEN];
151
121
        u8 bssid[ETH_ALEN];
152
122
        u8 sta_index;
153
123
        u8 vif_index;
154
 
        u8 vif_sta;
155
 
        __be16 flags; /* ATH_HTC_STA_* */
156
 
        u16 htcap;
157
 
        u8 valid;
158
 
        u16 capinfo;
159
 
        struct ath9k_htc_target_hw *hw;
160
 
        struct ath9k_htc_target_vif *vif;
161
 
        u16 txseqmgmt;
162
124
        u8 is_vif_sta;
163
 
        u16 maxampdu;
164
 
        u16 iv16;
165
 
        u32 iv32;
 
125
        __be16 flags;
 
126
        __be16 htcap;
 
127
        __be16 maxampdu;
 
128
        u8 pad;
166
129
} __packed;
167
130
 
168
131
struct ath9k_htc_target_aggr {
196
159
        struct ath9k_htc_rate rates;
197
160
};
198
161
 
199
 
struct ath9k_htc_target_stats {
200
 
        __be32 tx_shortretry;
201
 
        __be32 tx_longretry;
202
 
        __be32 tx_xretries;
203
 
        __be32 ht_txunaggr_xretry;
204
 
        __be32 ht_tx_xretries;
205
 
} __packed;
 
162
struct ath9k_htc_target_rate_mask {
 
163
        u8 vif_index;
 
164
        u8 band;
 
165
        __be32 mask;
 
166
        u16 pad;
 
167
} __packed;
 
168
 
 
169
struct ath9k_htc_target_int_stats {
 
170
        __be32 rx;
 
171
        __be32 rxorn;
 
172
        __be32 rxeol;
 
173
        __be32 txurn;
 
174
        __be32 txto;
 
175
        __be32 cst;
 
176
} __packed;
 
177
 
 
178
struct ath9k_htc_target_tx_stats {
 
179
        __be32 xretries;
 
180
        __be32 fifoerr;
 
181
        __be32 filtered;
 
182
        __be32 timer_exp;
 
183
        __be32 shortretries;
 
184
        __be32 longretries;
 
185
        __be32 qnull;
 
186
        __be32 encap_fail;
 
187
        __be32 nobuf;
 
188
} __packed;
 
189
 
 
190
struct ath9k_htc_target_rx_stats {
 
191
        __be32 nobuf;
 
192
        __be32 host_send;
 
193
        __be32 host_done;
 
194
} __packed;
 
195
 
 
196
#define ATH9K_HTC_MAX_VIF 2
 
197
#define ATH9K_HTC_MAX_BCN_VIF 2
 
198
 
 
199
#define INC_VIF(_priv, _type) do {              \
 
200
                switch (_type) {                \
 
201
                case NL80211_IFTYPE_STATION:    \
 
202
                        _priv->num_sta_vif++;   \
 
203
                        break;                  \
 
204
                case NL80211_IFTYPE_ADHOC:      \
 
205
                        _priv->num_ibss_vif++;  \
 
206
                        break;                  \
 
207
                case NL80211_IFTYPE_AP:         \
 
208
                        _priv->num_ap_vif++;    \
 
209
                        break;                  \
 
210
                default:                        \
 
211
                        break;                  \
 
212
                }                               \
 
213
        } while (0)
 
214
 
 
215
#define DEC_VIF(_priv, _type) do {              \
 
216
                switch (_type) {                \
 
217
                case NL80211_IFTYPE_STATION:    \
 
218
                        _priv->num_sta_vif--;   \
 
219
                        break;                  \
 
220
                case NL80211_IFTYPE_ADHOC:      \
 
221
                        _priv->num_ibss_vif--;  \
 
222
                        break;                  \
 
223
                case NL80211_IFTYPE_AP:         \
 
224
                        _priv->num_ap_vif--;    \
 
225
                        break;                  \
 
226
                default:                        \
 
227
                        break;                  \
 
228
                }                               \
 
229
        } while (0)
206
230
 
207
231
struct ath9k_htc_vif {
208
232
        u8 index;
 
233
        u16 seq_no;
 
234
        bool beacon_configured;
 
235
        int bslot;
 
236
        __le64 tsfadjust;
 
237
};
 
238
 
 
239
struct ath9k_vif_iter_data {
 
240
        const u8 *hw_macaddr;
 
241
        u8 mask[ETH_ALEN];
209
242
};
210
243
 
211
244
#define ATH9K_HTC_MAX_STA 8
239
272
        spinlock_t rxbuflock;
240
273
};
241
274
 
 
275
#define ATH9K_HTC_TX_CLEANUP_INTERVAL 50 /* ms */
 
276
#define ATH9K_HTC_TX_TIMEOUT_INTERVAL 3000 /* ms */
 
277
#define ATH9K_HTC_TX_RESERVE 10
 
278
#define ATH9K_HTC_TX_TIMEOUT_COUNT 40
 
279
#define ATH9K_HTC_TX_THRESHOLD (MAX_TX_BUF_NUM - ATH9K_HTC_TX_RESERVE)
 
280
 
 
281
#define ATH9K_HTC_OP_TX_QUEUES_STOP BIT(0)
 
282
#define ATH9K_HTC_OP_TX_DRAIN       BIT(1)
 
283
 
 
284
struct ath9k_htc_tx {
 
285
        u8 flags;
 
286
        int queued_cnt;
 
287
        struct sk_buff_head mgmt_ep_queue;
 
288
        struct sk_buff_head cab_ep_queue;
 
289
        struct sk_buff_head data_be_queue;
 
290
        struct sk_buff_head data_bk_queue;
 
291
        struct sk_buff_head data_vi_queue;
 
292
        struct sk_buff_head data_vo_queue;
 
293
        struct sk_buff_head tx_failed;
 
294
        DECLARE_BITMAP(tx_slot, MAX_TX_BUF_NUM);
 
295
        struct timer_list cleanup_timer;
 
296
        spinlock_t tx_lock;
 
297
};
 
298
 
242
299
struct ath9k_htc_tx_ctl {
243
300
        u8 type; /* ATH9K_HTC_* */
 
301
        u8 epid;
 
302
        u8 txok;
 
303
        u8 sta_idx;
 
304
        unsigned long timestamp;
244
305
};
245
306
 
 
307
static inline struct ath9k_htc_tx_ctl *HTC_SKB_CB(struct sk_buff *skb)
 
308
{
 
309
        struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
 
310
 
 
311
        BUILD_BUG_ON(sizeof(struct ath9k_htc_tx_ctl) >
 
312
                     IEEE80211_TX_INFO_DRIVER_DATA_SIZE);
 
313
        return (struct ath9k_htc_tx_ctl *) &tx_info->driver_data;
 
314
}
 
315
 
246
316
#ifdef CONFIG_ATH9K_HTC_DEBUGFS
247
317
 
248
318
#define TX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c++)
249
319
#define RX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.rx_stats.c++)
 
320
#define CAB_STAT_INC   priv->debug.tx_stats.cab_queued++
250
321
 
251
322
#define TX_QSTAT_INC(q) (priv->debug.tx_stats.queue_stats[q]++)
252
323
 
 
324
void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv,
 
325
                           struct ath_htc_rx_status *rxs);
 
326
 
253
327
struct ath_tx_stats {
254
328
        u32 buf_queued;
255
329
        u32 buf_completed;
256
330
        u32 skb_queued;
257
 
        u32 skb_completed;
258
 
        u32 skb_dropped;
 
331
        u32 skb_success;
 
332
        u32 skb_failed;
 
333
        u32 cab_queued;
259
334
        u32 queue_stats[WME_NUM_AC];
260
335
};
261
336
 
263
338
        u32 skb_allocated;
264
339
        u32 skb_completed;
265
340
        u32 skb_dropped;
 
341
        u32 err_crc;
 
342
        u32 err_decrypt_crc;
 
343
        u32 err_mic;
 
344
        u32 err_pre_delim;
 
345
        u32 err_post_delim;
 
346
        u32 err_decrypt_busy;
 
347
        u32 err_phy;
 
348
        u32 err_phy_stats[ATH9K_PHYERR_MAX];
266
349
};
267
350
 
268
351
struct ath9k_debug {
269
352
        struct dentry *debugfs_phy;
270
 
        struct dentry *debugfs_tgt_stats;
271
 
        struct dentry *debugfs_xmit;
272
 
        struct dentry *debugfs_recv;
273
353
        struct ath_tx_stats tx_stats;
274
354
        struct ath_rx_stats rx_stats;
275
 
        u32 txrate;
276
355
};
277
356
 
278
357
#else
279
358
 
280
359
#define TX_STAT_INC(c) do { } while (0)
281
360
#define RX_STAT_INC(c) do { } while (0)
 
361
#define CAB_STAT_INC   do { } while (0)
282
362
 
283
363
#define TX_QSTAT_INC(c) do { } while (0)
284
364
 
 
365
static inline void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv,
 
366
                                         struct ath_htc_rx_status *rxs)
 
367
{
 
368
}
 
369
 
285
370
#endif /* CONFIG_ATH9K_HTC_DEBUGFS */
286
371
 
287
372
#define ATH_LED_PIN_DEF             1
288
 
#define ATH_LED_PIN_9287            8
 
373
#define ATH_LED_PIN_9287            10
289
374
#define ATH_LED_PIN_9271            15
290
375
#define ATH_LED_PIN_7010            12
291
 
#define ATH_LED_ON_DURATION_IDLE    350 /* in msecs */
292
 
#define ATH_LED_OFF_DURATION_IDLE   250 /* in msecs */
293
 
 
294
 
enum ath_led_type {
295
 
        ATH_LED_RADIO,
296
 
        ATH_LED_ASSOC,
297
 
        ATH_LED_TX,
298
 
        ATH_LED_RX
299
 
};
300
 
 
301
 
struct ath_led {
302
 
        struct ath9k_htc_priv *priv;
303
 
        struct led_classdev led_cdev;
304
 
        enum ath_led_type led_type;
305
 
        struct delayed_work brightness_work;
306
 
        char name[32];
307
 
        bool registered;
308
 
        int brightness;
309
 
};
 
376
 
 
377
#define BSTUCK_THRESHOLD 10
 
378
 
 
379
/*
 
380
 * Adjust these when the max. no of beaconing interfaces is
 
381
 * increased.
 
382
 */
 
383
#define DEFAULT_SWBA_RESPONSE 40 /* in TUs */
 
384
#define MIN_SWBA_RESPONSE     10 /* in TUs */
310
385
 
311
386
struct htc_beacon_config {
 
387
        struct ieee80211_vif *bslot[ATH9K_HTC_MAX_BCN_VIF];
312
388
        u16 beacon_interval;
313
 
        u16 listen_interval;
314
389
        u16 dtim_period;
315
390
        u16 bmiss_timeout;
316
 
        u8 dtim_count;
 
391
        u32 bmiss_cnt;
317
392
};
318
393
 
319
394
struct ath_btcoex {
331
406
 
332
407
#define OP_INVALID                 BIT(0)
333
408
#define OP_SCANNING                BIT(1)
334
 
#define OP_LED_ASSOCIATED          BIT(2)
335
 
#define OP_LED_ON                  BIT(3)
336
 
#define OP_PREAMBLE_SHORT          BIT(4)
337
 
#define OP_PROTECT_ENABLE          BIT(5)
338
 
#define OP_ASSOCIATED              BIT(6)
339
 
#define OP_ENABLE_BEACON           BIT(7)
340
 
#define OP_LED_DEINIT              BIT(8)
341
 
#define OP_BT_PRIORITY_DETECTED    BIT(9)
342
 
#define OP_BT_SCAN                 BIT(10)
 
409
#define OP_ENABLE_BEACON           BIT(2)
 
410
#define OP_BT_PRIORITY_DETECTED    BIT(3)
 
411
#define OP_BT_SCAN                 BIT(4)
 
412
#define OP_ANI_RUNNING             BIT(5)
 
413
#define OP_TSF_RESET               BIT(6)
343
414
 
344
415
struct ath9k_htc_priv {
345
416
        struct device *dev;
348
419
        struct htc_target *htc;
349
420
        struct wmi *wmi;
350
421
 
 
422
        u16 fw_version_major;
 
423
        u16 fw_version_minor;
 
424
 
351
425
        enum htc_endpoint_id wmi_cmd_ep;
352
426
        enum htc_endpoint_id beacon_ep;
353
427
        enum htc_endpoint_id cab_ep;
358
432
        enum htc_endpoint_id data_vi_ep;
359
433
        enum htc_endpoint_id data_vo_ep;
360
434
 
 
435
        u8 vif_slot;
 
436
        u8 mon_vif_idx;
 
437
        u8 sta_slot;
 
438
        u8 vif_sta_pos[ATH9K_HTC_MAX_VIF];
 
439
        u8 num_ibss_vif;
 
440
        u8 num_sta_vif;
 
441
        u8 num_sta_assoc_vif;
 
442
        u8 num_ap_vif;
 
443
 
361
444
        u16 op_flags;
362
445
        u16 curtxpow;
363
446
        u16 txpowlimit;
364
447
        u16 nvifs;
365
448
        u16 nstations;
366
 
        u16 seq_no;
367
 
        u32 bmiss_cnt;
 
449
        bool rearm_ani;
 
450
        bool reconfig_beacon;
 
451
        unsigned int rxfilter;
368
452
 
369
 
        struct ath9k_hw_cal_data caldata[ATH9K_NUM_CHANNELS];
 
453
        struct ath9k_hw_cal_data caldata;
 
454
        struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
370
455
 
371
456
        spinlock_t beacon_lock;
372
 
 
373
 
        bool tx_queues_stop;
374
 
        spinlock_t tx_lock;
375
 
 
376
 
        struct ieee80211_vif *vif;
377
457
        struct htc_beacon_config cur_beacon_conf;
378
 
        unsigned int rxfilter;
 
458
 
 
459
        struct ath9k_htc_rx rx;
 
460
        struct ath9k_htc_tx tx;
 
461
 
379
462
        struct tasklet_struct swba_tasklet;
380
463
        struct tasklet_struct rx_tasklet;
381
 
        struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
382
 
        struct ath9k_htc_rx rx;
383
 
        struct tasklet_struct tx_tasklet;
384
 
        struct sk_buff_head tx_queue;
385
 
        struct delayed_work ath9k_ani_work;
 
464
        struct delayed_work ani_work;
 
465
        struct tasklet_struct tx_failed_tasklet;
386
466
        struct work_struct ps_work;
387
467
        struct work_struct fatal_work;
388
468
 
391
471
        bool ps_enabled;
392
472
        bool ps_idle;
393
473
 
394
 
        struct ath_led radio_led;
395
 
        struct ath_led assoc_led;
396
 
        struct ath_led tx_led;
397
 
        struct ath_led rx_led;
398
 
        struct delayed_work ath9k_led_blink_work;
399
 
        int led_on_duration;
400
 
        int led_off_duration;
401
 
        int led_on_cnt;
402
 
        int led_off_cnt;
 
474
#ifdef CONFIG_MAC80211_LEDS
 
475
        enum led_brightness brightness;
 
476
        bool led_registered;
 
477
        char led_name[32];
 
478
        struct led_classdev led_cdev;
 
479
        struct work_struct led_work;
 
480
#endif
403
481
 
404
482
        int beaconq;
405
483
        int cabq;
421
499
 
422
500
void ath9k_htc_reset(struct ath9k_htc_priv *priv);
423
501
 
 
502
void ath9k_htc_assign_bslot(struct ath9k_htc_priv *priv,
 
503
                            struct ieee80211_vif *vif);
 
504
void ath9k_htc_remove_bslot(struct ath9k_htc_priv *priv,
 
505
                            struct ieee80211_vif *vif);
 
506
void ath9k_htc_set_tsfadjust(struct ath9k_htc_priv *priv,
 
507
                             struct ieee80211_vif *vif);
424
508
void ath9k_htc_beaconq_config(struct ath9k_htc_priv *priv);
425
509
void ath9k_htc_beacon_config(struct ath9k_htc_priv *priv,
426
510
                             struct ieee80211_vif *vif);
427
 
void ath9k_htc_swba(struct ath9k_htc_priv *priv, u8 beacon_pending);
 
511
void ath9k_htc_beacon_reconfig(struct ath9k_htc_priv *priv);
 
512
void ath9k_htc_swba(struct ath9k_htc_priv *priv,
 
513
                    struct wmi_event_swba *swba);
428
514
 
429
515
void ath9k_htc_rxep(void *priv, struct sk_buff *skb,
430
516
                    enum htc_endpoint_id ep_id);
433
519
void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb,
434
520
                        enum htc_endpoint_id ep_id, bool txok);
435
521
 
436
 
int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv);
 
522
int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv,
 
523
                                u8 enable_coex);
437
524
void ath9k_htc_station_work(struct work_struct *work);
438
525
void ath9k_htc_aggr_work(struct work_struct *work);
439
 
void ath9k_ani_work(struct work_struct *work);;
440
 
void ath_start_ani(struct ath9k_htc_priv *priv);
 
526
void ath9k_htc_ani_work(struct work_struct *work);
 
527
void ath9k_htc_start_ani(struct ath9k_htc_priv *priv);
 
528
void ath9k_htc_stop_ani(struct ath9k_htc_priv *priv);
441
529
 
442
530
int ath9k_tx_init(struct ath9k_htc_priv *priv);
443
 
void ath9k_tx_tasklet(unsigned long data);
444
 
int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb);
 
531
int ath9k_htc_tx_start(struct ath9k_htc_priv *priv,
 
532
                       struct sk_buff *skb, u8 slot, bool is_cab);
445
533
void ath9k_tx_cleanup(struct ath9k_htc_priv *priv);
446
534
bool ath9k_htc_txq_setup(struct ath9k_htc_priv *priv, int subtype);
447
535
int ath9k_htc_cabq_setup(struct ath9k_htc_priv *priv);
448
536
int get_hw_qnum(u16 queue, int *hwq_map);
449
537
int ath_htc_txq_update(struct ath9k_htc_priv *priv, int qnum,
450
538
                       struct ath9k_tx_queue_info *qinfo);
 
539
void ath9k_htc_check_stop_queues(struct ath9k_htc_priv *priv);
 
540
void ath9k_htc_check_wake_queues(struct ath9k_htc_priv *priv);
 
541
int ath9k_htc_tx_get_slot(struct ath9k_htc_priv *priv);
 
542
void ath9k_htc_tx_clear_slot(struct ath9k_htc_priv *priv, int slot);
 
543
void ath9k_htc_tx_drain(struct ath9k_htc_priv *priv);
 
544
void ath9k_htc_txstatus(struct ath9k_htc_priv *priv, void *wmi_event);
 
545
void ath9k_htc_tx_failed(struct ath9k_htc_priv *priv);
 
546
void ath9k_tx_failed_tasklet(unsigned long data);
 
547
void ath9k_htc_tx_cleanup_timer(unsigned long data);
451
548
 
452
549
int ath9k_rx_init(struct ath9k_htc_priv *priv);
453
550
void ath9k_rx_cleanup(struct ath9k_htc_priv *priv);
460
557
void ath9k_ps_work(struct work_struct *work);
461
558
bool ath9k_htc_setpower(struct ath9k_htc_priv *priv,
462
559
                        enum ath9k_power_mode mode);
463
 
void ath_update_txpow(struct ath9k_htc_priv *priv);
464
560
 
465
561
void ath9k_start_rfkill_poll(struct ath9k_htc_priv *priv);
466
562
void ath9k_htc_rfkill_poll_state(struct ieee80211_hw *hw);
467
563
void ath9k_htc_radio_enable(struct ieee80211_hw *hw);
468
564
void ath9k_htc_radio_disable(struct ieee80211_hw *hw);
469
 
void ath9k_led_stop_brightness(struct ath9k_htc_priv *priv);
 
565
 
 
566
#ifdef CONFIG_MAC80211_LEDS
470
567
void ath9k_init_leds(struct ath9k_htc_priv *priv);
471
568
void ath9k_deinit_leds(struct ath9k_htc_priv *priv);
 
569
void ath9k_led_work(struct work_struct *work);
 
570
#else
 
571
static inline void ath9k_init_leds(struct ath9k_htc_priv *priv)
 
572
{
 
573
}
 
574
 
 
575
static inline void ath9k_deinit_leds(struct ath9k_htc_priv *priv)
 
576
{
 
577
}
 
578
 
 
579
static inline void ath9k_led_work(struct work_struct *work)
 
580
{
 
581
}
 
582
#endif
472
583
 
473
584
int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
474
585
                           u16 devid, char *product, u32 drv_info);
478
589
int ath9k_htc_resume(struct htc_target *htc_handle);
479
590
#endif
480
591
#ifdef CONFIG_ATH9K_HTC_DEBUGFS
481
 
int ath9k_htc_debug_create_root(void);
482
 
void ath9k_htc_debug_remove_root(void);
483
592
int ath9k_htc_init_debug(struct ath_hw *ah);
484
 
void ath9k_htc_exit_debug(struct ath_hw *ah);
485
593
#else
486
 
static inline int ath9k_htc_debug_create_root(void) { return 0; };
487
 
static inline void ath9k_htc_debug_remove_root(void) {};
488
594
static inline int ath9k_htc_init_debug(struct ath_hw *ah) { return 0; };
489
 
static inline void ath9k_htc_exit_debug(struct ath_hw *ah) {};
490
595
#endif /* CONFIG_ATH9K_HTC_DEBUGFS */
491
596
 
492
597
#endif /* HTC_H */