]>
Commit | Line | Data |
---|---|---|
a910e4a9 SP |
1 | /* |
2 | * Mac80211 STA interface for ST-Ericsson CW1200 mac80211 drivers | |
3 | * | |
4 | * Copyright (c) 2010, ST-Ericsson | |
5 | * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no> | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or modify | |
8 | * it under the terms of the GNU General Public License version 2 as | |
9 | * published by the Free Software Foundation. | |
10 | */ | |
11 | ||
12 | #ifndef STA_H_INCLUDED | |
13 | #define STA_H_INCLUDED | |
14 | ||
15 | /* ******************************************************************** */ | |
16 | /* mac80211 API */ | |
17 | ||
18 | int cw1200_start(struct ieee80211_hw *dev); | |
19 | void cw1200_stop(struct ieee80211_hw *dev); | |
20 | int cw1200_add_interface(struct ieee80211_hw *dev, | |
21 | struct ieee80211_vif *vif); | |
22 | void cw1200_remove_interface(struct ieee80211_hw *dev, | |
23 | struct ieee80211_vif *vif); | |
24 | int cw1200_change_interface(struct ieee80211_hw *dev, | |
25 | struct ieee80211_vif *vif, | |
26 | enum nl80211_iftype new_type, | |
27 | bool p2p); | |
28 | int cw1200_config(struct ieee80211_hw *dev, u32 changed); | |
29 | void cw1200_configure_filter(struct ieee80211_hw *dev, | |
30 | unsigned int changed_flags, | |
31 | unsigned int *total_flags, | |
32 | u64 multicast); | |
33 | int cw1200_conf_tx(struct ieee80211_hw *dev, struct ieee80211_vif *vif, | |
34 | u16 queue, const struct ieee80211_tx_queue_params *params); | |
35 | int cw1200_get_stats(struct ieee80211_hw *dev, | |
36 | struct ieee80211_low_level_stats *stats); | |
37 | int cw1200_set_key(struct ieee80211_hw *dev, enum set_key_cmd cmd, | |
38 | struct ieee80211_vif *vif, struct ieee80211_sta *sta, | |
39 | struct ieee80211_key_conf *key); | |
40 | ||
41 | int cw1200_set_rts_threshold(struct ieee80211_hw *hw, u32 value); | |
42 | ||
77be2c54 EG |
43 | void cw1200_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
44 | u32 queues, bool drop); | |
a910e4a9 SP |
45 | |
46 | u64 cw1200_prepare_multicast(struct ieee80211_hw *hw, | |
47 | struct netdev_hw_addr_list *mc_list); | |
48 | ||
49 | int cw1200_set_pm(struct cw1200_common *priv, const struct wsm_set_pm *arg); | |
50 | ||
51 | /* ******************************************************************** */ | |
52 | /* WSM callbacks */ | |
53 | ||
54 | void cw1200_join_complete_cb(struct cw1200_common *priv, | |
55 | struct wsm_join_complete *arg); | |
56 | ||
57 | /* ******************************************************************** */ | |
58 | /* WSM events */ | |
59 | ||
60 | void cw1200_free_event_queue(struct cw1200_common *priv); | |
61 | void cw1200_event_handler(struct work_struct *work); | |
62 | void cw1200_bss_loss_work(struct work_struct *work); | |
63 | void cw1200_bss_params_work(struct work_struct *work); | |
64 | void cw1200_keep_alive_work(struct work_struct *work); | |
65 | void cw1200_tx_failure_work(struct work_struct *work); | |
66 | ||
67 | void __cw1200_cqm_bssloss_sm(struct cw1200_common *priv, int init, int good, | |
68 | int bad); | |
69 | static inline void cw1200_cqm_bssloss_sm(struct cw1200_common *priv, | |
70 | int init, int good, int bad) | |
71 | { | |
72 | spin_lock(&priv->bss_loss_lock); | |
73 | __cw1200_cqm_bssloss_sm(priv, init, good, bad); | |
74 | spin_unlock(&priv->bss_loss_lock); | |
75 | } | |
76 | ||
77 | /* ******************************************************************** */ | |
78 | /* Internal API */ | |
79 | ||
80 | int cw1200_setup_mac(struct cw1200_common *priv); | |
81 | void cw1200_join_timeout(struct work_struct *work); | |
82 | void cw1200_unjoin_work(struct work_struct *work); | |
83 | void cw1200_join_complete_work(struct work_struct *work); | |
84 | void cw1200_wep_key_work(struct work_struct *work); | |
85 | void cw1200_update_listening(struct cw1200_common *priv, bool enabled); | |
86 | void cw1200_update_filtering(struct cw1200_common *priv); | |
87 | void cw1200_update_filtering_work(struct work_struct *work); | |
88 | void cw1200_set_beacon_wakeup_period_work(struct work_struct *work); | |
89 | int cw1200_enable_listening(struct cw1200_common *priv); | |
90 | int cw1200_disable_listening(struct cw1200_common *priv); | |
91 | int cw1200_set_uapsd_param(struct cw1200_common *priv, | |
92 | const struct wsm_edca_params *arg); | |
93 | void cw1200_ba_work(struct work_struct *work); | |
94 | void cw1200_ba_timer(unsigned long arg); | |
95 | ||
96 | /* AP stuffs */ | |
97 | int cw1200_set_tim(struct ieee80211_hw *dev, struct ieee80211_sta *sta, | |
98 | bool set); | |
99 | int cw1200_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | |
100 | struct ieee80211_sta *sta); | |
101 | int cw1200_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | |
102 | struct ieee80211_sta *sta); | |
103 | void cw1200_sta_notify(struct ieee80211_hw *dev, struct ieee80211_vif *vif, | |
104 | enum sta_notify_cmd notify_cmd, | |
105 | struct ieee80211_sta *sta); | |
106 | void cw1200_bss_info_changed(struct ieee80211_hw *dev, | |
107 | struct ieee80211_vif *vif, | |
108 | struct ieee80211_bss_conf *info, | |
109 | u32 changed); | |
110 | int cw1200_ampdu_action(struct ieee80211_hw *hw, | |
111 | struct ieee80211_vif *vif, | |
112 | enum ieee80211_ampdu_mlme_action action, | |
113 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | |
e3abc8ff | 114 | u8 buf_size, bool amsdu); |
a910e4a9 SP |
115 | |
116 | void cw1200_suspend_resume(struct cw1200_common *priv, | |
117 | struct wsm_suspend_resume *arg); | |
118 | void cw1200_set_tim_work(struct work_struct *work); | |
119 | void cw1200_set_cts_work(struct work_struct *work); | |
120 | void cw1200_multicast_start_work(struct work_struct *work); | |
121 | void cw1200_multicast_stop_work(struct work_struct *work); | |
122 | void cw1200_mcast_timeout(unsigned long arg); | |
123 | ||
124 | #endif |