root/drivers/net/wireless/ath/ath9k/htc.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. HTC_SKB_CB
  2. ath9k_htc_err_stat_rx
  3. ath9k_htc_init_btcoex
  4. ath9k_htc_start_btcoex
  5. ath9k_htc_stop_btcoex
  6. ath_read_cachesize
  7. ath9k_configure_leds
  8. ath9k_init_leds
  9. ath9k_deinit_leds
  10. ath9k_led_work
  11. ath9k_htc_init_debug
  12. ath9k_htc_deinit_debug

   1 /*
   2  * Copyright (c) 2010-2011 Atheros Communications Inc.
   3  *
   4  * Permission to use, copy, modify, and/or distribute this software for any
   5  * purpose with or without fee is hereby granted, provided that the above
   6  * copyright notice and this permission notice appear in all copies.
   7  *
   8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15  */
  16 
  17 #ifndef HTC_H
  18 #define HTC_H
  19 
  20 #include <linux/module.h>
  21 #include <linux/usb.h>
  22 #include <linux/firmware.h>
  23 #include <linux/skbuff.h>
  24 #include <linux/netdevice.h>
  25 #include <linux/etherdevice.h>
  26 #include <linux/leds.h>
  27 #include <linux/slab.h>
  28 #include <net/mac80211.h>
  29 
  30 #include "common.h"
  31 #include "htc_hst.h"
  32 #include "hif_usb.h"
  33 #include "wmi.h"
  34 
  35 #define ATH_STA_SHORT_CALINTERVAL 1000    /* 1 second */
  36 #define ATH_AP_SHORT_CALINTERVAL  100     /* 100 ms */
  37 #define ATH_ANI_POLLINTERVAL      100     /* 100 ms */
  38 #define ATH_LONG_CALINTERVAL      30000   /* 30 seconds */
  39 #define ATH_RESTART_CALINTERVAL   1200000 /* 20 minutes */
  40 
  41 #define ATH_DEFAULT_BMISS_LIMIT 10
  42 #define TSF_TO_TU(_h, _l) \
  43         ((((u32)(_h)) << 22) | (((u32)(_l)) >> 10))
  44 
  45 extern struct ieee80211_ops ath9k_htc_ops;
  46 extern int htc_modparam_nohwcrypt;
  47 #ifdef CONFIG_MAC80211_LEDS
  48 extern int ath9k_htc_led_blink;
  49 #endif
  50 
  51 enum htc_phymode {
  52         HTC_MODE_11NA           = 0,
  53         HTC_MODE_11NG           = 1
  54 };
  55 
  56 enum htc_opmode {
  57         HTC_M_STA       = 1,
  58         HTC_M_IBSS      = 0,
  59         HTC_M_AHDEMO    = 3,
  60         HTC_M_HOSTAP    = 6,
  61         HTC_M_MONITOR   = 8,
  62         HTC_M_WDS       = 2
  63 };
  64 
  65 #define ATH9K_HTC_AMPDU  1
  66 #define ATH9K_HTC_NORMAL 2
  67 #define ATH9K_HTC_BEACON 3
  68 #define ATH9K_HTC_MGMT   4
  69 
  70 #define ATH9K_HTC_TX_CTSONLY      0x1
  71 #define ATH9K_HTC_TX_RTSCTS       0x2
  72 
  73 struct tx_frame_hdr {
  74         u8 data_type;
  75         u8 node_idx;
  76         u8 vif_idx;
  77         u8 tidno;
  78         __be32 flags; /* ATH9K_HTC_TX_* */
  79         u8 key_type;
  80         u8 keyix;
  81         u8 cookie;
  82         u8 pad;
  83 } __packed;
  84 
  85 struct tx_mgmt_hdr {
  86         u8 node_idx;
  87         u8 vif_idx;
  88         u8 tidno;
  89         u8 flags;
  90         u8 key_type;
  91         u8 keyix;
  92         u8 cookie;
  93         u8 pad;
  94 } __packed;
  95 
  96 struct tx_beacon_header {
  97         u8 vif_index;
  98         u8 len_changed;
  99         u16 rev;
 100 } __packed;
 101 
 102 #define MAX_TX_AMPDU_SUBFRAMES_9271 17
 103 #define MAX_TX_AMPDU_SUBFRAMES_7010 22
 104 
 105 struct ath9k_htc_cap_target {
 106         __be32 ampdu_limit;
 107         u8 ampdu_subframes;
 108         u8 enable_coex;
 109         u8 tx_chainmask;
 110         u8 pad;
 111 } __packed;
 112 
 113 struct ath9k_htc_target_vif {
 114         u8 index;
 115         u8 opmode;
 116         u8 myaddr[ETH_ALEN];
 117         u8 ath_cap;
 118         __be16 rtsthreshold;
 119         u8 pad;
 120 } __packed;
 121 
 122 struct ath9k_htc_target_sta {
 123         u8 macaddr[ETH_ALEN];
 124         u8 bssid[ETH_ALEN];
 125         u8 sta_index;
 126         u8 vif_index;
 127         u8 is_vif_sta;
 128         __be16 flags;
 129         __be16 htcap;
 130         __be16 maxampdu;
 131         u8 pad;
 132 } __packed;
 133 
 134 struct ath9k_htc_target_aggr {
 135         u8 sta_index;
 136         u8 tidno;
 137         u8 aggr_enable;
 138         u8 padding;
 139 } __packed;
 140 
 141 #define ATH_HTC_RATE_MAX 30
 142 
 143 #define WLAN_RC_DS_FLAG  0x01
 144 #define WLAN_RC_40_FLAG  0x02
 145 #define WLAN_RC_SGI_FLAG 0x04
 146 #define WLAN_RC_HT_FLAG  0x08
 147 #define ATH_RC_TX_STBC_FLAG 0x20
 148 
 149 struct ath9k_htc_rateset {
 150         u8 rs_nrates;
 151         u8 rs_rates[ATH_HTC_RATE_MAX];
 152 };
 153 
 154 struct ath9k_htc_rate {
 155         struct ath9k_htc_rateset legacy_rates;
 156         struct ath9k_htc_rateset ht_rates;
 157 } __packed;
 158 
 159 struct ath9k_htc_target_rate {
 160         u8 sta_index;
 161         u8 isnew;
 162         __be32 capflags;
 163         struct ath9k_htc_rate rates;
 164 };
 165 
 166 struct ath9k_htc_target_rate_mask {
 167         u8 vif_index;
 168         u8 band;
 169         __be32 mask;
 170         u16 pad;
 171 } __packed;
 172 
 173 struct ath9k_htc_target_int_stats {
 174         __be32 rx;
 175         __be32 rxorn;
 176         __be32 rxeol;
 177         __be32 txurn;
 178         __be32 txto;
 179         __be32 cst;
 180 } __packed;
 181 
 182 struct ath9k_htc_target_tx_stats {
 183         __be32 xretries;
 184         __be32 fifoerr;
 185         __be32 filtered;
 186         __be32 timer_exp;
 187         __be32 shortretries;
 188         __be32 longretries;
 189         __be32 qnull;
 190         __be32 encap_fail;
 191         __be32 nobuf;
 192 } __packed;
 193 
 194 struct ath9k_htc_target_rx_stats {
 195         __be32 nobuf;
 196         __be32 host_send;
 197         __be32 host_done;
 198 } __packed;
 199 
 200 #define ATH9K_HTC_MAX_VIF 2
 201 #define ATH9K_HTC_MAX_BCN_VIF 2
 202 
 203 #define INC_VIF(_priv, _type) do {              \
 204                 switch (_type) {                \
 205                 case NL80211_IFTYPE_STATION:    \
 206                         _priv->num_sta_vif++;   \
 207                         break;                  \
 208                 case NL80211_IFTYPE_ADHOC:      \
 209                         _priv->num_ibss_vif++;  \
 210                         break;                  \
 211                 case NL80211_IFTYPE_AP:         \
 212                         _priv->num_ap_vif++;    \
 213                         break;                  \
 214                 case NL80211_IFTYPE_MESH_POINT: \
 215                         _priv->num_mbss_vif++;  \
 216                         break;                  \
 217                 default:                        \
 218                         break;                  \
 219                 }                               \
 220         } while (0)
 221 
 222 #define DEC_VIF(_priv, _type) do {              \
 223                 switch (_type) {                \
 224                 case NL80211_IFTYPE_STATION:    \
 225                         _priv->num_sta_vif--;   \
 226                         break;                  \
 227                 case NL80211_IFTYPE_ADHOC:      \
 228                         _priv->num_ibss_vif--;  \
 229                         break;                  \
 230                 case NL80211_IFTYPE_AP:         \
 231                         _priv->num_ap_vif--;    \
 232                         break;                  \
 233                 case NL80211_IFTYPE_MESH_POINT: \
 234                         _priv->num_mbss_vif--;  \
 235                         break;                  \
 236                 default:                        \
 237                         break;                  \
 238                 }                               \
 239         } while (0)
 240 
 241 struct ath9k_htc_vif {
 242         u8 index;
 243         u16 seq_no;
 244         bool beacon_configured;
 245         int bslot;
 246         __le64 tsfadjust;
 247 };
 248 
 249 struct ath9k_vif_iter_data {
 250         const u8 *hw_macaddr;
 251         u8 mask[ETH_ALEN];
 252 };
 253 
 254 #define ATH9K_HTC_MAX_STA 8
 255 #define ATH9K_HTC_MAX_TID 8
 256 
 257 enum tid_aggr_state {
 258         AGGR_STOP = 0,
 259         AGGR_PROGRESS,
 260         AGGR_START,
 261         AGGR_OPERATIONAL
 262 };
 263 
 264 struct ath9k_htc_sta {
 265         u8 index;
 266         enum tid_aggr_state tid_state[ATH9K_HTC_MAX_TID];
 267         struct work_struct rc_update_work;
 268         struct ath9k_htc_priv *htc_priv;
 269 };
 270 
 271 #define ATH9K_HTC_RXBUF 256
 272 #define HTC_RX_FRAME_HEADER_SIZE 40
 273 
 274 struct ath9k_htc_rxbuf {
 275         bool in_process;
 276         struct sk_buff *skb;
 277         struct ath_htc_rx_status rxstatus;
 278         struct list_head list;
 279 };
 280 
 281 struct ath9k_htc_rx {
 282         struct list_head rxbuf;
 283         spinlock_t rxbuflock;
 284 };
 285 
 286 #define ATH9K_HTC_TX_CLEANUP_INTERVAL 50 /* ms */
 287 #define ATH9K_HTC_TX_TIMEOUT_INTERVAL 3000 /* ms */
 288 #define ATH9K_HTC_TX_RESERVE 10
 289 #define ATH9K_HTC_TX_TIMEOUT_COUNT 40
 290 #define ATH9K_HTC_TX_THRESHOLD (MAX_TX_BUF_NUM - ATH9K_HTC_TX_RESERVE)
 291 
 292 #define ATH9K_HTC_OP_TX_QUEUES_STOP BIT(0)
 293 #define ATH9K_HTC_OP_TX_DRAIN       BIT(1)
 294 
 295 struct ath9k_htc_tx {
 296         u8 flags;
 297         int queued_cnt;
 298         struct sk_buff_head mgmt_ep_queue;
 299         struct sk_buff_head cab_ep_queue;
 300         struct sk_buff_head data_be_queue;
 301         struct sk_buff_head data_bk_queue;
 302         struct sk_buff_head data_vi_queue;
 303         struct sk_buff_head data_vo_queue;
 304         struct sk_buff_head tx_failed;
 305         DECLARE_BITMAP(tx_slot, MAX_TX_BUF_NUM);
 306         struct timer_list cleanup_timer;
 307         spinlock_t tx_lock;
 308 };
 309 
 310 struct ath9k_htc_tx_ctl {
 311         u8 type; /* ATH9K_HTC_* */
 312         u8 epid;
 313         u8 txok;
 314         u8 sta_idx;
 315         unsigned long timestamp;
 316 };
 317 
 318 static inline struct ath9k_htc_tx_ctl *HTC_SKB_CB(struct sk_buff *skb)
 319 {
 320         struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
 321 
 322         BUILD_BUG_ON(sizeof(struct ath9k_htc_tx_ctl) >
 323                      IEEE80211_TX_INFO_DRIVER_DATA_SIZE);
 324         return (struct ath9k_htc_tx_ctl *) &tx_info->driver_data;
 325 }
 326 
 327 #ifdef CONFIG_ATH9K_HTC_DEBUGFS
 328 
 329 #define TX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c++)
 330 #define TX_STAT_ADD(c, a) (hif_dev->htc_handle->drv_priv->debug.tx_stats.c += a)
 331 #define RX_STAT_INC(c) (hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c++)
 332 #define RX_STAT_ADD(c, a) (hif_dev->htc_handle->drv_priv->debug.skbrx_stats.c += a)
 333 #define CAB_STAT_INC   priv->debug.tx_stats.cab_queued++
 334 
 335 #define TX_QSTAT_INC(q) (priv->debug.tx_stats.queue_stats[q]++)
 336 
 337 void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv,
 338                            struct ath_rx_status *rs);
 339 
 340 struct ath_tx_stats {
 341         u32 buf_queued;
 342         u32 buf_completed;
 343         u32 skb_queued;
 344         u32 skb_success;
 345         u32 skb_success_bytes;
 346         u32 skb_failed;
 347         u32 cab_queued;
 348         u32 queue_stats[IEEE80211_NUM_ACS];
 349 };
 350 
 351 struct ath_skbrx_stats {
 352         u32 skb_allocated;
 353         u32 skb_completed;
 354         u32 skb_completed_bytes;
 355         u32 skb_dropped;
 356 };
 357 
 358 struct ath9k_debug {
 359         struct dentry *debugfs_phy;
 360         struct ath_tx_stats tx_stats;
 361         struct ath_rx_stats rx_stats;
 362         struct ath_skbrx_stats skbrx_stats;
 363 };
 364 
 365 void ath9k_htc_get_et_strings(struct ieee80211_hw *hw,
 366                               struct ieee80211_vif *vif,
 367                               u32 sset, u8 *data);
 368 int ath9k_htc_get_et_sset_count(struct ieee80211_hw *hw,
 369                                 struct ieee80211_vif *vif, int sset);
 370 void ath9k_htc_get_et_stats(struct ieee80211_hw *hw,
 371                             struct ieee80211_vif *vif,
 372                             struct ethtool_stats *stats, u64 *data);
 373 #else
 374 
 375 #define TX_STAT_INC(c) do { } while (0)
 376 #define TX_STAT_ADD(c, a) do { } while (0)
 377 #define RX_STAT_INC(c) do { } while (0)
 378 #define RX_STAT_ADD(c, a) do { } while (0)
 379 #define CAB_STAT_INC   do { } while (0)
 380 
 381 #define TX_QSTAT_INC(c) do { } while (0)
 382 
 383 static inline void ath9k_htc_err_stat_rx(struct ath9k_htc_priv *priv,
 384                                          struct ath_rx_status *rs)
 385 {
 386 }
 387 
 388 #endif /* CONFIG_ATH9K_HTC_DEBUGFS */
 389 
 390 #define ATH_LED_PIN_DEF             1
 391 #define ATH_LED_PIN_9287            10
 392 #define ATH_LED_PIN_9271            15
 393 #define ATH_LED_PIN_7010            12
 394 
 395 #define BSTUCK_THRESHOLD 10
 396 
 397 /*
 398  * Adjust these when the max. no of beaconing interfaces is
 399  * increased.
 400  */
 401 #define DEFAULT_SWBA_RESPONSE 40 /* in TUs */
 402 #define MIN_SWBA_RESPONSE     10 /* in TUs */
 403 
 404 struct htc_beacon {
 405         enum {
 406                 OK,             /* no change needed */
 407                 UPDATE,         /* update pending */
 408                 COMMIT          /* beacon sent, commit change */
 409         } updateslot;           /* slot time update fsm */
 410 
 411         struct ieee80211_vif *bslot[ATH9K_HTC_MAX_BCN_VIF];
 412         u32 bmisscnt;
 413         u32 beaconq;
 414         int slottime;
 415         int slotupdate;
 416 };
 417 
 418 struct ath_btcoex {
 419         u32 bt_priority_cnt;
 420         unsigned long bt_priority_time;
 421         int bt_stomp_type; /* Types of BT stomping */
 422         u32 btcoex_no_stomp;
 423         u32 btcoex_period;
 424         u32 btscan_no_stomp;
 425 };
 426 
 427 #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
 428 void ath9k_htc_init_btcoex(struct ath9k_htc_priv *priv, char *product);
 429 void ath9k_htc_start_btcoex(struct ath9k_htc_priv *priv);
 430 void ath9k_htc_stop_btcoex(struct ath9k_htc_priv *priv);
 431 #else
 432 static inline void ath9k_htc_init_btcoex(struct ath9k_htc_priv *priv, char *product)
 433 {
 434 }
 435 static inline void ath9k_htc_start_btcoex(struct ath9k_htc_priv *priv)
 436 {
 437 }
 438 static inline void ath9k_htc_stop_btcoex(struct ath9k_htc_priv *priv)
 439 {
 440 }
 441 #endif /* CONFIG_ATH9K_BTCOEX_SUPPORT */
 442 
 443 #define OP_BT_PRIORITY_DETECTED    3
 444 #define OP_BT_SCAN                 4
 445 #define OP_TSF_RESET               6
 446 
 447 enum htc_op_flags {
 448         HTC_FWFLAG_NO_RMW,
 449 };
 450 
 451 struct ath9k_htc_priv {
 452         struct device *dev;
 453         struct ieee80211_hw *hw;
 454         struct ath_hw *ah;
 455         struct htc_target *htc;
 456         struct wmi *wmi;
 457 
 458         u16 fw_version_major;
 459         u16 fw_version_minor;
 460 
 461         enum htc_endpoint_id wmi_cmd_ep;
 462         enum htc_endpoint_id beacon_ep;
 463         enum htc_endpoint_id cab_ep;
 464         enum htc_endpoint_id uapsd_ep;
 465         enum htc_endpoint_id mgmt_ep;
 466         enum htc_endpoint_id data_be_ep;
 467         enum htc_endpoint_id data_bk_ep;
 468         enum htc_endpoint_id data_vi_ep;
 469         enum htc_endpoint_id data_vo_ep;
 470 
 471         u8 vif_slot;
 472         u8 mon_vif_idx;
 473         u8 sta_slot;
 474         u8 vif_sta_pos[ATH9K_HTC_MAX_VIF];
 475         u8 num_ibss_vif;
 476         u8 num_mbss_vif;
 477         u8 num_sta_vif;
 478         u8 num_sta_assoc_vif;
 479         u8 num_ap_vif;
 480 
 481         u16 curtxpow;
 482         u16 txpowlimit;
 483         u16 nvifs;
 484         u16 nstations;
 485         bool rearm_ani;
 486         bool reconfig_beacon;
 487         unsigned int rxfilter;
 488         unsigned long op_flags;
 489         unsigned long fw_flags;
 490 
 491         struct ath9k_hw_cal_data caldata;
 492         struct ath_spec_scan_priv spec_priv;
 493 
 494         spinlock_t beacon_lock;
 495         struct ath_beacon_config cur_beacon_conf;
 496         struct htc_beacon beacon;
 497 
 498         struct ath9k_htc_rx rx;
 499         struct ath9k_htc_tx tx;
 500 
 501         struct tasklet_struct swba_tasklet;
 502         struct tasklet_struct rx_tasklet;
 503         struct delayed_work ani_work;
 504         struct tasklet_struct tx_failed_tasklet;
 505         struct work_struct ps_work;
 506         struct work_struct fatal_work;
 507 
 508         struct mutex htc_pm_lock;
 509         unsigned long ps_usecount;
 510         bool ps_enabled;
 511         bool ps_idle;
 512 
 513 #ifdef CONFIG_MAC80211_LEDS
 514         enum led_brightness brightness;
 515         bool led_registered;
 516         char led_name[32];
 517         struct led_classdev led_cdev;
 518         struct work_struct led_work;
 519 #endif
 520 
 521         int cabq;
 522         int hwq_map[IEEE80211_NUM_ACS];
 523 
 524 #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
 525         struct ath_btcoex btcoex;
 526 #endif
 527 
 528         struct delayed_work coex_period_work;
 529         struct delayed_work duty_cycle_work;
 530 #ifdef CONFIG_ATH9K_HTC_DEBUGFS
 531         struct ath9k_debug debug;
 532 #endif
 533         struct mutex mutex;
 534         struct ieee80211_vif *csa_vif;
 535 };
 536 
 537 static inline void ath_read_cachesize(struct ath_common *common, int *csz)
 538 {
 539         common->bus_ops->read_cachesize(common, csz);
 540 }
 541 
 542 void ath9k_htc_reset(struct ath9k_htc_priv *priv);
 543 
 544 void ath9k_htc_assign_bslot(struct ath9k_htc_priv *priv,
 545                             struct ieee80211_vif *vif);
 546 void ath9k_htc_remove_bslot(struct ath9k_htc_priv *priv,
 547                             struct ieee80211_vif *vif);
 548 void ath9k_htc_set_tsfadjust(struct ath9k_htc_priv *priv,
 549                              struct ieee80211_vif *vif);
 550 void ath9k_htc_beaconq_config(struct ath9k_htc_priv *priv);
 551 void ath9k_htc_beacon_config(struct ath9k_htc_priv *priv,
 552                              struct ieee80211_vif *vif);
 553 void ath9k_htc_beacon_reconfig(struct ath9k_htc_priv *priv);
 554 void ath9k_htc_swba(struct ath9k_htc_priv *priv,
 555                     struct wmi_event_swba *swba);
 556 
 557 void ath9k_htc_rxep(void *priv, struct sk_buff *skb,
 558                     enum htc_endpoint_id ep_id);
 559 void ath9k_htc_txep(void *priv, struct sk_buff *skb, enum htc_endpoint_id ep_id,
 560                     bool txok);
 561 void ath9k_htc_beaconep(void *drv_priv, struct sk_buff *skb,
 562                         enum htc_endpoint_id ep_id, bool txok);
 563 
 564 int ath9k_htc_update_cap_target(struct ath9k_htc_priv *priv,
 565                                 u8 enable_coex);
 566 void ath9k_htc_ani_work(struct work_struct *work);
 567 void ath9k_htc_start_ani(struct ath9k_htc_priv *priv);
 568 void ath9k_htc_stop_ani(struct ath9k_htc_priv *priv);
 569 
 570 int ath9k_tx_init(struct ath9k_htc_priv *priv);
 571 int ath9k_htc_tx_start(struct ath9k_htc_priv *priv,
 572                        struct ieee80211_sta *sta,
 573                        struct sk_buff *skb, u8 slot, bool is_cab);
 574 void ath9k_tx_cleanup(struct ath9k_htc_priv *priv);
 575 bool ath9k_htc_txq_setup(struct ath9k_htc_priv *priv, int subtype);
 576 int ath9k_htc_cabq_setup(struct ath9k_htc_priv *priv);
 577 int get_hw_qnum(u16 queue, int *hwq_map);
 578 int ath_htc_txq_update(struct ath9k_htc_priv *priv, int qnum,
 579                        struct ath9k_tx_queue_info *qinfo);
 580 void ath9k_htc_check_stop_queues(struct ath9k_htc_priv *priv);
 581 void ath9k_htc_check_wake_queues(struct ath9k_htc_priv *priv);
 582 int ath9k_htc_tx_get_slot(struct ath9k_htc_priv *priv);
 583 void ath9k_htc_tx_clear_slot(struct ath9k_htc_priv *priv, int slot);
 584 void ath9k_htc_tx_drain(struct ath9k_htc_priv *priv);
 585 void ath9k_htc_txstatus(struct ath9k_htc_priv *priv, void *wmi_event);
 586 void ath9k_tx_failed_tasklet(unsigned long data);
 587 void ath9k_htc_tx_cleanup_timer(struct timer_list *t);
 588 bool ath9k_htc_csa_is_finished(struct ath9k_htc_priv *priv);
 589 
 590 int ath9k_rx_init(struct ath9k_htc_priv *priv);
 591 void ath9k_rx_cleanup(struct ath9k_htc_priv *priv);
 592 void ath9k_host_rx_init(struct ath9k_htc_priv *priv);
 593 void ath9k_rx_tasklet(unsigned long data);
 594 u32 ath9k_htc_calcrxfilter(struct ath9k_htc_priv *priv);
 595 
 596 void ath9k_htc_ps_wakeup(struct ath9k_htc_priv *priv);
 597 void ath9k_htc_ps_restore(struct ath9k_htc_priv *priv);
 598 void ath9k_ps_work(struct work_struct *work);
 599 bool ath9k_htc_setpower(struct ath9k_htc_priv *priv,
 600                         enum ath9k_power_mode mode);
 601 
 602 void ath9k_start_rfkill_poll(struct ath9k_htc_priv *priv);
 603 void ath9k_htc_rfkill_poll_state(struct ieee80211_hw *hw);
 604 
 605 struct base_eep_header *ath9k_htc_get_eeprom_base(struct ath9k_htc_priv *priv);
 606 
 607 #ifdef CONFIG_MAC80211_LEDS
 608 void ath9k_configure_leds(struct ath9k_htc_priv *priv);
 609 void ath9k_init_leds(struct ath9k_htc_priv *priv);
 610 void ath9k_deinit_leds(struct ath9k_htc_priv *priv);
 611 void ath9k_led_work(struct work_struct *work);
 612 #else
 613 static inline void ath9k_configure_leds(struct ath9k_htc_priv *priv)
 614 {
 615 }
 616 
 617 static inline void ath9k_init_leds(struct ath9k_htc_priv *priv)
 618 {
 619 }
 620 
 621 static inline void ath9k_deinit_leds(struct ath9k_htc_priv *priv)
 622 {
 623 }
 624 
 625 static inline void ath9k_led_work(struct work_struct *work)
 626 {
 627 }
 628 #endif
 629 
 630 int ath9k_htc_probe_device(struct htc_target *htc_handle, struct device *dev,
 631                            u16 devid, char *product, u32 drv_info);
 632 void ath9k_htc_disconnect_device(struct htc_target *htc_handle, bool hotunplug);
 633 #ifdef CONFIG_PM
 634 void ath9k_htc_suspend(struct htc_target *htc_handle);
 635 int ath9k_htc_resume(struct htc_target *htc_handle);
 636 #endif
 637 #ifdef CONFIG_ATH9K_HTC_DEBUGFS
 638 int ath9k_htc_init_debug(struct ath_hw *ah);
 639 void ath9k_htc_deinit_debug(struct ath9k_htc_priv *priv);
 640 #else
 641 static inline int ath9k_htc_init_debug(struct ath_hw *ah) { return 0; };
 642 static inline void ath9k_htc_deinit_debug(struct ath9k_htc_priv *priv)
 643 {
 644 }
 645 #endif /* CONFIG_ATH9K_HTC_DEBUGFS */
 646 
 647 #endif /* HTC_H */

/* [<][>][^][v][top][bottom][index][help] */