diff options
Diffstat (limited to 'net/wireless/rdev-ops.h')
-rw-r--r-- | net/wireless/rdev-ops.h | 459 |
1 files changed, 381 insertions, 78 deletions
diff --git a/net/wireless/rdev-ops.h b/net/wireless/rdev-ops.h index b6fad29d656b..4a88a39b1319 100644 --- a/net/wireless/rdev-ops.h +++ b/net/wireless/rdev-ops.h | |||
@@ -4,21 +4,32 @@ | |||
4 | #include <linux/rtnetlink.h> | 4 | #include <linux/rtnetlink.h> |
5 | #include <net/cfg80211.h> | 5 | #include <net/cfg80211.h> |
6 | #include "core.h" | 6 | #include "core.h" |
7 | #include "trace.h" | ||
7 | 8 | ||
8 | static inline int rdev_suspend(struct cfg80211_registered_device *rdev) | 9 | static inline int rdev_suspend(struct cfg80211_registered_device *rdev) |
9 | { | 10 | { |
10 | return rdev->ops->suspend(&rdev->wiphy, rdev->wowlan); | 11 | int ret; |
12 | trace_rdev_suspend(&rdev->wiphy, rdev->wowlan); | ||
13 | ret = rdev->ops->suspend(&rdev->wiphy, rdev->wowlan); | ||
14 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
15 | return ret; | ||
11 | } | 16 | } |
12 | 17 | ||
13 | static inline int rdev_resume(struct cfg80211_registered_device *rdev) | 18 | static inline int rdev_resume(struct cfg80211_registered_device *rdev) |
14 | { | 19 | { |
15 | return rdev->ops->resume(&rdev->wiphy); | 20 | int ret; |
21 | trace_rdev_resume(&rdev->wiphy); | ||
22 | ret = rdev->ops->resume(&rdev->wiphy); | ||
23 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
24 | return ret; | ||
16 | } | 25 | } |
17 | 26 | ||
18 | static inline void rdev_set_wakeup(struct cfg80211_registered_device *rdev, | 27 | static inline void rdev_set_wakeup(struct cfg80211_registered_device *rdev, |
19 | bool enabled) | 28 | bool enabled) |
20 | { | 29 | { |
30 | trace_rdev_set_wakeup(&rdev->wiphy, enabled); | ||
21 | rdev->ops->set_wakeup(&rdev->wiphy, enabled); | 31 | rdev->ops->set_wakeup(&rdev->wiphy, enabled); |
32 | trace_rdev_return_void(&rdev->wiphy); | ||
22 | } | 33 | } |
23 | 34 | ||
24 | static inline struct wireless_dev | 35 | static inline struct wireless_dev |
@@ -26,15 +37,23 @@ static inline struct wireless_dev | |||
26 | enum nl80211_iftype type, u32 *flags, | 37 | enum nl80211_iftype type, u32 *flags, |
27 | struct vif_params *params) | 38 | struct vif_params *params) |
28 | { | 39 | { |
29 | return rdev->ops->add_virtual_intf(&rdev->wiphy, name, type, flags, | 40 | struct wireless_dev *ret; |
30 | params); | 41 | trace_rdev_add_virtual_intf(&rdev->wiphy, name, type); |
42 | ret = rdev->ops->add_virtual_intf(&rdev->wiphy, name, type, flags, | ||
43 | params); | ||
44 | trace_rdev_return_wdev(&rdev->wiphy, ret); | ||
45 | return ret; | ||
31 | } | 46 | } |
32 | 47 | ||
33 | static inline int | 48 | static inline int |
34 | rdev_del_virtual_intf(struct cfg80211_registered_device *rdev, | 49 | rdev_del_virtual_intf(struct cfg80211_registered_device *rdev, |
35 | struct wireless_dev *wdev) | 50 | struct wireless_dev *wdev) |
36 | { | 51 | { |
37 | return rdev->ops->del_virtual_intf(&rdev->wiphy, wdev); | 52 | int ret; |
53 | trace_rdev_del_virtual_intf(&rdev->wiphy, wdev); | ||
54 | ret = rdev->ops->del_virtual_intf(&rdev->wiphy, wdev); | ||
55 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
56 | return ret; | ||
38 | } | 57 | } |
39 | 58 | ||
40 | static inline int | 59 | static inline int |
@@ -42,8 +61,12 @@ rdev_change_virtual_intf(struct cfg80211_registered_device *rdev, | |||
42 | struct net_device *dev, enum nl80211_iftype type, | 61 | struct net_device *dev, enum nl80211_iftype type, |
43 | u32 *flags, struct vif_params *params) | 62 | u32 *flags, struct vif_params *params) |
44 | { | 63 | { |
45 | return rdev->ops->change_virtual_intf(&rdev->wiphy, dev, type, flags, | 64 | int ret; |
46 | params); | 65 | trace_rdev_change_virtual_intf(&rdev->wiphy, dev, type); |
66 | ret = rdev->ops->change_virtual_intf(&rdev->wiphy, dev, type, flags, | ||
67 | params); | ||
68 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
69 | return ret; | ||
47 | } | 70 | } |
48 | 71 | ||
49 | static inline int rdev_add_key(struct cfg80211_registered_device *rdev, | 72 | static inline int rdev_add_key(struct cfg80211_registered_device *rdev, |
@@ -51,8 +74,12 @@ static inline int rdev_add_key(struct cfg80211_registered_device *rdev, | |||
51 | bool pairwise, const u8 *mac_addr, | 74 | bool pairwise, const u8 *mac_addr, |
52 | struct key_params *params) | 75 | struct key_params *params) |
53 | { | 76 | { |
54 | return rdev->ops->add_key(&rdev->wiphy, netdev, key_index, pairwise, | 77 | int ret; |
78 | trace_rdev_add_key(&rdev->wiphy, netdev, key_index, pairwise, mac_addr); | ||
79 | ret = rdev->ops->add_key(&rdev->wiphy, netdev, key_index, pairwise, | ||
55 | mac_addr, params); | 80 | mac_addr, params); |
81 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
82 | return ret; | ||
56 | } | 83 | } |
57 | 84 | ||
58 | static inline int | 85 | static inline int |
@@ -60,16 +87,24 @@ rdev_get_key(struct cfg80211_registered_device *rdev, struct net_device *netdev, | |||
60 | u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie, | 87 | u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie, |
61 | void (*callback)(void *cookie, struct key_params*)) | 88 | void (*callback)(void *cookie, struct key_params*)) |
62 | { | 89 | { |
63 | return rdev->ops->get_key(&rdev->wiphy, netdev, key_index, pairwise, | 90 | int ret; |
91 | trace_rdev_get_key(&rdev->wiphy, netdev, key_index, pairwise, mac_addr); | ||
92 | ret = rdev->ops->get_key(&rdev->wiphy, netdev, key_index, pairwise, | ||
64 | mac_addr, cookie, callback); | 93 | mac_addr, cookie, callback); |
94 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
95 | return ret; | ||
65 | } | 96 | } |
66 | 97 | ||
67 | static inline int rdev_del_key(struct cfg80211_registered_device *rdev, | 98 | static inline int rdev_del_key(struct cfg80211_registered_device *rdev, |
68 | struct net_device *netdev, u8 key_index, | 99 | struct net_device *netdev, u8 key_index, |
69 | bool pairwise, const u8 *mac_addr) | 100 | bool pairwise, const u8 *mac_addr) |
70 | { | 101 | { |
71 | return rdev->ops->del_key(&rdev->wiphy, netdev, key_index, pairwise, | 102 | int ret; |
103 | trace_rdev_del_key(&rdev->wiphy, netdev, key_index, pairwise, mac_addr); | ||
104 | ret = rdev->ops->del_key(&rdev->wiphy, netdev, key_index, pairwise, | ||
72 | mac_addr); | 105 | mac_addr); |
106 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
107 | return ret; | ||
73 | } | 108 | } |
74 | 109 | ||
75 | static inline int | 110 | static inline int |
@@ -77,96 +112,154 @@ rdev_set_default_key(struct cfg80211_registered_device *rdev, | |||
77 | struct net_device *netdev, u8 key_index, bool unicast, | 112 | struct net_device *netdev, u8 key_index, bool unicast, |
78 | bool multicast) | 113 | bool multicast) |
79 | { | 114 | { |
80 | return rdev->ops->set_default_key(&rdev->wiphy, netdev, key_index, | 115 | int ret; |
116 | trace_rdev_set_default_key(&rdev->wiphy, netdev, key_index, | ||
117 | unicast, multicast); | ||
118 | ret = rdev->ops->set_default_key(&rdev->wiphy, netdev, key_index, | ||
81 | unicast, multicast); | 119 | unicast, multicast); |
120 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
121 | return ret; | ||
82 | } | 122 | } |
83 | 123 | ||
84 | static inline int | 124 | static inline int |
85 | rdev_set_default_mgmt_key(struct cfg80211_registered_device *rdev, | 125 | rdev_set_default_mgmt_key(struct cfg80211_registered_device *rdev, |
86 | struct net_device *netdev, u8 key_index) | 126 | struct net_device *netdev, u8 key_index) |
87 | { | 127 | { |
88 | return rdev->ops->set_default_mgmt_key(&rdev->wiphy, netdev, | 128 | int ret; |
129 | trace_rdev_set_default_mgmt_key(&rdev->wiphy, netdev, key_index); | ||
130 | ret = rdev->ops->set_default_mgmt_key(&rdev->wiphy, netdev, | ||
89 | key_index); | 131 | key_index); |
132 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
133 | return ret; | ||
90 | } | 134 | } |
91 | 135 | ||
92 | static inline int rdev_start_ap(struct cfg80211_registered_device *rdev, | 136 | static inline int rdev_start_ap(struct cfg80211_registered_device *rdev, |
93 | struct net_device *dev, | 137 | struct net_device *dev, |
94 | struct cfg80211_ap_settings *settings) | 138 | struct cfg80211_ap_settings *settings) |
95 | { | 139 | { |
96 | return rdev->ops->start_ap(&rdev->wiphy, dev, settings); | 140 | int ret; |
141 | trace_rdev_start_ap(&rdev->wiphy, dev, settings); | ||
142 | ret = rdev->ops->start_ap(&rdev->wiphy, dev, settings); | ||
143 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
144 | return ret; | ||
97 | } | 145 | } |
98 | 146 | ||
99 | static inline int rdev_change_beacon(struct cfg80211_registered_device *rdev, | 147 | static inline int rdev_change_beacon(struct cfg80211_registered_device *rdev, |
100 | struct net_device *dev, | 148 | struct net_device *dev, |
101 | struct cfg80211_beacon_data *info) | 149 | struct cfg80211_beacon_data *info) |
102 | { | 150 | { |
103 | return rdev->ops->change_beacon(&rdev->wiphy, dev, info); | 151 | int ret; |
152 | trace_rdev_change_beacon(&rdev->wiphy, dev, info); | ||
153 | ret = rdev->ops->change_beacon(&rdev->wiphy, dev, info); | ||
154 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
155 | return ret; | ||
104 | } | 156 | } |
105 | 157 | ||
106 | static inline int rdev_stop_ap(struct cfg80211_registered_device *rdev, | 158 | static inline int rdev_stop_ap(struct cfg80211_registered_device *rdev, |
107 | struct net_device *dev) | 159 | struct net_device *dev) |
108 | { | 160 | { |
109 | return rdev->ops->stop_ap(&rdev->wiphy, dev); | 161 | int ret; |
162 | trace_rdev_stop_ap(&rdev->wiphy, dev); | ||
163 | ret = rdev->ops->stop_ap(&rdev->wiphy, dev); | ||
164 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
165 | return ret; | ||
110 | } | 166 | } |
111 | 167 | ||
112 | static inline int rdev_add_station(struct cfg80211_registered_device *rdev, | 168 | static inline int rdev_add_station(struct cfg80211_registered_device *rdev, |
113 | struct net_device *dev, u8 *mac, | 169 | struct net_device *dev, u8 *mac, |
114 | struct station_parameters *params) | 170 | struct station_parameters *params) |
115 | { | 171 | { |
116 | return rdev->ops->add_station(&rdev->wiphy, dev, mac, params); | 172 | int ret; |
173 | trace_rdev_add_station(&rdev->wiphy, dev, mac, params); | ||
174 | ret = rdev->ops->add_station(&rdev->wiphy, dev, mac, params); | ||
175 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
176 | return ret; | ||
117 | } | 177 | } |
118 | 178 | ||
119 | static inline int rdev_del_station(struct cfg80211_registered_device *rdev, | 179 | static inline int rdev_del_station(struct cfg80211_registered_device *rdev, |
120 | struct net_device *dev, u8 *mac) | 180 | struct net_device *dev, u8 *mac) |
121 | { | 181 | { |
122 | return rdev->ops->del_station(&rdev->wiphy, dev, mac); | 182 | int ret; |
183 | trace_rdev_del_station(&rdev->wiphy, dev, mac); | ||
184 | ret = rdev->ops->del_station(&rdev->wiphy, dev, mac); | ||
185 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
186 | return ret; | ||
123 | } | 187 | } |
124 | 188 | ||
125 | static inline int rdev_change_station(struct cfg80211_registered_device *rdev, | 189 | static inline int rdev_change_station(struct cfg80211_registered_device *rdev, |
126 | struct net_device *dev, u8 *mac, | 190 | struct net_device *dev, u8 *mac, |
127 | struct station_parameters *params) | 191 | struct station_parameters *params) |
128 | { | 192 | { |
129 | return rdev->ops->change_station(&rdev->wiphy, dev, mac, params); | 193 | int ret; |
194 | trace_rdev_change_station(&rdev->wiphy, dev, mac, params); | ||
195 | ret = rdev->ops->change_station(&rdev->wiphy, dev, mac, params); | ||
196 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
197 | return ret; | ||
130 | } | 198 | } |
131 | 199 | ||
132 | static inline int rdev_get_station(struct cfg80211_registered_device *rdev, | 200 | static inline int rdev_get_station(struct cfg80211_registered_device *rdev, |
133 | struct net_device *dev, u8 *mac, | 201 | struct net_device *dev, u8 *mac, |
134 | struct station_info *sinfo) | 202 | struct station_info *sinfo) |
135 | { | 203 | { |
136 | return rdev->ops->get_station(&rdev->wiphy, dev, mac, sinfo); | 204 | int ret; |
205 | trace_rdev_get_station(&rdev->wiphy, dev, mac); | ||
206 | ret = rdev->ops->get_station(&rdev->wiphy, dev, mac, sinfo); | ||
207 | trace_rdev_return_int_station_info(&rdev->wiphy, ret, sinfo); | ||
208 | return ret; | ||
137 | } | 209 | } |
138 | 210 | ||
139 | static inline int rdev_dump_station(struct cfg80211_registered_device *rdev, | 211 | static inline int rdev_dump_station(struct cfg80211_registered_device *rdev, |
140 | struct net_device *dev, int idx, u8 *mac, | 212 | struct net_device *dev, int idx, u8 *mac, |
141 | struct station_info *sinfo) | 213 | struct station_info *sinfo) |
142 | { | 214 | { |
143 | return rdev->ops->dump_station(&rdev->wiphy, dev, idx, mac, sinfo); | 215 | int ret; |
216 | trace_rdev_dump_station(&rdev->wiphy, dev, idx, mac); | ||
217 | ret = rdev->ops->dump_station(&rdev->wiphy, dev, idx, mac, sinfo); | ||
218 | trace_rdev_return_int_station_info(&rdev->wiphy, ret, sinfo); | ||
219 | return ret; | ||
144 | } | 220 | } |
145 | 221 | ||
146 | static inline int rdev_add_mpath(struct cfg80211_registered_device *rdev, | 222 | static inline int rdev_add_mpath(struct cfg80211_registered_device *rdev, |
147 | struct net_device *dev, u8 *dst, u8 *next_hop) | 223 | struct net_device *dev, u8 *dst, u8 *next_hop) |
148 | { | 224 | { |
149 | return rdev->ops->add_mpath(&rdev->wiphy, dev, dst, next_hop); | 225 | int ret; |
226 | trace_rdev_add_mpath(&rdev->wiphy, dev, dst, next_hop); | ||
227 | ret = rdev->ops->add_mpath(&rdev->wiphy, dev, dst, next_hop); | ||
228 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
229 | return ret; | ||
150 | } | 230 | } |
151 | 231 | ||
152 | static inline int rdev_del_mpath(struct cfg80211_registered_device *rdev, | 232 | static inline int rdev_del_mpath(struct cfg80211_registered_device *rdev, |
153 | struct net_device *dev, u8 *dst) | 233 | struct net_device *dev, u8 *dst) |
154 | { | 234 | { |
155 | return rdev->ops->del_mpath(&rdev->wiphy, dev, dst); | 235 | int ret; |
236 | trace_rdev_del_mpath(&rdev->wiphy, dev, dst); | ||
237 | ret = rdev->ops->del_mpath(&rdev->wiphy, dev, dst); | ||
238 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
239 | return ret; | ||
156 | } | 240 | } |
157 | 241 | ||
158 | static inline int rdev_change_mpath(struct cfg80211_registered_device *rdev, | 242 | static inline int rdev_change_mpath(struct cfg80211_registered_device *rdev, |
159 | struct net_device *dev, u8 *dst, | 243 | struct net_device *dev, u8 *dst, |
160 | u8 *next_hop) | 244 | u8 *next_hop) |
161 | { | 245 | { |
162 | return rdev->ops->change_mpath(&rdev->wiphy, dev, dst, next_hop); | 246 | int ret; |
247 | trace_rdev_change_mpath(&rdev->wiphy, dev, dst, next_hop); | ||
248 | ret = rdev->ops->change_mpath(&rdev->wiphy, dev, dst, next_hop); | ||
249 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
250 | return ret; | ||
163 | } | 251 | } |
164 | 252 | ||
165 | static inline int rdev_get_mpath(struct cfg80211_registered_device *rdev, | 253 | static inline int rdev_get_mpath(struct cfg80211_registered_device *rdev, |
166 | struct net_device *dev, u8 *dst, u8 *next_hop, | 254 | struct net_device *dev, u8 *dst, u8 *next_hop, |
167 | struct mpath_info *pinfo) | 255 | struct mpath_info *pinfo) |
168 | { | 256 | { |
169 | return rdev->ops->get_mpath(&rdev->wiphy, dev, dst, next_hop, pinfo); | 257 | int ret; |
258 | trace_rdev_get_mpath(&rdev->wiphy, dev, dst, next_hop); | ||
259 | ret = rdev->ops->get_mpath(&rdev->wiphy, dev, dst, next_hop, pinfo); | ||
260 | trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo); | ||
261 | return ret; | ||
262 | |||
170 | } | 263 | } |
171 | 264 | ||
172 | static inline int rdev_dump_mpath(struct cfg80211_registered_device *rdev, | 265 | static inline int rdev_dump_mpath(struct cfg80211_registered_device *rdev, |
@@ -174,15 +267,23 @@ static inline int rdev_dump_mpath(struct cfg80211_registered_device *rdev, | |||
174 | u8 *next_hop, struct mpath_info *pinfo) | 267 | u8 *next_hop, struct mpath_info *pinfo) |
175 | 268 | ||
176 | { | 269 | { |
177 | return rdev->ops->dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop, | 270 | int ret; |
271 | trace_rdev_dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop); | ||
272 | ret = rdev->ops->dump_mpath(&rdev->wiphy, dev, idx, dst, next_hop, | ||
178 | pinfo); | 273 | pinfo); |
274 | trace_rdev_return_int_mpath_info(&rdev->wiphy, ret, pinfo); | ||
275 | return ret; | ||
179 | } | 276 | } |
180 | 277 | ||
181 | static inline int | 278 | static inline int |
182 | rdev_get_mesh_config(struct cfg80211_registered_device *rdev, | 279 | rdev_get_mesh_config(struct cfg80211_registered_device *rdev, |
183 | struct net_device *dev, struct mesh_config *conf) | 280 | struct net_device *dev, struct mesh_config *conf) |
184 | { | 281 | { |
185 | return rdev->ops->get_mesh_config(&rdev->wiphy, dev, conf); | 282 | int ret; |
283 | trace_rdev_get_mesh_config(&rdev->wiphy, dev); | ||
284 | ret = rdev->ops->get_mesh_config(&rdev->wiphy, dev, conf); | ||
285 | trace_rdev_return_int_mesh_config(&rdev->wiphy, ret, conf); | ||
286 | return ret; | ||
186 | } | 287 | } |
187 | 288 | ||
188 | static inline int | 289 | static inline int |
@@ -190,7 +291,11 @@ rdev_update_mesh_config(struct cfg80211_registered_device *rdev, | |||
190 | struct net_device *dev, u32 mask, | 291 | struct net_device *dev, u32 mask, |
191 | const struct mesh_config *nconf) | 292 | const struct mesh_config *nconf) |
192 | { | 293 | { |
193 | return rdev->ops->update_mesh_config(&rdev->wiphy, dev, mask, nconf); | 294 | int ret; |
295 | trace_rdev_update_mesh_config(&rdev->wiphy, dev, mask, nconf); | ||
296 | ret = rdev->ops->update_mesh_config(&rdev->wiphy, dev, mask, nconf); | ||
297 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
298 | return ret; | ||
194 | } | 299 | } |
195 | 300 | ||
196 | static inline int rdev_join_mesh(struct cfg80211_registered_device *rdev, | 301 | static inline int rdev_join_mesh(struct cfg80211_registered_device *rdev, |
@@ -198,14 +303,22 @@ static inline int rdev_join_mesh(struct cfg80211_registered_device *rdev, | |||
198 | const struct mesh_config *conf, | 303 | const struct mesh_config *conf, |
199 | const struct mesh_setup *setup) | 304 | const struct mesh_setup *setup) |
200 | { | 305 | { |
201 | return rdev->ops->join_mesh(&rdev->wiphy, dev, conf, setup); | 306 | int ret; |
307 | trace_rdev_join_mesh(&rdev->wiphy, dev, conf, setup); | ||
308 | ret = rdev->ops->join_mesh(&rdev->wiphy, dev, conf, setup); | ||
309 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
310 | return ret; | ||
202 | } | 311 | } |
203 | 312 | ||
204 | 313 | ||
205 | static inline int rdev_leave_mesh(struct cfg80211_registered_device *rdev, | 314 | static inline int rdev_leave_mesh(struct cfg80211_registered_device *rdev, |
206 | struct net_device *dev) | 315 | struct net_device *dev) |
207 | { | 316 | { |
208 | return rdev->ops->leave_mesh(&rdev->wiphy, dev); | 317 | int ret; |
318 | trace_rdev_leave_mesh(&rdev->wiphy, dev); | ||
319 | ret = rdev->ops->leave_mesh(&rdev->wiphy, dev); | ||
320 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
321 | return ret; | ||
209 | } | 322 | } |
210 | 323 | ||
211 | static inline int rdev_change_bss(struct cfg80211_registered_device *rdev, | 324 | static inline int rdev_change_bss(struct cfg80211_registered_device *rdev, |
@@ -213,7 +326,11 @@ static inline int rdev_change_bss(struct cfg80211_registered_device *rdev, | |||
213 | struct bss_parameters *params) | 326 | struct bss_parameters *params) |
214 | 327 | ||
215 | { | 328 | { |
216 | return rdev->ops->change_bss(&rdev->wiphy, dev, params); | 329 | int ret; |
330 | trace_rdev_change_bss(&rdev->wiphy, dev, params); | ||
331 | ret = rdev->ops->change_bss(&rdev->wiphy, dev, params); | ||
332 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
333 | return ret; | ||
217 | } | 334 | } |
218 | 335 | ||
219 | static inline int rdev_set_txq_params(struct cfg80211_registered_device *rdev, | 336 | static inline int rdev_set_txq_params(struct cfg80211_registered_device *rdev, |
@@ -221,7 +338,11 @@ static inline int rdev_set_txq_params(struct cfg80211_registered_device *rdev, | |||
221 | struct ieee80211_txq_params *params) | 338 | struct ieee80211_txq_params *params) |
222 | 339 | ||
223 | { | 340 | { |
224 | return rdev->ops->set_txq_params(&rdev->wiphy, dev, params); | 341 | int ret; |
342 | trace_rdev_set_txq_params(&rdev->wiphy, dev, params); | ||
343 | ret = rdev->ops->set_txq_params(&rdev->wiphy, dev, params); | ||
344 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
345 | return ret; | ||
225 | } | 346 | } |
226 | 347 | ||
227 | static inline int | 348 | static inline int |
@@ -229,7 +350,11 @@ rdev_libertas_set_mesh_channel(struct cfg80211_registered_device *rdev, | |||
229 | struct net_device *dev, | 350 | struct net_device *dev, |
230 | struct ieee80211_channel *chan) | 351 | struct ieee80211_channel *chan) |
231 | { | 352 | { |
232 | return rdev->ops->libertas_set_mesh_channel(&rdev->wiphy, dev, chan); | 353 | int ret; |
354 | trace_rdev_libertas_set_mesh_channel(&rdev->wiphy, dev, chan); | ||
355 | ret = rdev->ops->libertas_set_mesh_channel(&rdev->wiphy, dev, chan); | ||
356 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
357 | return ret; | ||
233 | } | 358 | } |
234 | 359 | ||
235 | static inline int | 360 | static inline int |
@@ -237,97 +362,154 @@ rdev_set_monitor_channel(struct cfg80211_registered_device *rdev, | |||
237 | struct ieee80211_channel *chan, | 362 | struct ieee80211_channel *chan, |
238 | enum nl80211_channel_type channel_type) | 363 | enum nl80211_channel_type channel_type) |
239 | { | 364 | { |
240 | return rdev->ops->set_monitor_channel(&rdev->wiphy, chan, | 365 | int ret; |
241 | channel_type); | 366 | trace_rdev_set_monitor_channel(&rdev->wiphy, chan, channel_type); |
367 | ret = rdev->ops->set_monitor_channel(&rdev->wiphy, chan, channel_type); | ||
368 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
369 | return ret; | ||
242 | } | 370 | } |
243 | 371 | ||
244 | static inline int rdev_scan(struct cfg80211_registered_device *rdev, | 372 | static inline int rdev_scan(struct cfg80211_registered_device *rdev, |
245 | struct cfg80211_scan_request *request) | 373 | struct cfg80211_scan_request *request) |
246 | { | 374 | { |
247 | return rdev->ops->scan(&rdev->wiphy, request); | 375 | int ret; |
376 | trace_rdev_scan(&rdev->wiphy, request); | ||
377 | ret = rdev->ops->scan(&rdev->wiphy, request); | ||
378 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
379 | return ret; | ||
248 | } | 380 | } |
249 | 381 | ||
250 | static inline int rdev_auth(struct cfg80211_registered_device *rdev, | 382 | static inline int rdev_auth(struct cfg80211_registered_device *rdev, |
251 | struct net_device *dev, | 383 | struct net_device *dev, |
252 | struct cfg80211_auth_request *req) | 384 | struct cfg80211_auth_request *req) |
253 | { | 385 | { |
254 | return rdev->ops->auth(&rdev->wiphy, dev, req); | 386 | int ret; |
387 | trace_rdev_auth(&rdev->wiphy, dev, req); | ||
388 | ret = rdev->ops->auth(&rdev->wiphy, dev, req); | ||
389 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
390 | return ret; | ||
255 | } | 391 | } |
256 | 392 | ||
257 | static inline int rdev_assoc(struct cfg80211_registered_device *rdev, | 393 | static inline int rdev_assoc(struct cfg80211_registered_device *rdev, |
258 | struct net_device *dev, | 394 | struct net_device *dev, |
259 | struct cfg80211_assoc_request *req) | 395 | struct cfg80211_assoc_request *req) |
260 | { | 396 | { |
261 | return rdev->ops->assoc(&rdev->wiphy, dev, req); | 397 | int ret; |
398 | trace_rdev_assoc(&rdev->wiphy, dev, req); | ||
399 | ret = rdev->ops->assoc(&rdev->wiphy, dev, req); | ||
400 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
401 | return ret; | ||
262 | } | 402 | } |
263 | 403 | ||
264 | static inline int rdev_deauth(struct cfg80211_registered_device *rdev, | 404 | static inline int rdev_deauth(struct cfg80211_registered_device *rdev, |
265 | struct net_device *dev, | 405 | struct net_device *dev, |
266 | struct cfg80211_deauth_request *req) | 406 | struct cfg80211_deauth_request *req) |
267 | { | 407 | { |
268 | return rdev->ops->deauth(&rdev->wiphy, dev, req); | 408 | int ret; |
409 | trace_rdev_deauth(&rdev->wiphy, dev, req); | ||
410 | ret = rdev->ops->deauth(&rdev->wiphy, dev, req); | ||
411 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
412 | return ret; | ||
269 | } | 413 | } |
270 | 414 | ||
271 | static inline int rdev_disassoc(struct cfg80211_registered_device *rdev, | 415 | static inline int rdev_disassoc(struct cfg80211_registered_device *rdev, |
272 | struct net_device *dev, | 416 | struct net_device *dev, |
273 | struct cfg80211_disassoc_request *req) | 417 | struct cfg80211_disassoc_request *req) |
274 | { | 418 | { |
275 | return rdev->ops->disassoc(&rdev->wiphy, dev, req); | 419 | int ret; |
420 | trace_rdev_disassoc(&rdev->wiphy, dev, req); | ||
421 | ret = rdev->ops->disassoc(&rdev->wiphy, dev, req); | ||
422 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
423 | return ret; | ||
276 | } | 424 | } |
277 | 425 | ||
278 | static inline int rdev_connect(struct cfg80211_registered_device *rdev, | 426 | static inline int rdev_connect(struct cfg80211_registered_device *rdev, |
279 | struct net_device *dev, | 427 | struct net_device *dev, |
280 | struct cfg80211_connect_params *sme) | 428 | struct cfg80211_connect_params *sme) |
281 | { | 429 | { |
282 | return rdev->ops->connect(&rdev->wiphy, dev, sme); | 430 | int ret; |
431 | trace_rdev_connect(&rdev->wiphy, dev, sme); | ||
432 | ret = rdev->ops->connect(&rdev->wiphy, dev, sme); | ||
433 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
434 | return ret; | ||
283 | } | 435 | } |
284 | 436 | ||
285 | static inline int rdev_disconnect(struct cfg80211_registered_device *rdev, | 437 | static inline int rdev_disconnect(struct cfg80211_registered_device *rdev, |
286 | struct net_device *dev, u16 reason_code) | 438 | struct net_device *dev, u16 reason_code) |
287 | { | 439 | { |
288 | return rdev->ops->disconnect(&rdev->wiphy, dev, reason_code); | 440 | int ret; |
441 | trace_rdev_disconnect(&rdev->wiphy, dev, reason_code); | ||
442 | ret = rdev->ops->disconnect(&rdev->wiphy, dev, reason_code); | ||
443 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
444 | return ret; | ||
289 | } | 445 | } |
290 | 446 | ||
291 | static inline int rdev_join_ibss(struct cfg80211_registered_device *rdev, | 447 | static inline int rdev_join_ibss(struct cfg80211_registered_device *rdev, |
292 | struct net_device *dev, | 448 | struct net_device *dev, |
293 | struct cfg80211_ibss_params *params) | 449 | struct cfg80211_ibss_params *params) |
294 | { | 450 | { |
295 | return rdev->ops->join_ibss(&rdev->wiphy, dev, params); | 451 | int ret; |
452 | trace_rdev_join_ibss(&rdev->wiphy, dev, params); | ||
453 | ret = rdev->ops->join_ibss(&rdev->wiphy, dev, params); | ||
454 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
455 | return ret; | ||
296 | } | 456 | } |
297 | 457 | ||
298 | static inline int rdev_leave_ibss(struct cfg80211_registered_device *rdev, | 458 | static inline int rdev_leave_ibss(struct cfg80211_registered_device *rdev, |
299 | struct net_device *dev) | 459 | struct net_device *dev) |
300 | { | 460 | { |
301 | return rdev->ops->leave_ibss(&rdev->wiphy, dev); | 461 | int ret; |
462 | trace_rdev_leave_ibss(&rdev->wiphy, dev); | ||
463 | ret = rdev->ops->leave_ibss(&rdev->wiphy, dev); | ||
464 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
465 | return ret; | ||
302 | } | 466 | } |
303 | 467 | ||
304 | static inline int | 468 | static inline int |
305 | rdev_set_wiphy_params(struct cfg80211_registered_device *rdev, u32 changed) | 469 | rdev_set_wiphy_params(struct cfg80211_registered_device *rdev, u32 changed) |
306 | { | 470 | { |
307 | return rdev->ops->set_wiphy_params(&rdev->wiphy, changed); | 471 | int ret; |
472 | trace_rdev_set_wiphy_params(&rdev->wiphy, changed); | ||
473 | ret = rdev->ops->set_wiphy_params(&rdev->wiphy, changed); | ||
474 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
475 | return ret; | ||
308 | } | 476 | } |
309 | 477 | ||
310 | static inline int rdev_set_tx_power(struct cfg80211_registered_device *rdev, | 478 | static inline int rdev_set_tx_power(struct cfg80211_registered_device *rdev, |
311 | enum nl80211_tx_power_setting type, int mbm) | 479 | enum nl80211_tx_power_setting type, int mbm) |
312 | { | 480 | { |
313 | return rdev->ops->set_tx_power(&rdev->wiphy, type, mbm); | 481 | int ret; |
482 | trace_rdev_set_tx_power(&rdev->wiphy, type, mbm); | ||
483 | ret = rdev->ops->set_tx_power(&rdev->wiphy, type, mbm); | ||
484 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
485 | return ret; | ||
314 | } | 486 | } |
315 | 487 | ||
316 | static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev, | 488 | static inline int rdev_get_tx_power(struct cfg80211_registered_device *rdev, |
317 | int *dbm) | 489 | int *dbm) |
318 | { | 490 | { |
319 | return rdev->ops->get_tx_power(&rdev->wiphy, dbm); | 491 | int ret; |
492 | trace_rdev_get_tx_power(&rdev->wiphy); | ||
493 | ret = rdev->ops->get_tx_power(&rdev->wiphy, dbm); | ||
494 | trace_rdev_return_int_int(&rdev->wiphy, ret, *dbm); | ||
495 | return ret; | ||
320 | } | 496 | } |
321 | 497 | ||
322 | static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev, | 498 | static inline int rdev_set_wds_peer(struct cfg80211_registered_device *rdev, |
323 | struct net_device *dev, const u8 *addr) | 499 | struct net_device *dev, const u8 *addr) |
324 | { | 500 | { |
325 | return rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr); | 501 | int ret; |
502 | trace_rdev_set_wds_peer(&rdev->wiphy, dev, addr); | ||
503 | ret = rdev->ops->set_wds_peer(&rdev->wiphy, dev, addr); | ||
504 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
505 | return ret; | ||
326 | } | 506 | } |
327 | 507 | ||
328 | static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev) | 508 | static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev) |
329 | { | 509 | { |
510 | trace_rdev_rfkill_poll(&rdev->wiphy); | ||
330 | rdev->ops->rfkill_poll(&rdev->wiphy); | 511 | rdev->ops->rfkill_poll(&rdev->wiphy); |
512 | trace_rdev_return_void(&rdev->wiphy); | ||
331 | } | 513 | } |
332 | 514 | ||
333 | 515 | ||
@@ -335,7 +517,11 @@ static inline void rdev_rfkill_poll(struct cfg80211_registered_device *rdev) | |||
335 | static inline int rdev_testmode_cmd(struct cfg80211_registered_device *rdev, | 517 | static inline int rdev_testmode_cmd(struct cfg80211_registered_device *rdev, |
336 | void *data, int len) | 518 | void *data, int len) |
337 | { | 519 | { |
338 | return rdev->ops->testmode_cmd(&rdev->wiphy, data, len); | 520 | int ret; |
521 | trace_rdev_testmode_cmd(&rdev->wiphy); | ||
522 | ret = rdev->ops->testmode_cmd(&rdev->wiphy, data, len); | ||
523 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
524 | return ret; | ||
339 | } | 525 | } |
340 | 526 | ||
341 | static inline int rdev_testmode_dump(struct cfg80211_registered_device *rdev, | 527 | static inline int rdev_testmode_dump(struct cfg80211_registered_device *rdev, |
@@ -343,8 +529,11 @@ static inline int rdev_testmode_dump(struct cfg80211_registered_device *rdev, | |||
343 | struct netlink_callback *cb, void *data, | 529 | struct netlink_callback *cb, void *data, |
344 | int len) | 530 | int len) |
345 | { | 531 | { |
346 | return rdev->ops->testmode_dump(&rdev->wiphy, skb, cb, data, | 532 | int ret; |
347 | len); | 533 | trace_rdev_testmode_dump(&rdev->wiphy); |
534 | ret = rdev->ops->testmode_dump(&rdev->wiphy, skb, cb, data, len); | ||
535 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
536 | return ret; | ||
348 | } | 537 | } |
349 | #endif | 538 | #endif |
350 | 539 | ||
@@ -353,34 +542,57 @@ rdev_set_bitrate_mask(struct cfg80211_registered_device *rdev, | |||
353 | struct net_device *dev, const u8 *peer, | 542 | struct net_device *dev, const u8 *peer, |
354 | const struct cfg80211_bitrate_mask *mask) | 543 | const struct cfg80211_bitrate_mask *mask) |
355 | { | 544 | { |
356 | return rdev->ops->set_bitrate_mask(&rdev->wiphy, dev, peer, mask); | 545 | int ret; |
546 | trace_rdev_set_bitrate_mask(&rdev->wiphy, dev, peer, mask); | ||
547 | ret = rdev->ops->set_bitrate_mask(&rdev->wiphy, dev, peer, mask); | ||
548 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
549 | return ret; | ||
357 | } | 550 | } |
358 | 551 | ||
359 | static inline int rdev_dump_survey(struct cfg80211_registered_device *rdev, | 552 | static inline int rdev_dump_survey(struct cfg80211_registered_device *rdev, |
360 | struct net_device *netdev, int idx, | 553 | struct net_device *netdev, int idx, |
361 | struct survey_info *info) | 554 | struct survey_info *info) |
362 | { | 555 | { |
363 | return rdev->ops->dump_survey(&rdev->wiphy, netdev, idx, info); | 556 | int ret; |
557 | trace_rdev_dump_survey(&rdev->wiphy, netdev, idx); | ||
558 | ret = rdev->ops->dump_survey(&rdev->wiphy, netdev, idx, info); | ||
559 | if (ret < 0) | ||
560 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
561 | else | ||
562 | trace_rdev_return_int_survey_info(&rdev->wiphy, ret, info); | ||
563 | return ret; | ||
364 | } | 564 | } |
365 | 565 | ||
366 | static inline int rdev_set_pmksa(struct cfg80211_registered_device *rdev, | 566 | static inline int rdev_set_pmksa(struct cfg80211_registered_device *rdev, |
367 | struct net_device *netdev, | 567 | struct net_device *netdev, |
368 | struct cfg80211_pmksa *pmksa) | 568 | struct cfg80211_pmksa *pmksa) |
369 | { | 569 | { |
370 | return rdev->ops->set_pmksa(&rdev->wiphy, netdev, pmksa); | 570 | int ret; |
571 | trace_rdev_set_pmksa(&rdev->wiphy, netdev, pmksa); | ||
572 | ret = rdev->ops->set_pmksa(&rdev->wiphy, netdev, pmksa); | ||
573 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
574 | return ret; | ||
371 | } | 575 | } |
372 | 576 | ||
373 | static inline int rdev_del_pmksa(struct cfg80211_registered_device *rdev, | 577 | static inline int rdev_del_pmksa(struct cfg80211_registered_device *rdev, |
374 | struct net_device *netdev, | 578 | struct net_device *netdev, |
375 | struct cfg80211_pmksa *pmksa) | 579 | struct cfg80211_pmksa *pmksa) |
376 | { | 580 | { |
377 | return rdev->ops->del_pmksa(&rdev->wiphy, netdev, pmksa); | 581 | int ret; |
582 | trace_rdev_del_pmksa(&rdev->wiphy, netdev, pmksa); | ||
583 | ret = rdev->ops->del_pmksa(&rdev->wiphy, netdev, pmksa); | ||
584 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
585 | return ret; | ||
378 | } | 586 | } |
379 | 587 | ||
380 | static inline int rdev_flush_pmksa(struct cfg80211_registered_device *rdev, | 588 | static inline int rdev_flush_pmksa(struct cfg80211_registered_device *rdev, |
381 | struct net_device *netdev) | 589 | struct net_device *netdev) |
382 | { | 590 | { |
383 | return rdev->ops->flush_pmksa(&rdev->wiphy, netdev); | 591 | int ret; |
592 | trace_rdev_flush_pmksa(&rdev->wiphy, netdev); | ||
593 | ret = rdev->ops->flush_pmksa(&rdev->wiphy, netdev); | ||
594 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
595 | return ret; | ||
384 | } | 596 | } |
385 | 597 | ||
386 | static inline int | 598 | static inline int |
@@ -390,15 +602,24 @@ rdev_remain_on_channel(struct cfg80211_registered_device *rdev, | |||
390 | enum nl80211_channel_type channel_type, | 602 | enum nl80211_channel_type channel_type, |
391 | unsigned int duration, u64 *cookie) | 603 | unsigned int duration, u64 *cookie) |
392 | { | 604 | { |
393 | return rdev->ops->remain_on_channel(&rdev->wiphy, wdev, chan, | 605 | int ret; |
606 | trace_rdev_remain_on_channel(&rdev->wiphy, wdev, chan, channel_type, | ||
607 | duration); | ||
608 | ret = rdev->ops->remain_on_channel(&rdev->wiphy, wdev, chan, | ||
394 | channel_type, duration, cookie); | 609 | channel_type, duration, cookie); |
610 | trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie); | ||
611 | return ret; | ||
395 | } | 612 | } |
396 | 613 | ||
397 | static inline int | 614 | static inline int |
398 | rdev_cancel_remain_on_channel(struct cfg80211_registered_device *rdev, | 615 | rdev_cancel_remain_on_channel(struct cfg80211_registered_device *rdev, |
399 | struct wireless_dev *wdev, u64 cookie) | 616 | struct wireless_dev *wdev, u64 cookie) |
400 | { | 617 | { |
401 | return rdev->ops->cancel_remain_on_channel(&rdev->wiphy, wdev, cookie); | 618 | int ret; |
619 | trace_rdev_cancel_remain_on_channel(&rdev->wiphy, wdev, cookie); | ||
620 | ret = rdev->ops->cancel_remain_on_channel(&rdev->wiphy, wdev, cookie); | ||
621 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
622 | return ret; | ||
402 | } | 623 | } |
403 | 624 | ||
404 | static inline int rdev_mgmt_tx(struct cfg80211_registered_device *rdev, | 625 | static inline int rdev_mgmt_tx(struct cfg80211_registered_device *rdev, |
@@ -409,72 +630,113 @@ static inline int rdev_mgmt_tx(struct cfg80211_registered_device *rdev, | |||
409 | const u8 *buf, size_t len, bool no_cck, | 630 | const u8 *buf, size_t len, bool no_cck, |
410 | bool dont_wait_for_ack, u64 *cookie) | 631 | bool dont_wait_for_ack, u64 *cookie) |
411 | { | 632 | { |
412 | return rdev->ops->mgmt_tx(&rdev->wiphy, wdev, chan, offchan, | 633 | int ret; |
634 | trace_rdev_mgmt_tx(&rdev->wiphy, wdev, chan, offchan, channel_type, | ||
635 | channel_type_valid, wait, no_cck, dont_wait_for_ack); | ||
636 | ret = rdev->ops->mgmt_tx(&rdev->wiphy, wdev, chan, offchan, | ||
413 | channel_type, channel_type_valid, wait, buf, | 637 | channel_type, channel_type_valid, wait, buf, |
414 | len, no_cck, dont_wait_for_ack, cookie); | 638 | len, no_cck, dont_wait_for_ack, cookie); |
639 | trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie); | ||
640 | return ret; | ||
415 | } | 641 | } |
416 | 642 | ||
417 | static inline int | 643 | static inline int |
418 | rdev_mgmt_tx_cancel_wait(struct cfg80211_registered_device *rdev, | 644 | rdev_mgmt_tx_cancel_wait(struct cfg80211_registered_device *rdev, |
419 | struct wireless_dev *wdev, u64 cookie) | 645 | struct wireless_dev *wdev, u64 cookie) |
420 | { | 646 | { |
421 | return rdev->ops->mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie); | 647 | int ret; |
648 | trace_rdev_mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie); | ||
649 | ret = rdev->ops->mgmt_tx_cancel_wait(&rdev->wiphy, wdev, cookie); | ||
650 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
651 | return ret; | ||
422 | } | 652 | } |
423 | 653 | ||
424 | static inline int rdev_set_power_mgmt(struct cfg80211_registered_device *rdev, | 654 | static inline int rdev_set_power_mgmt(struct cfg80211_registered_device *rdev, |
425 | struct net_device *dev, bool enabled, | 655 | struct net_device *dev, bool enabled, |
426 | int timeout) | 656 | int timeout) |
427 | { | 657 | { |
428 | return rdev->ops->set_power_mgmt(&rdev->wiphy, dev, enabled, timeout); | 658 | int ret; |
659 | trace_rdev_set_power_mgmt(&rdev->wiphy, dev, enabled, timeout); | ||
660 | ret = rdev->ops->set_power_mgmt(&rdev->wiphy, dev, enabled, timeout); | ||
661 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
662 | return ret; | ||
429 | } | 663 | } |
430 | 664 | ||
431 | static inline int | 665 | static inline int |
432 | rdev_set_cqm_rssi_config(struct cfg80211_registered_device *rdev, | 666 | rdev_set_cqm_rssi_config(struct cfg80211_registered_device *rdev, |
433 | struct net_device *dev, s32 rssi_thold, u32 rssi_hyst) | 667 | struct net_device *dev, s32 rssi_thold, u32 rssi_hyst) |
434 | { | 668 | { |
435 | return rdev->ops->set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold, | 669 | int ret; |
436 | rssi_hyst); | 670 | trace_rdev_set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold, |
671 | rssi_hyst); | ||
672 | ret = rdev->ops->set_cqm_rssi_config(&rdev->wiphy, dev, rssi_thold, | ||
673 | rssi_hyst); | ||
674 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
675 | return ret; | ||
437 | } | 676 | } |
438 | 677 | ||
439 | static inline int | 678 | static inline int |
440 | rdev_set_cqm_txe_config(struct cfg80211_registered_device *rdev, | 679 | rdev_set_cqm_txe_config(struct cfg80211_registered_device *rdev, |
441 | struct net_device *dev, u32 rate, u32 pkts, u32 intvl) | 680 | struct net_device *dev, u32 rate, u32 pkts, u32 intvl) |
442 | { | 681 | { |
443 | return rdev->ops->set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts, | 682 | int ret; |
683 | trace_rdev_set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts, intvl); | ||
684 | ret = rdev->ops->set_cqm_txe_config(&rdev->wiphy, dev, rate, pkts, | ||
444 | intvl); | 685 | intvl); |
686 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
687 | return ret; | ||
445 | } | 688 | } |
446 | 689 | ||
447 | static inline void | 690 | static inline void |
448 | rdev_mgmt_frame_register(struct cfg80211_registered_device *rdev, | 691 | rdev_mgmt_frame_register(struct cfg80211_registered_device *rdev, |
449 | struct wireless_dev *wdev, u16 frame_type, bool reg) | 692 | struct wireless_dev *wdev, u16 frame_type, bool reg) |
450 | { | 693 | { |
451 | rdev->ops->mgmt_frame_register(&rdev->wiphy, wdev , frame_type, | 694 | trace_rdev_mgmt_frame_register(&rdev->wiphy, wdev , frame_type, reg); |
452 | reg); | 695 | rdev->ops->mgmt_frame_register(&rdev->wiphy, wdev , frame_type, reg); |
696 | trace_rdev_return_void(&rdev->wiphy); | ||
453 | } | 697 | } |
454 | 698 | ||
455 | static inline int rdev_set_antenna(struct cfg80211_registered_device *rdev, | 699 | static inline int rdev_set_antenna(struct cfg80211_registered_device *rdev, |
456 | u32 tx_ant, u32 rx_ant) | 700 | u32 tx_ant, u32 rx_ant) |
457 | { | 701 | { |
458 | return rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant); | 702 | int ret; |
703 | trace_rdev_set_antenna(&rdev->wiphy, tx_ant, rx_ant); | ||
704 | ret = rdev->ops->set_antenna(&rdev->wiphy, tx_ant, rx_ant); | ||
705 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
706 | return ret; | ||
459 | } | 707 | } |
460 | 708 | ||
461 | static inline int rdev_get_antenna(struct cfg80211_registered_device *rdev, | 709 | static inline int rdev_get_antenna(struct cfg80211_registered_device *rdev, |
462 | u32 *tx_ant, u32 *rx_ant) | 710 | u32 *tx_ant, u32 *rx_ant) |
463 | { | 711 | { |
464 | return rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant); | 712 | int ret; |
713 | trace_rdev_get_antenna(&rdev->wiphy); | ||
714 | ret = rdev->ops->get_antenna(&rdev->wiphy, tx_ant, rx_ant); | ||
715 | if (ret) | ||
716 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
717 | else | ||
718 | trace_rdev_return_int_tx_rx(&rdev->wiphy, ret, *tx_ant, | ||
719 | *rx_ant); | ||
720 | return ret; | ||
465 | } | 721 | } |
466 | 722 | ||
467 | static inline int rdev_set_ringparam(struct cfg80211_registered_device *rdev, | 723 | static inline int rdev_set_ringparam(struct cfg80211_registered_device *rdev, |
468 | u32 tx, u32 rx) | 724 | u32 tx, u32 rx) |
469 | { | 725 | { |
470 | return rdev->ops->set_ringparam(&rdev->wiphy, tx, rx); | 726 | int ret; |
727 | trace_rdev_set_ringparam(&rdev->wiphy, tx, rx); | ||
728 | ret = rdev->ops->set_ringparam(&rdev->wiphy, tx, rx); | ||
729 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
730 | return ret; | ||
471 | } | 731 | } |
472 | 732 | ||
473 | static inline void rdev_get_ringparam(struct cfg80211_registered_device *rdev, | 733 | static inline void rdev_get_ringparam(struct cfg80211_registered_device *rdev, |
474 | u32 *tx, u32 *tx_max, u32 *rx, | 734 | u32 *tx, u32 *tx_max, u32 *rx, |
475 | u32 *rx_max) | 735 | u32 *rx_max) |
476 | { | 736 | { |
737 | trace_rdev_get_ringparam(&rdev->wiphy); | ||
477 | rdev->ops->get_ringparam(&rdev->wiphy, tx, tx_max, rx, rx_max); | 738 | rdev->ops->get_ringparam(&rdev->wiphy, tx, tx_max, rx, rx_max); |
739 | trace_rdev_return_void_tx_rx(&rdev->wiphy, *tx, *tx_max, *rx, *rx_max); | ||
478 | } | 740 | } |
479 | 741 | ||
480 | static inline int | 742 | static inline int |
@@ -482,20 +744,32 @@ rdev_sched_scan_start(struct cfg80211_registered_device *rdev, | |||
482 | struct net_device *dev, | 744 | struct net_device *dev, |
483 | struct cfg80211_sched_scan_request *request) | 745 | struct cfg80211_sched_scan_request *request) |
484 | { | 746 | { |
485 | return rdev->ops->sched_scan_start(&rdev->wiphy, dev, request); | 747 | int ret; |
748 | trace_rdev_sched_scan_start(&rdev->wiphy, dev, request); | ||
749 | ret = rdev->ops->sched_scan_start(&rdev->wiphy, dev, request); | ||
750 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
751 | return ret; | ||
486 | } | 752 | } |
487 | 753 | ||
488 | static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev, | 754 | static inline int rdev_sched_scan_stop(struct cfg80211_registered_device *rdev, |
489 | struct net_device *dev) | 755 | struct net_device *dev) |
490 | { | 756 | { |
491 | return rdev->ops->sched_scan_stop(&rdev->wiphy, dev); | 757 | int ret; |
758 | trace_rdev_sched_scan_stop(&rdev->wiphy, dev); | ||
759 | ret = rdev->ops->sched_scan_stop(&rdev->wiphy, dev); | ||
760 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
761 | return ret; | ||
492 | } | 762 | } |
493 | 763 | ||
494 | static inline int rdev_set_rekey_data(struct cfg80211_registered_device *rdev, | 764 | static inline int rdev_set_rekey_data(struct cfg80211_registered_device *rdev, |
495 | struct net_device *dev, | 765 | struct net_device *dev, |
496 | struct cfg80211_gtk_rekey_data *data) | 766 | struct cfg80211_gtk_rekey_data *data) |
497 | { | 767 | { |
498 | return rdev->ops->set_rekey_data(&rdev->wiphy, dev, data); | 768 | int ret; |
769 | trace_rdev_set_rekey_data(&rdev->wiphy, dev); | ||
770 | ret = rdev->ops->set_rekey_data(&rdev->wiphy, dev, data); | ||
771 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
772 | return ret; | ||
499 | } | 773 | } |
500 | 774 | ||
501 | static inline int rdev_tdls_mgmt(struct cfg80211_registered_device *rdev, | 775 | static inline int rdev_tdls_mgmt(struct cfg80211_registered_device *rdev, |
@@ -503,56 +777,85 @@ static inline int rdev_tdls_mgmt(struct cfg80211_registered_device *rdev, | |||
503 | u8 action_code, u8 dialog_token, | 777 | u8 action_code, u8 dialog_token, |
504 | u16 status_code, const u8 *buf, size_t len) | 778 | u16 status_code, const u8 *buf, size_t len) |
505 | { | 779 | { |
506 | return rdev->ops->tdls_mgmt(&rdev->wiphy, dev, peer, action_code, | 780 | int ret; |
507 | dialog_token, status_code, buf, len); | 781 | trace_rdev_tdls_mgmt(&rdev->wiphy, dev, peer, action_code, |
782 | dialog_token, status_code, buf, len); | ||
783 | ret = rdev->ops->tdls_mgmt(&rdev->wiphy, dev, peer, action_code, | ||
784 | dialog_token, status_code, buf, len); | ||
785 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
786 | return ret; | ||
508 | } | 787 | } |
509 | 788 | ||
510 | static inline int rdev_tdls_oper(struct cfg80211_registered_device *rdev, | 789 | static inline int rdev_tdls_oper(struct cfg80211_registered_device *rdev, |
511 | struct net_device *dev, u8 *peer, | 790 | struct net_device *dev, u8 *peer, |
512 | enum nl80211_tdls_operation oper) | 791 | enum nl80211_tdls_operation oper) |
513 | { | 792 | { |
514 | return rdev->ops->tdls_oper(&rdev->wiphy, dev, peer, oper); | 793 | int ret; |
794 | trace_rdev_tdls_oper(&rdev->wiphy, dev, peer, oper); | ||
795 | ret = rdev->ops->tdls_oper(&rdev->wiphy, dev, peer, oper); | ||
796 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
797 | return ret; | ||
515 | } | 798 | } |
516 | 799 | ||
517 | static inline int rdev_probe_client(struct cfg80211_registered_device *rdev, | 800 | static inline int rdev_probe_client(struct cfg80211_registered_device *rdev, |
518 | struct net_device *dev, const u8 *peer, | 801 | struct net_device *dev, const u8 *peer, |
519 | u64 *cookie) | 802 | u64 *cookie) |
520 | { | 803 | { |
521 | return rdev->ops->probe_client(&rdev->wiphy, dev, peer, cookie); | 804 | int ret; |
805 | trace_rdev_probe_client(&rdev->wiphy, dev, peer); | ||
806 | ret = rdev->ops->probe_client(&rdev->wiphy, dev, peer, cookie); | ||
807 | trace_rdev_return_int_cookie(&rdev->wiphy, ret, *cookie); | ||
808 | return ret; | ||
522 | } | 809 | } |
523 | 810 | ||
524 | static inline int rdev_set_noack_map(struct cfg80211_registered_device *rdev, | 811 | static inline int rdev_set_noack_map(struct cfg80211_registered_device *rdev, |
525 | struct net_device *dev, u16 noack_map) | 812 | struct net_device *dev, u16 noack_map) |
526 | { | 813 | { |
527 | return rdev->ops->set_noack_map(&rdev->wiphy, dev, noack_map); | 814 | int ret; |
815 | trace_rdev_set_noack_map(&rdev->wiphy, dev, noack_map); | ||
816 | ret = rdev->ops->set_noack_map(&rdev->wiphy, dev, noack_map); | ||
817 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
818 | return ret; | ||
528 | } | 819 | } |
529 | 820 | ||
530 | static inline int | 821 | static inline int |
531 | rdev_get_et_sset_count(struct cfg80211_registered_device *rdev, | 822 | rdev_get_et_sset_count(struct cfg80211_registered_device *rdev, |
532 | struct net_device *dev, int sset) | 823 | struct net_device *dev, int sset) |
533 | { | 824 | { |
534 | return rdev->ops->get_et_sset_count(&rdev->wiphy, dev, sset); | 825 | int ret; |
826 | trace_rdev_get_et_sset_count(&rdev->wiphy, dev, sset); | ||
827 | ret = rdev->ops->get_et_sset_count(&rdev->wiphy, dev, sset); | ||
828 | trace_rdev_return_int(&rdev->wiphy, ret); | ||
829 | return ret; | ||
535 | } | 830 | } |
536 | 831 | ||
537 | static inline void rdev_get_et_stats(struct cfg80211_registered_device *rdev, | 832 | static inline void rdev_get_et_stats(struct cfg80211_registered_device *rdev, |
538 | struct net_device *dev, | 833 | struct net_device *dev, |
539 | struct ethtool_stats *stats, u64 *data) | 834 | struct ethtool_stats *stats, u64 *data) |
540 | { | 835 | { |
836 | trace_rdev_get_et_stats(&rdev->wiphy, dev); | ||
541 | rdev->ops->get_et_stats(&rdev->wiphy, dev, stats, data); | 837 | rdev->ops->get_et_stats(&rdev->wiphy, dev, stats, data); |
838 | trace_rdev_return_void(&rdev->wiphy); | ||
542 | } | 839 | } |
543 | 840 | ||
544 | static inline void rdev_get_et_strings(struct cfg80211_registered_device *rdev, | 841 | static inline void rdev_get_et_strings(struct cfg80211_registered_device *rdev, |
545 | struct net_device *dev, u32 sset, | 842 | struct net_device *dev, u32 sset, |
546 | u8 *data) | 843 | u8 *data) |
547 | { | 844 | { |
845 | trace_rdev_get_et_strings(&rdev->wiphy, dev, sset); | ||
548 | rdev->ops->get_et_strings(&rdev->wiphy, dev, sset, data); | 846 | rdev->ops->get_et_strings(&rdev->wiphy, dev, sset, data); |
847 | trace_rdev_return_void(&rdev->wiphy); | ||
549 | } | 848 | } |
550 | 849 | ||
551 | static inline struct ieee80211_channel | 850 | static inline struct ieee80211_channel |
552 | *rdev_get_channel(struct cfg80211_registered_device *rdev, | 851 | *rdev_get_channel(struct cfg80211_registered_device *rdev, |
553 | struct wireless_dev *wdev, enum nl80211_channel_type *type) | 852 | struct wireless_dev *wdev, enum nl80211_channel_type *type) |
554 | { | 853 | { |
555 | return rdev->ops->get_channel(&rdev->wiphy, wdev, type); | 854 | struct ieee80211_channel *ret; |
855 | trace_rdev_get_channel(&rdev->wiphy, wdev); | ||
856 | ret = rdev->ops->get_channel(&rdev->wiphy, wdev, type); | ||
857 | trace_rdev_return_channel(&rdev->wiphy, ret, *type); | ||
858 | return ret; | ||
556 | } | 859 | } |
557 | 860 | ||
558 | #endif /* __CFG80211_RDEV_OPS */ | 861 | #endif /* __CFG80211_RDEV_OPS */ |