1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM cfg80211 4 5 #if !defined(__RDEV_OPS_TRACE) || defined(TRACE_HEADER_MULTI_READ) 6 #define __RDEV_OPS_TRACE 7 8 #include <linux/tracepoint.h> 9 10 #include <linux/rtnetlink.h> 11 #include <linux/etherdevice.h> 12 #include <net/cfg80211.h> 13 #include "core.h" 14 15 #define MAC_ENTRY(entry_mac) __array(u8, entry_mac, ETH_ALEN) 16 #define MAC_ASSIGN(entry_mac, given_mac) do { \ 17 if (given_mac) \ 18 memcpy(__entry->entry_mac, given_mac, ETH_ALEN); \ 19 else \ 20 eth_zero_addr(__entry->entry_mac); \ 21 } while (0) 22 #define MAC_PR_FMT "%pM" 23 #define MAC_PR_ARG(entry_mac) (__entry->entry_mac) 24 25 #define MAXNAME 32 26 #define WIPHY_ENTRY __array(char, wiphy_name, 32) 27 #define WIPHY_ASSIGN strlcpy(__entry->wiphy_name, wiphy_name(wiphy), MAXNAME) 28 #define WIPHY_PR_FMT "%s" 29 #define WIPHY_PR_ARG __entry->wiphy_name 30 31 #define WDEV_ENTRY __field(u32, id) 32 #define WDEV_ASSIGN (__entry->id) = (!IS_ERR_OR_NULL(wdev) \ 33 ? wdev->identifier : 0) 34 #define WDEV_PR_FMT "wdev(%u)" 35 #define WDEV_PR_ARG (__entry->id) 36 37 #define NETDEV_ENTRY __array(char, name, IFNAMSIZ) \ 38 __field(int, ifindex) 39 #define NETDEV_ASSIGN \ 40 do { \ 41 memcpy(__entry->name, netdev->name, IFNAMSIZ); \ 42 (__entry->ifindex) = (netdev->ifindex); \ 43 } while (0) 44 #define NETDEV_PR_FMT "netdev:%s(%d)" 45 #define NETDEV_PR_ARG __entry->name, __entry->ifindex 46 47 #define MESH_CFG_ENTRY __field(u16, dot11MeshRetryTimeout) \ 48 __field(u16, dot11MeshConfirmTimeout) \ 49 __field(u16, dot11MeshHoldingTimeout) \ 50 __field(u16, dot11MeshMaxPeerLinks) \ 51 __field(u8, dot11MeshMaxRetries) \ 52 __field(u8, dot11MeshTTL) \ 53 __field(u8, element_ttl) \ 54 __field(bool, auto_open_plinks) \ 55 __field(u32, dot11MeshNbrOffsetMaxNeighbor) \ 56 __field(u8, dot11MeshHWMPmaxPREQretries) \ 57 __field(u32, path_refresh_time) \ 58 __field(u32, dot11MeshHWMPactivePathTimeout) \ 59 __field(u16, min_discovery_timeout) \ 60 __field(u16, dot11MeshHWMPpreqMinInterval) \ 61 __field(u16, dot11MeshHWMPperrMinInterval) \ 62 __field(u16, dot11MeshHWMPnetDiameterTraversalTime) \ 63 __field(u8, dot11MeshHWMPRootMode) \ 64 __field(u16, dot11MeshHWMPRannInterval) \ 65 __field(bool, dot11MeshGateAnnouncementProtocol) \ 66 __field(bool, dot11MeshForwarding) \ 67 __field(s32, rssi_threshold) \ 68 __field(u16, ht_opmode) \ 69 __field(u32, dot11MeshHWMPactivePathToRootTimeout) \ 70 __field(u16, dot11MeshHWMProotInterval) \ 71 __field(u16, dot11MeshHWMPconfirmationInterval) \ 72 __field(bool, dot11MeshNolearn) 73 #define MESH_CFG_ASSIGN \ 74 do { \ 75 __entry->dot11MeshRetryTimeout = conf->dot11MeshRetryTimeout; \ 76 __entry->dot11MeshConfirmTimeout = \ 77 conf->dot11MeshConfirmTimeout; \ 78 __entry->dot11MeshHoldingTimeout = \ 79 conf->dot11MeshHoldingTimeout; \ 80 __entry->dot11MeshMaxPeerLinks = conf->dot11MeshMaxPeerLinks; \ 81 __entry->dot11MeshMaxRetries = conf->dot11MeshMaxRetries; \ 82 __entry->dot11MeshTTL = conf->dot11MeshTTL; \ 83 __entry->element_ttl = conf->element_ttl; \ 84 __entry->auto_open_plinks = conf->auto_open_plinks; \ 85 __entry->dot11MeshNbrOffsetMaxNeighbor = \ 86 conf->dot11MeshNbrOffsetMaxNeighbor; \ 87 __entry->dot11MeshHWMPmaxPREQretries = \ 88 conf->dot11MeshHWMPmaxPREQretries; \ 89 __entry->path_refresh_time = conf->path_refresh_time; \ 90 __entry->dot11MeshHWMPactivePathTimeout = \ 91 conf->dot11MeshHWMPactivePathTimeout; \ 92 __entry->min_discovery_timeout = conf->min_discovery_timeout; \ 93 __entry->dot11MeshHWMPpreqMinInterval = \ 94 conf->dot11MeshHWMPpreqMinInterval; \ 95 __entry->dot11MeshHWMPperrMinInterval = \ 96 conf->dot11MeshHWMPperrMinInterval; \ 97 __entry->dot11MeshHWMPnetDiameterTraversalTime = \ 98 conf->dot11MeshHWMPnetDiameterTraversalTime; \ 99 __entry->dot11MeshHWMPRootMode = conf->dot11MeshHWMPRootMode; \ 100 __entry->dot11MeshHWMPRannInterval = \ 101 conf->dot11MeshHWMPRannInterval; \ 102 __entry->dot11MeshGateAnnouncementProtocol = \ 103 conf->dot11MeshGateAnnouncementProtocol; \ 104 __entry->dot11MeshForwarding = conf->dot11MeshForwarding; \ 105 __entry->rssi_threshold = conf->rssi_threshold; \ 106 __entry->ht_opmode = conf->ht_opmode; \ 107 __entry->dot11MeshHWMPactivePathToRootTimeout = \ 108 conf->dot11MeshHWMPactivePathToRootTimeout; \ 109 __entry->dot11MeshHWMProotInterval = \ 110 conf->dot11MeshHWMProotInterval; \ 111 __entry->dot11MeshHWMPconfirmationInterval = \ 112 conf->dot11MeshHWMPconfirmationInterval; \ 113 __entry->dot11MeshNolearn = conf->dot11MeshNolearn; \ 114 } while (0) 115 116 #define CHAN_ENTRY __field(enum nl80211_band, band) \ 117 __field(u32, center_freq) \ 118 __field(u16, freq_offset) 119 #define CHAN_ASSIGN(chan) \ 120 do { \ 121 if (chan) { \ 122 __entry->band = chan->band; \ 123 __entry->center_freq = chan->center_freq; \ 124 __entry->freq_offset = chan->freq_offset; \ 125 } else { \ 126 __entry->band = 0; \ 127 __entry->center_freq = 0; \ 128 __entry->freq_offset = 0; \ 129 } \ 130 } while (0) 131 #define CHAN_PR_FMT "band: %d, freq: %u.%03u" 132 #define CHAN_PR_ARG __entry->band, __entry->center_freq, __entry->freq_offset 133 134 #define CHAN_DEF_ENTRY __field(enum nl80211_band, band) \ 135 __field(u32, control_freq) \ 136 __field(u32, freq_offset) \ 137 __field(u32, width) \ 138 __field(u32, center_freq1) \ 139 __field(u32, freq1_offset) \ 140 __field(u32, center_freq2) 141 #define CHAN_DEF_ASSIGN(chandef) \ 142 do { \ 143 if ((chandef) && (chandef)->chan) { \ 144 __entry->band = (chandef)->chan->band; \ 145 __entry->control_freq = \ 146 (chandef)->chan->center_freq; \ 147 __entry->freq_offset = \ 148 (chandef)->chan->freq_offset; \ 149 __entry->width = (chandef)->width; \ 150 __entry->center_freq1 = (chandef)->center_freq1;\ 151 __entry->freq1_offset = (chandef)->freq1_offset;\ 152 __entry->center_freq2 = (chandef)->center_freq2;\ 153 } else { \ 154 __entry->band = 0; \ 155 __entry->control_freq = 0; \ 156 __entry->freq_offset = 0; \ 157 __entry->width = 0; \ 158 __entry->center_freq1 = 0; \ 159 __entry->freq1_offset = 0; \ 160 __entry->center_freq2 = 0; \ 161 } \ 162 } while (0) 163 #define CHAN_DEF_PR_FMT \ 164 "band: %d, control freq: %u.%03u, width: %d, cf1: %u.%03u, cf2: %u" 165 #define CHAN_DEF_PR_ARG __entry->band, __entry->control_freq, \ 166 __entry->freq_offset, __entry->width, \ 167 __entry->center_freq1, __entry->freq1_offset, \ 168 __entry->center_freq2 169 170 #define SINFO_ENTRY __field(int, generation) \ 171 __field(u32, connected_time) \ 172 __field(u32, inactive_time) \ 173 __field(u32, rx_bytes) \ 174 __field(u32, tx_bytes) \ 175 __field(u32, rx_packets) \ 176 __field(u32, tx_packets) \ 177 __field(u32, tx_retries) \ 178 __field(u32, tx_failed) \ 179 __field(u32, rx_dropped_misc) \ 180 __field(u32, beacon_loss_count) \ 181 __field(u16, llid) \ 182 __field(u16, plid) \ 183 __field(u8, plink_state) 184 #define SINFO_ASSIGN \ 185 do { \ 186 __entry->generation = sinfo->generation; \ 187 __entry->connected_time = sinfo->connected_time; \ 188 __entry->inactive_time = sinfo->inactive_time; \ 189 __entry->rx_bytes = sinfo->rx_bytes; \ 190 __entry->tx_bytes = sinfo->tx_bytes; \ 191 __entry->rx_packets = sinfo->rx_packets; \ 192 __entry->tx_packets = sinfo->tx_packets; \ 193 __entry->tx_retries = sinfo->tx_retries; \ 194 __entry->tx_failed = sinfo->tx_failed; \ 195 __entry->rx_dropped_misc = sinfo->rx_dropped_misc; \ 196 __entry->beacon_loss_count = sinfo->beacon_loss_count; \ 197 __entry->llid = sinfo->llid; \ 198 __entry->plid = sinfo->plid; \ 199 __entry->plink_state = sinfo->plink_state; \ 200 } while (0) 201 202 #define BOOL_TO_STR(bo) (bo) ? "true" : "false" 203 204 #define QOS_MAP_ENTRY __field(u8, num_des) \ 205 __array(u8, dscp_exception, \ 206 2 * IEEE80211_QOS_MAP_MAX_EX) \ 207 __array(u8, up, IEEE80211_QOS_MAP_LEN_MIN) 208 #define QOS_MAP_ASSIGN(qos_map) \ 209 do { \ 210 if ((qos_map)) { \ 211 __entry->num_des = (qos_map)->num_des; \ 212 memcpy(__entry->dscp_exception, \ 213 &(qos_map)->dscp_exception, \ 214 2 * IEEE80211_QOS_MAP_MAX_EX); \ 215 memcpy(__entry->up, &(qos_map)->up, \ 216 IEEE80211_QOS_MAP_LEN_MIN); \ 217 } else { \ 218 __entry->num_des = 0; \ 219 memset(__entry->dscp_exception, 0, \ 220 2 * IEEE80211_QOS_MAP_MAX_EX); \ 221 memset(__entry->up, 0, \ 222 IEEE80211_QOS_MAP_LEN_MIN); \ 223 } \ 224 } while (0) 225 226 /************************************************************* 227 * rdev->ops traces * 228 *************************************************************/ 229 230 TRACE_EVENT(rdev_suspend, 231 TP_PROTO(struct wiphy *wiphy, struct cfg80211_wowlan *wow), 232 TP_ARGS(wiphy, wow), 233 TP_STRUCT__entry( 234 WIPHY_ENTRY 235 __field(bool, any) 236 __field(bool, disconnect) 237 __field(bool, magic_pkt) 238 __field(bool, gtk_rekey_failure) 239 __field(bool, eap_identity_req) 240 __field(bool, four_way_handshake) 241 __field(bool, rfkill_release) 242 __field(bool, valid_wow) 243 ), 244 TP_fast_assign( 245 WIPHY_ASSIGN; 246 if (wow) { 247 __entry->any = wow->any; 248 __entry->disconnect = wow->disconnect; 249 __entry->magic_pkt = wow->magic_pkt; 250 __entry->gtk_rekey_failure = wow->gtk_rekey_failure; 251 __entry->eap_identity_req = wow->eap_identity_req; 252 __entry->four_way_handshake = wow->four_way_handshake; 253 __entry->rfkill_release = wow->rfkill_release; 254 __entry->valid_wow = true; 255 } else { 256 __entry->valid_wow = false; 257 } 258 ), 259 TP_printk(WIPHY_PR_FMT ", wow%s - any: %d, disconnect: %d, " 260 "magic pkt: %d, gtk rekey failure: %d, eap identify req: %d, " 261 "four way handshake: %d, rfkill release: %d.", 262 WIPHY_PR_ARG, __entry->valid_wow ? "" : "(Not configured!)", 263 __entry->any, __entry->disconnect, __entry->magic_pkt, 264 __entry->gtk_rekey_failure, __entry->eap_identity_req, 265 __entry->four_way_handshake, __entry->rfkill_release) 266 ); 267 268 TRACE_EVENT(rdev_return_int, 269 TP_PROTO(struct wiphy *wiphy, int ret), 270 TP_ARGS(wiphy, ret), 271 TP_STRUCT__entry( 272 WIPHY_ENTRY 273 __field(int, ret) 274 ), 275 TP_fast_assign( 276 WIPHY_ASSIGN; 277 __entry->ret = ret; 278 ), 279 TP_printk(WIPHY_PR_FMT ", returned: %d", WIPHY_PR_ARG, __entry->ret) 280 ); 281 282 TRACE_EVENT(rdev_scan, 283 TP_PROTO(struct wiphy *wiphy, struct cfg80211_scan_request *request), 284 TP_ARGS(wiphy, request), 285 TP_STRUCT__entry( 286 WIPHY_ENTRY 287 ), 288 TP_fast_assign( 289 WIPHY_ASSIGN; 290 ), 291 TP_printk(WIPHY_PR_FMT, WIPHY_PR_ARG) 292 ); 293 294 DECLARE_EVENT_CLASS(wiphy_only_evt, 295 TP_PROTO(struct wiphy *wiphy), 296 TP_ARGS(wiphy), 297 TP_STRUCT__entry( 298 WIPHY_ENTRY 299 ), 300 TP_fast_assign( 301 WIPHY_ASSIGN; 302 ), 303 TP_printk(WIPHY_PR_FMT, WIPHY_PR_ARG) 304 ); 305 306 DEFINE_EVENT(wiphy_only_evt, rdev_resume, 307 TP_PROTO(struct wiphy *wiphy), 308 TP_ARGS(wiphy) 309 ); 310 311 DEFINE_EVENT(wiphy_only_evt, rdev_return_void, 312 TP_PROTO(struct wiphy *wiphy), 313 TP_ARGS(wiphy) 314 ); 315 316 DEFINE_EVENT(wiphy_only_evt, rdev_get_antenna, 317 TP_PROTO(struct wiphy *wiphy), 318 TP_ARGS(wiphy) 319 ); 320 321 DEFINE_EVENT(wiphy_only_evt, rdev_rfkill_poll, 322 TP_PROTO(struct wiphy *wiphy), 323 TP_ARGS(wiphy) 324 ); 325 326 DECLARE_EVENT_CLASS(wiphy_enabled_evt, 327 TP_PROTO(struct wiphy *wiphy, bool enabled), 328 TP_ARGS(wiphy, enabled), 329 TP_STRUCT__entry( 330 WIPHY_ENTRY 331 __field(bool, enabled) 332 ), 333 TP_fast_assign( 334 WIPHY_ASSIGN; 335 __entry->enabled = enabled; 336 ), 337 TP_printk(WIPHY_PR_FMT ", %senabled ", 338 WIPHY_PR_ARG, __entry->enabled ? "" : "not ") 339 ); 340 341 DEFINE_EVENT(wiphy_enabled_evt, rdev_set_wakeup, 342 TP_PROTO(struct wiphy *wiphy, bool enabled), 343 TP_ARGS(wiphy, enabled) 344 ); 345 346 TRACE_EVENT(rdev_add_virtual_intf, 347 TP_PROTO(struct wiphy *wiphy, char *name, enum nl80211_iftype type), 348 TP_ARGS(wiphy, name, type), 349 TP_STRUCT__entry( 350 WIPHY_ENTRY 351 __string(vir_intf_name, name ? name : "<noname>") 352 __field(enum nl80211_iftype, type) 353 ), 354 TP_fast_assign( 355 WIPHY_ASSIGN; 356 __assign_str(vir_intf_name, name ? name : "<noname>"); 357 __entry->type = type; 358 ), 359 TP_printk(WIPHY_PR_FMT ", virtual intf name: %s, type: %d", 360 WIPHY_PR_ARG, __get_str(vir_intf_name), __entry->type) 361 ); 362 363 DECLARE_EVENT_CLASS(wiphy_wdev_evt, 364 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 365 TP_ARGS(wiphy, wdev), 366 TP_STRUCT__entry( 367 WIPHY_ENTRY 368 WDEV_ENTRY 369 ), 370 TP_fast_assign( 371 WIPHY_ASSIGN; 372 WDEV_ASSIGN; 373 ), 374 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT, WIPHY_PR_ARG, WDEV_PR_ARG) 375 ); 376 377 DECLARE_EVENT_CLASS(wiphy_wdev_cookie_evt, 378 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie), 379 TP_ARGS(wiphy, wdev, cookie), 380 TP_STRUCT__entry( 381 WIPHY_ENTRY 382 WDEV_ENTRY 383 __field(u64, cookie) 384 ), 385 TP_fast_assign( 386 WIPHY_ASSIGN; 387 WDEV_ASSIGN; 388 __entry->cookie = cookie; 389 ), 390 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie: %lld", 391 WIPHY_PR_ARG, WDEV_PR_ARG, 392 (unsigned long long)__entry->cookie) 393 ); 394 395 DEFINE_EVENT(wiphy_wdev_evt, rdev_return_wdev, 396 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 397 TP_ARGS(wiphy, wdev) 398 ); 399 400 DEFINE_EVENT(wiphy_wdev_evt, rdev_del_virtual_intf, 401 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 402 TP_ARGS(wiphy, wdev) 403 ); 404 405 TRACE_EVENT(rdev_change_virtual_intf, 406 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 407 enum nl80211_iftype type), 408 TP_ARGS(wiphy, netdev, type), 409 TP_STRUCT__entry( 410 WIPHY_ENTRY 411 NETDEV_ENTRY 412 __field(enum nl80211_iftype, type) 413 ), 414 TP_fast_assign( 415 WIPHY_ASSIGN; 416 NETDEV_ASSIGN; 417 __entry->type = type; 418 ), 419 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", type: %d", 420 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->type) 421 ); 422 423 DECLARE_EVENT_CLASS(key_handle, 424 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, 425 bool pairwise, const u8 *mac_addr), 426 TP_ARGS(wiphy, netdev, key_index, pairwise, mac_addr), 427 TP_STRUCT__entry( 428 WIPHY_ENTRY 429 NETDEV_ENTRY 430 MAC_ENTRY(mac_addr) 431 __field(u8, key_index) 432 __field(bool, pairwise) 433 ), 434 TP_fast_assign( 435 WIPHY_ASSIGN; 436 NETDEV_ASSIGN; 437 MAC_ASSIGN(mac_addr, mac_addr); 438 __entry->key_index = key_index; 439 __entry->pairwise = pairwise; 440 ), 441 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", key_index: %u, pairwise: %s, mac addr: " MAC_PR_FMT, 442 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->key_index, 443 BOOL_TO_STR(__entry->pairwise), MAC_PR_ARG(mac_addr)) 444 ); 445 446 DEFINE_EVENT(key_handle, rdev_get_key, 447 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, 448 bool pairwise, const u8 *mac_addr), 449 TP_ARGS(wiphy, netdev, key_index, pairwise, mac_addr) 450 ); 451 452 DEFINE_EVENT(key_handle, rdev_del_key, 453 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, 454 bool pairwise, const u8 *mac_addr), 455 TP_ARGS(wiphy, netdev, key_index, pairwise, mac_addr) 456 ); 457 458 TRACE_EVENT(rdev_add_key, 459 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, 460 bool pairwise, const u8 *mac_addr, u8 mode), 461 TP_ARGS(wiphy, netdev, key_index, pairwise, mac_addr, mode), 462 TP_STRUCT__entry( 463 WIPHY_ENTRY 464 NETDEV_ENTRY 465 MAC_ENTRY(mac_addr) 466 __field(u8, key_index) 467 __field(bool, pairwise) 468 __field(u8, mode) 469 ), 470 TP_fast_assign( 471 WIPHY_ASSIGN; 472 NETDEV_ASSIGN; 473 MAC_ASSIGN(mac_addr, mac_addr); 474 __entry->key_index = key_index; 475 __entry->pairwise = pairwise; 476 __entry->mode = mode; 477 ), 478 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", key_index: %u, " 479 "mode: %u, pairwise: %s, mac addr: " MAC_PR_FMT, 480 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->key_index, 481 __entry->mode, BOOL_TO_STR(__entry->pairwise), 482 MAC_PR_ARG(mac_addr)) 483 ); 484 485 TRACE_EVENT(rdev_set_default_key, 486 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 key_index, 487 bool unicast, bool multicast), 488 TP_ARGS(wiphy, netdev, key_index, unicast, multicast), 489 TP_STRUCT__entry( 490 WIPHY_ENTRY 491 NETDEV_ENTRY 492 __field(u8, key_index) 493 __field(bool, unicast) 494 __field(bool, multicast) 495 ), 496 TP_fast_assign( 497 WIPHY_ASSIGN; 498 NETDEV_ASSIGN; 499 __entry->key_index = key_index; 500 __entry->unicast = unicast; 501 __entry->multicast = multicast; 502 ), 503 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", key index: %u, unicast: %s, multicast: %s", 504 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->key_index, 505 BOOL_TO_STR(__entry->unicast), 506 BOOL_TO_STR(__entry->multicast)) 507 ); 508 509 TRACE_EVENT(rdev_set_default_mgmt_key, 510 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 key_index), 511 TP_ARGS(wiphy, netdev, key_index), 512 TP_STRUCT__entry( 513 WIPHY_ENTRY 514 NETDEV_ENTRY 515 __field(u8, key_index) 516 ), 517 TP_fast_assign( 518 WIPHY_ASSIGN; 519 NETDEV_ASSIGN; 520 __entry->key_index = key_index; 521 ), 522 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", key index: %u", 523 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->key_index) 524 ); 525 526 TRACE_EVENT(rdev_set_default_beacon_key, 527 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 key_index), 528 TP_ARGS(wiphy, netdev, key_index), 529 TP_STRUCT__entry( 530 WIPHY_ENTRY 531 NETDEV_ENTRY 532 __field(u8, key_index) 533 ), 534 TP_fast_assign( 535 WIPHY_ASSIGN; 536 NETDEV_ASSIGN; 537 __entry->key_index = key_index; 538 ), 539 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", key index: %u", 540 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->key_index) 541 ); 542 543 TRACE_EVENT(rdev_start_ap, 544 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 545 struct cfg80211_ap_settings *settings), 546 TP_ARGS(wiphy, netdev, settings), 547 TP_STRUCT__entry( 548 WIPHY_ENTRY 549 NETDEV_ENTRY 550 CHAN_DEF_ENTRY 551 __field(int, beacon_interval) 552 __field(int, dtim_period) 553 __array(char, ssid, IEEE80211_MAX_SSID_LEN + 1) 554 __field(enum nl80211_hidden_ssid, hidden_ssid) 555 __field(u32, wpa_ver) 556 __field(bool, privacy) 557 __field(enum nl80211_auth_type, auth_type) 558 __field(int, inactivity_timeout) 559 ), 560 TP_fast_assign( 561 WIPHY_ASSIGN; 562 NETDEV_ASSIGN; 563 CHAN_DEF_ASSIGN(&settings->chandef); 564 __entry->beacon_interval = settings->beacon_interval; 565 __entry->dtim_period = settings->dtim_period; 566 __entry->hidden_ssid = settings->hidden_ssid; 567 __entry->wpa_ver = settings->crypto.wpa_versions; 568 __entry->privacy = settings->privacy; 569 __entry->auth_type = settings->auth_type; 570 __entry->inactivity_timeout = settings->inactivity_timeout; 571 memset(__entry->ssid, 0, IEEE80211_MAX_SSID_LEN + 1); 572 memcpy(__entry->ssid, settings->ssid, settings->ssid_len); 573 ), 574 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", AP settings - ssid: %s, " 575 CHAN_DEF_PR_FMT ", beacon interval: %d, dtim period: %d, " 576 "hidden ssid: %d, wpa versions: %u, privacy: %s, " 577 "auth type: %d, inactivity timeout: %d", 578 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->ssid, CHAN_DEF_PR_ARG, 579 __entry->beacon_interval, __entry->dtim_period, 580 __entry->hidden_ssid, __entry->wpa_ver, 581 BOOL_TO_STR(__entry->privacy), __entry->auth_type, 582 __entry->inactivity_timeout) 583 ); 584 585 TRACE_EVENT(rdev_change_beacon, 586 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 587 struct cfg80211_beacon_data *info), 588 TP_ARGS(wiphy, netdev, info), 589 TP_STRUCT__entry( 590 WIPHY_ENTRY 591 NETDEV_ENTRY 592 __dynamic_array(u8, head, info ? info->head_len : 0) 593 __dynamic_array(u8, tail, info ? info->tail_len : 0) 594 __dynamic_array(u8, beacon_ies, info ? info->beacon_ies_len : 0) 595 __dynamic_array(u8, proberesp_ies, 596 info ? info->proberesp_ies_len : 0) 597 __dynamic_array(u8, assocresp_ies, 598 info ? info->assocresp_ies_len : 0) 599 __dynamic_array(u8, probe_resp, info ? info->probe_resp_len : 0) 600 ), 601 TP_fast_assign( 602 WIPHY_ASSIGN; 603 NETDEV_ASSIGN; 604 if (info) { 605 if (info->head) 606 memcpy(__get_dynamic_array(head), info->head, 607 info->head_len); 608 if (info->tail) 609 memcpy(__get_dynamic_array(tail), info->tail, 610 info->tail_len); 611 if (info->beacon_ies) 612 memcpy(__get_dynamic_array(beacon_ies), 613 info->beacon_ies, info->beacon_ies_len); 614 if (info->proberesp_ies) 615 memcpy(__get_dynamic_array(proberesp_ies), 616 info->proberesp_ies, 617 info->proberesp_ies_len); 618 if (info->assocresp_ies) 619 memcpy(__get_dynamic_array(assocresp_ies), 620 info->assocresp_ies, 621 info->assocresp_ies_len); 622 if (info->probe_resp) 623 memcpy(__get_dynamic_array(probe_resp), 624 info->probe_resp, info->probe_resp_len); 625 } 626 ), 627 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT, WIPHY_PR_ARG, NETDEV_PR_ARG) 628 ); 629 630 DECLARE_EVENT_CLASS(wiphy_netdev_evt, 631 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 632 TP_ARGS(wiphy, netdev), 633 TP_STRUCT__entry( 634 WIPHY_ENTRY 635 NETDEV_ENTRY 636 ), 637 TP_fast_assign( 638 WIPHY_ASSIGN; 639 NETDEV_ASSIGN; 640 ), 641 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT, WIPHY_PR_ARG, NETDEV_PR_ARG) 642 ); 643 644 DEFINE_EVENT(wiphy_netdev_evt, rdev_stop_ap, 645 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 646 TP_ARGS(wiphy, netdev) 647 ); 648 649 DEFINE_EVENT(wiphy_netdev_evt, rdev_set_rekey_data, 650 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 651 TP_ARGS(wiphy, netdev) 652 ); 653 654 DEFINE_EVENT(wiphy_netdev_evt, rdev_get_mesh_config, 655 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 656 TP_ARGS(wiphy, netdev) 657 ); 658 659 DEFINE_EVENT(wiphy_netdev_evt, rdev_leave_mesh, 660 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 661 TP_ARGS(wiphy, netdev) 662 ); 663 664 DEFINE_EVENT(wiphy_netdev_evt, rdev_leave_ibss, 665 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 666 TP_ARGS(wiphy, netdev) 667 ); 668 669 DEFINE_EVENT(wiphy_netdev_evt, rdev_leave_ocb, 670 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 671 TP_ARGS(wiphy, netdev) 672 ); 673 674 DEFINE_EVENT(wiphy_netdev_evt, rdev_flush_pmksa, 675 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 676 TP_ARGS(wiphy, netdev) 677 ); 678 679 DEFINE_EVENT(wiphy_netdev_evt, rdev_end_cac, 680 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev), 681 TP_ARGS(wiphy, netdev) 682 ); 683 684 DECLARE_EVENT_CLASS(station_add_change, 685 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 *mac, 686 struct station_parameters *params), 687 TP_ARGS(wiphy, netdev, mac, params), 688 TP_STRUCT__entry( 689 WIPHY_ENTRY 690 NETDEV_ENTRY 691 MAC_ENTRY(sta_mac) 692 __field(u32, sta_flags_mask) 693 __field(u32, sta_flags_set) 694 __field(u32, sta_modify_mask) 695 __field(int, listen_interval) 696 __field(u16, capability) 697 __field(u16, aid) 698 __field(u8, plink_action) 699 __field(u8, plink_state) 700 __field(u8, uapsd_queues) 701 __field(u8, max_sp) 702 __field(u8, opmode_notif) 703 __field(bool, opmode_notif_used) 704 __array(u8, ht_capa, (int)sizeof(struct ieee80211_ht_cap)) 705 __array(u8, vht_capa, (int)sizeof(struct ieee80211_vht_cap)) 706 __array(char, vlan, IFNAMSIZ) 707 __dynamic_array(u8, supported_rates, 708 params->supported_rates_len) 709 __dynamic_array(u8, ext_capab, params->ext_capab_len) 710 __dynamic_array(u8, supported_channels, 711 params->supported_channels_len) 712 __dynamic_array(u8, supported_oper_classes, 713 params->supported_oper_classes_len) 714 ), 715 TP_fast_assign( 716 WIPHY_ASSIGN; 717 NETDEV_ASSIGN; 718 MAC_ASSIGN(sta_mac, mac); 719 __entry->sta_flags_mask = params->sta_flags_mask; 720 __entry->sta_flags_set = params->sta_flags_set; 721 __entry->sta_modify_mask = params->sta_modify_mask; 722 __entry->listen_interval = params->listen_interval; 723 __entry->aid = params->aid; 724 __entry->plink_action = params->plink_action; 725 __entry->plink_state = params->plink_state; 726 __entry->uapsd_queues = params->uapsd_queues; 727 memset(__entry->ht_capa, 0, sizeof(struct ieee80211_ht_cap)); 728 if (params->ht_capa) 729 memcpy(__entry->ht_capa, params->ht_capa, 730 sizeof(struct ieee80211_ht_cap)); 731 memset(__entry->vht_capa, 0, sizeof(struct ieee80211_vht_cap)); 732 if (params->vht_capa) 733 memcpy(__entry->vht_capa, params->vht_capa, 734 sizeof(struct ieee80211_vht_cap)); 735 memset(__entry->vlan, 0, sizeof(__entry->vlan)); 736 if (params->vlan) 737 memcpy(__entry->vlan, params->vlan->name, IFNAMSIZ); 738 if (params->supported_rates && params->supported_rates_len) 739 memcpy(__get_dynamic_array(supported_rates), 740 params->supported_rates, 741 params->supported_rates_len); 742 if (params->ext_capab && params->ext_capab_len) 743 memcpy(__get_dynamic_array(ext_capab), 744 params->ext_capab, 745 params->ext_capab_len); 746 if (params->supported_channels && 747 params->supported_channels_len) 748 memcpy(__get_dynamic_array(supported_channels), 749 params->supported_channels, 750 params->supported_channels_len); 751 if (params->supported_oper_classes && 752 params->supported_oper_classes_len) 753 memcpy(__get_dynamic_array(supported_oper_classes), 754 params->supported_oper_classes, 755 params->supported_oper_classes_len); 756 __entry->max_sp = params->max_sp; 757 __entry->capability = params->capability; 758 __entry->opmode_notif = params->opmode_notif; 759 __entry->opmode_notif_used = params->opmode_notif_used; 760 ), 761 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT 762 ", station flags mask: %u, station flags set: %u, " 763 "station modify mask: %u, listen interval: %d, aid: %u, " 764 "plink action: %u, plink state: %u, uapsd queues: %u, vlan:%s", 765 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac), 766 __entry->sta_flags_mask, __entry->sta_flags_set, 767 __entry->sta_modify_mask, __entry->listen_interval, 768 __entry->aid, __entry->plink_action, __entry->plink_state, 769 __entry->uapsd_queues, __entry->vlan) 770 ); 771 772 DEFINE_EVENT(station_add_change, rdev_add_station, 773 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 *mac, 774 struct station_parameters *params), 775 TP_ARGS(wiphy, netdev, mac, params) 776 ); 777 778 DEFINE_EVENT(station_add_change, rdev_change_station, 779 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 *mac, 780 struct station_parameters *params), 781 TP_ARGS(wiphy, netdev, mac, params) 782 ); 783 784 DECLARE_EVENT_CLASS(wiphy_netdev_mac_evt, 785 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *mac), 786 TP_ARGS(wiphy, netdev, mac), 787 TP_STRUCT__entry( 788 WIPHY_ENTRY 789 NETDEV_ENTRY 790 MAC_ENTRY(sta_mac) 791 ), 792 TP_fast_assign( 793 WIPHY_ASSIGN; 794 NETDEV_ASSIGN; 795 MAC_ASSIGN(sta_mac, mac); 796 ), 797 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", mac: " MAC_PR_FMT, 798 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac)) 799 ); 800 801 DECLARE_EVENT_CLASS(station_del, 802 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 803 struct station_del_parameters *params), 804 TP_ARGS(wiphy, netdev, params), 805 TP_STRUCT__entry( 806 WIPHY_ENTRY 807 NETDEV_ENTRY 808 MAC_ENTRY(sta_mac) 809 __field(u8, subtype) 810 __field(u16, reason_code) 811 ), 812 TP_fast_assign( 813 WIPHY_ASSIGN; 814 NETDEV_ASSIGN; 815 MAC_ASSIGN(sta_mac, params->mac); 816 __entry->subtype = params->subtype; 817 __entry->reason_code = params->reason_code; 818 ), 819 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT 820 ", subtype: %u, reason_code: %u", 821 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac), 822 __entry->subtype, __entry->reason_code) 823 ); 824 825 DEFINE_EVENT(station_del, rdev_del_station, 826 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 827 struct station_del_parameters *params), 828 TP_ARGS(wiphy, netdev, params) 829 ); 830 831 DEFINE_EVENT(wiphy_netdev_mac_evt, rdev_get_station, 832 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *mac), 833 TP_ARGS(wiphy, netdev, mac) 834 ); 835 836 DEFINE_EVENT(wiphy_netdev_mac_evt, rdev_del_mpath, 837 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *mac), 838 TP_ARGS(wiphy, netdev, mac) 839 ); 840 841 DEFINE_EVENT(wiphy_netdev_mac_evt, rdev_set_wds_peer, 842 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *mac), 843 TP_ARGS(wiphy, netdev, mac) 844 ); 845 846 TRACE_EVENT(rdev_dump_station, 847 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int _idx, 848 u8 *mac), 849 TP_ARGS(wiphy, netdev, _idx, mac), 850 TP_STRUCT__entry( 851 WIPHY_ENTRY 852 NETDEV_ENTRY 853 MAC_ENTRY(sta_mac) 854 __field(int, idx) 855 ), 856 TP_fast_assign( 857 WIPHY_ASSIGN; 858 NETDEV_ASSIGN; 859 MAC_ASSIGN(sta_mac, mac); 860 __entry->idx = _idx; 861 ), 862 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", station mac: " MAC_PR_FMT ", idx: %d", 863 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(sta_mac), 864 __entry->idx) 865 ); 866 867 TRACE_EVENT(rdev_return_int_station_info, 868 TP_PROTO(struct wiphy *wiphy, int ret, struct station_info *sinfo), 869 TP_ARGS(wiphy, ret, sinfo), 870 TP_STRUCT__entry( 871 WIPHY_ENTRY 872 __field(int, ret) 873 SINFO_ENTRY 874 ), 875 TP_fast_assign( 876 WIPHY_ASSIGN; 877 __entry->ret = ret; 878 SINFO_ASSIGN; 879 ), 880 TP_printk(WIPHY_PR_FMT ", returned %d" , 881 WIPHY_PR_ARG, __entry->ret) 882 ); 883 884 DECLARE_EVENT_CLASS(mpath_evt, 885 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 *dst, 886 u8 *next_hop), 887 TP_ARGS(wiphy, netdev, dst, next_hop), 888 TP_STRUCT__entry( 889 WIPHY_ENTRY 890 NETDEV_ENTRY 891 MAC_ENTRY(dst) 892 MAC_ENTRY(next_hop) 893 ), 894 TP_fast_assign( 895 WIPHY_ASSIGN; 896 NETDEV_ASSIGN; 897 MAC_ASSIGN(dst, dst); 898 MAC_ASSIGN(next_hop, next_hop); 899 ), 900 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", destination: " MAC_PR_FMT ", next hop: " MAC_PR_FMT, 901 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(dst), 902 MAC_PR_ARG(next_hop)) 903 ); 904 905 DEFINE_EVENT(mpath_evt, rdev_add_mpath, 906 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 *dst, 907 u8 *next_hop), 908 TP_ARGS(wiphy, netdev, dst, next_hop) 909 ); 910 911 DEFINE_EVENT(mpath_evt, rdev_change_mpath, 912 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 *dst, 913 u8 *next_hop), 914 TP_ARGS(wiphy, netdev, dst, next_hop) 915 ); 916 917 DEFINE_EVENT(mpath_evt, rdev_get_mpath, 918 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u8 *dst, 919 u8 *next_hop), 920 TP_ARGS(wiphy, netdev, dst, next_hop) 921 ); 922 923 TRACE_EVENT(rdev_dump_mpath, 924 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int _idx, 925 u8 *dst, u8 *next_hop), 926 TP_ARGS(wiphy, netdev, _idx, dst, next_hop), 927 TP_STRUCT__entry( 928 WIPHY_ENTRY 929 NETDEV_ENTRY 930 MAC_ENTRY(dst) 931 MAC_ENTRY(next_hop) 932 __field(int, idx) 933 ), 934 TP_fast_assign( 935 WIPHY_ASSIGN; 936 NETDEV_ASSIGN; 937 MAC_ASSIGN(dst, dst); 938 MAC_ASSIGN(next_hop, next_hop); 939 __entry->idx = _idx; 940 ), 941 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", index: %d, destination: " 942 MAC_PR_FMT ", next hop: " MAC_PR_FMT, 943 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->idx, MAC_PR_ARG(dst), 944 MAC_PR_ARG(next_hop)) 945 ); 946 947 TRACE_EVENT(rdev_get_mpp, 948 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 949 u8 *dst, u8 *mpp), 950 TP_ARGS(wiphy, netdev, dst, mpp), 951 TP_STRUCT__entry( 952 WIPHY_ENTRY 953 NETDEV_ENTRY 954 MAC_ENTRY(dst) 955 MAC_ENTRY(mpp) 956 ), 957 TP_fast_assign( 958 WIPHY_ASSIGN; 959 NETDEV_ASSIGN; 960 MAC_ASSIGN(dst, dst); 961 MAC_ASSIGN(mpp, mpp); 962 ), 963 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", destination: " MAC_PR_FMT 964 ", mpp: " MAC_PR_FMT, WIPHY_PR_ARG, NETDEV_PR_ARG, 965 MAC_PR_ARG(dst), MAC_PR_ARG(mpp)) 966 ); 967 968 TRACE_EVENT(rdev_dump_mpp, 969 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int _idx, 970 u8 *dst, u8 *mpp), 971 TP_ARGS(wiphy, netdev, _idx, mpp, dst), 972 TP_STRUCT__entry( 973 WIPHY_ENTRY 974 NETDEV_ENTRY 975 MAC_ENTRY(dst) 976 MAC_ENTRY(mpp) 977 __field(int, idx) 978 ), 979 TP_fast_assign( 980 WIPHY_ASSIGN; 981 NETDEV_ASSIGN; 982 MAC_ASSIGN(dst, dst); 983 MAC_ASSIGN(mpp, mpp); 984 __entry->idx = _idx; 985 ), 986 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", index: %d, destination: " 987 MAC_PR_FMT ", mpp: " MAC_PR_FMT, 988 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->idx, MAC_PR_ARG(dst), 989 MAC_PR_ARG(mpp)) 990 ); 991 992 TRACE_EVENT(rdev_return_int_mpath_info, 993 TP_PROTO(struct wiphy *wiphy, int ret, struct mpath_info *pinfo), 994 TP_ARGS(wiphy, ret, pinfo), 995 TP_STRUCT__entry( 996 WIPHY_ENTRY 997 __field(int, ret) 998 __field(int, generation) 999 __field(u32, filled) 1000 __field(u32, frame_qlen) 1001 __field(u32, sn) 1002 __field(u32, metric) 1003 __field(u32, exptime) 1004 __field(u32, discovery_timeout) 1005 __field(u8, discovery_retries) 1006 __field(u8, flags) 1007 ), 1008 TP_fast_assign( 1009 WIPHY_ASSIGN; 1010 __entry->ret = ret; 1011 __entry->generation = pinfo->generation; 1012 __entry->filled = pinfo->filled; 1013 __entry->frame_qlen = pinfo->frame_qlen; 1014 __entry->sn = pinfo->sn; 1015 __entry->metric = pinfo->metric; 1016 __entry->exptime = pinfo->exptime; 1017 __entry->discovery_timeout = pinfo->discovery_timeout; 1018 __entry->discovery_retries = pinfo->discovery_retries; 1019 __entry->flags = pinfo->flags; 1020 ), 1021 TP_printk(WIPHY_PR_FMT ", returned %d. mpath info - generation: %d, " 1022 "filled: %u, frame qlen: %u, sn: %u, metric: %u, exptime: %u," 1023 " discovery timeout: %u, discovery retries: %u, flags: %u", 1024 WIPHY_PR_ARG, __entry->ret, __entry->generation, 1025 __entry->filled, __entry->frame_qlen, __entry->sn, 1026 __entry->metric, __entry->exptime, __entry->discovery_timeout, 1027 __entry->discovery_retries, __entry->flags) 1028 ); 1029 1030 TRACE_EVENT(rdev_return_int_mesh_config, 1031 TP_PROTO(struct wiphy *wiphy, int ret, struct mesh_config *conf), 1032 TP_ARGS(wiphy, ret, conf), 1033 TP_STRUCT__entry( 1034 WIPHY_ENTRY 1035 MESH_CFG_ENTRY 1036 __field(int, ret) 1037 ), 1038 TP_fast_assign( 1039 WIPHY_ASSIGN; 1040 MESH_CFG_ASSIGN; 1041 __entry->ret = ret; 1042 ), 1043 TP_printk(WIPHY_PR_FMT ", returned: %d", 1044 WIPHY_PR_ARG, __entry->ret) 1045 ); 1046 1047 TRACE_EVENT(rdev_update_mesh_config, 1048 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u32 mask, 1049 const struct mesh_config *conf), 1050 TP_ARGS(wiphy, netdev, mask, conf), 1051 TP_STRUCT__entry( 1052 WIPHY_ENTRY 1053 NETDEV_ENTRY 1054 MESH_CFG_ENTRY 1055 __field(u32, mask) 1056 ), 1057 TP_fast_assign( 1058 WIPHY_ASSIGN; 1059 NETDEV_ASSIGN; 1060 MESH_CFG_ASSIGN; 1061 __entry->mask = mask; 1062 ), 1063 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", mask: %u", 1064 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->mask) 1065 ); 1066 1067 TRACE_EVENT(rdev_join_mesh, 1068 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1069 const struct mesh_config *conf, 1070 const struct mesh_setup *setup), 1071 TP_ARGS(wiphy, netdev, conf, setup), 1072 TP_STRUCT__entry( 1073 WIPHY_ENTRY 1074 NETDEV_ENTRY 1075 MESH_CFG_ENTRY 1076 ), 1077 TP_fast_assign( 1078 WIPHY_ASSIGN; 1079 NETDEV_ASSIGN; 1080 MESH_CFG_ASSIGN; 1081 ), 1082 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT, 1083 WIPHY_PR_ARG, NETDEV_PR_ARG) 1084 ); 1085 1086 TRACE_EVENT(rdev_change_bss, 1087 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1088 struct bss_parameters *params), 1089 TP_ARGS(wiphy, netdev, params), 1090 TP_STRUCT__entry( 1091 WIPHY_ENTRY 1092 NETDEV_ENTRY 1093 __field(int, use_cts_prot) 1094 __field(int, use_short_preamble) 1095 __field(int, use_short_slot_time) 1096 __field(int, ap_isolate) 1097 __field(int, ht_opmode) 1098 ), 1099 TP_fast_assign( 1100 WIPHY_ASSIGN; 1101 NETDEV_ASSIGN; 1102 __entry->use_cts_prot = params->use_cts_prot; 1103 __entry->use_short_preamble = params->use_short_preamble; 1104 __entry->use_short_slot_time = params->use_short_slot_time; 1105 __entry->ap_isolate = params->ap_isolate; 1106 __entry->ht_opmode = params->ht_opmode; 1107 ), 1108 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", use cts prot: %d, " 1109 "use short preamble: %d, use short slot time: %d, " 1110 "ap isolate: %d, ht opmode: %d", 1111 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->use_cts_prot, 1112 __entry->use_short_preamble, __entry->use_short_slot_time, 1113 __entry->ap_isolate, __entry->ht_opmode) 1114 ); 1115 1116 TRACE_EVENT(rdev_set_txq_params, 1117 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1118 struct ieee80211_txq_params *params), 1119 TP_ARGS(wiphy, netdev, params), 1120 TP_STRUCT__entry( 1121 WIPHY_ENTRY 1122 NETDEV_ENTRY 1123 __field(enum nl80211_ac, ac) 1124 __field(u16, txop) 1125 __field(u16, cwmin) 1126 __field(u16, cwmax) 1127 __field(u8, aifs) 1128 ), 1129 TP_fast_assign( 1130 WIPHY_ASSIGN; 1131 NETDEV_ASSIGN; 1132 __entry->ac = params->ac; 1133 __entry->txop = params->txop; 1134 __entry->cwmin = params->cwmin; 1135 __entry->cwmax = params->cwmax; 1136 __entry->aifs = params->aifs; 1137 ), 1138 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", ac: %d, txop: %u, cwmin: %u, cwmax: %u, aifs: %u", 1139 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->ac, __entry->txop, 1140 __entry->cwmin, __entry->cwmax, __entry->aifs) 1141 ); 1142 1143 TRACE_EVENT(rdev_libertas_set_mesh_channel, 1144 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1145 struct ieee80211_channel *chan), 1146 TP_ARGS(wiphy, netdev, chan), 1147 TP_STRUCT__entry( 1148 WIPHY_ENTRY 1149 NETDEV_ENTRY 1150 CHAN_ENTRY 1151 ), 1152 TP_fast_assign( 1153 WIPHY_ASSIGN; 1154 NETDEV_ASSIGN; 1155 CHAN_ASSIGN(chan); 1156 ), 1157 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " CHAN_PR_FMT, WIPHY_PR_ARG, 1158 NETDEV_PR_ARG, CHAN_PR_ARG) 1159 ); 1160 1161 TRACE_EVENT(rdev_set_monitor_channel, 1162 TP_PROTO(struct wiphy *wiphy, 1163 struct cfg80211_chan_def *chandef), 1164 TP_ARGS(wiphy, chandef), 1165 TP_STRUCT__entry( 1166 WIPHY_ENTRY 1167 CHAN_DEF_ENTRY 1168 ), 1169 TP_fast_assign( 1170 WIPHY_ASSIGN; 1171 CHAN_DEF_ASSIGN(chandef); 1172 ), 1173 TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT, 1174 WIPHY_PR_ARG, CHAN_DEF_PR_ARG) 1175 ); 1176 1177 TRACE_EVENT(rdev_auth, 1178 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1179 struct cfg80211_auth_request *req), 1180 TP_ARGS(wiphy, netdev, req), 1181 TP_STRUCT__entry( 1182 WIPHY_ENTRY 1183 NETDEV_ENTRY 1184 MAC_ENTRY(bssid) 1185 __field(enum nl80211_auth_type, auth_type) 1186 ), 1187 TP_fast_assign( 1188 WIPHY_ASSIGN; 1189 NETDEV_ASSIGN; 1190 if (req->bss) 1191 MAC_ASSIGN(bssid, req->bss->bssid); 1192 else 1193 eth_zero_addr(__entry->bssid); 1194 __entry->auth_type = req->auth_type; 1195 ), 1196 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", auth type: %d, bssid: " MAC_PR_FMT, 1197 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->auth_type, 1198 MAC_PR_ARG(bssid)) 1199 ); 1200 1201 TRACE_EVENT(rdev_assoc, 1202 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1203 struct cfg80211_assoc_request *req), 1204 TP_ARGS(wiphy, netdev, req), 1205 TP_STRUCT__entry( 1206 WIPHY_ENTRY 1207 NETDEV_ENTRY 1208 MAC_ENTRY(bssid) 1209 MAC_ENTRY(prev_bssid) 1210 __field(bool, use_mfp) 1211 __field(u32, flags) 1212 ), 1213 TP_fast_assign( 1214 WIPHY_ASSIGN; 1215 NETDEV_ASSIGN; 1216 if (req->bss) 1217 MAC_ASSIGN(bssid, req->bss->bssid); 1218 else 1219 eth_zero_addr(__entry->bssid); 1220 MAC_ASSIGN(prev_bssid, req->prev_bssid); 1221 __entry->use_mfp = req->use_mfp; 1222 __entry->flags = req->flags; 1223 ), 1224 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT 1225 ", previous bssid: " MAC_PR_FMT ", use mfp: %s, flags: %u", 1226 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), 1227 MAC_PR_ARG(prev_bssid), BOOL_TO_STR(__entry->use_mfp), 1228 __entry->flags) 1229 ); 1230 1231 TRACE_EVENT(rdev_deauth, 1232 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1233 struct cfg80211_deauth_request *req), 1234 TP_ARGS(wiphy, netdev, req), 1235 TP_STRUCT__entry( 1236 WIPHY_ENTRY 1237 NETDEV_ENTRY 1238 MAC_ENTRY(bssid) 1239 __field(u16, reason_code) 1240 ), 1241 TP_fast_assign( 1242 WIPHY_ASSIGN; 1243 NETDEV_ASSIGN; 1244 MAC_ASSIGN(bssid, req->bssid); 1245 __entry->reason_code = req->reason_code; 1246 ), 1247 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT ", reason: %u", 1248 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), 1249 __entry->reason_code) 1250 ); 1251 1252 TRACE_EVENT(rdev_disassoc, 1253 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1254 struct cfg80211_disassoc_request *req), 1255 TP_ARGS(wiphy, netdev, req), 1256 TP_STRUCT__entry( 1257 WIPHY_ENTRY 1258 NETDEV_ENTRY 1259 MAC_ENTRY(bssid) 1260 __field(u16, reason_code) 1261 __field(bool, local_state_change) 1262 ), 1263 TP_fast_assign( 1264 WIPHY_ASSIGN; 1265 NETDEV_ASSIGN; 1266 if (req->bss) 1267 MAC_ASSIGN(bssid, req->bss->bssid); 1268 else 1269 eth_zero_addr(__entry->bssid); 1270 __entry->reason_code = req->reason_code; 1271 __entry->local_state_change = req->local_state_change; 1272 ), 1273 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT 1274 ", reason: %u, local state change: %s", 1275 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), 1276 __entry->reason_code, 1277 BOOL_TO_STR(__entry->local_state_change)) 1278 ); 1279 1280 TRACE_EVENT(rdev_mgmt_tx_cancel_wait, 1281 TP_PROTO(struct wiphy *wiphy, 1282 struct wireless_dev *wdev, u64 cookie), 1283 TP_ARGS(wiphy, wdev, cookie), 1284 TP_STRUCT__entry( 1285 WIPHY_ENTRY 1286 WDEV_ENTRY 1287 __field(u64, cookie) 1288 ), 1289 TP_fast_assign( 1290 WIPHY_ASSIGN; 1291 WDEV_ASSIGN; 1292 __entry->cookie = cookie; 1293 ), 1294 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie: %llu ", 1295 WIPHY_PR_ARG, WDEV_PR_ARG, __entry->cookie) 1296 ); 1297 1298 TRACE_EVENT(rdev_set_power_mgmt, 1299 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1300 bool enabled, int timeout), 1301 TP_ARGS(wiphy, netdev, enabled, timeout), 1302 TP_STRUCT__entry( 1303 WIPHY_ENTRY 1304 NETDEV_ENTRY 1305 __field(bool, enabled) 1306 __field(int, timeout) 1307 ), 1308 TP_fast_assign( 1309 WIPHY_ASSIGN; 1310 NETDEV_ASSIGN; 1311 __entry->enabled = enabled; 1312 __entry->timeout = timeout; 1313 ), 1314 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", %senabled, timeout: %d ", 1315 WIPHY_PR_ARG, NETDEV_PR_ARG, 1316 __entry->enabled ? "" : "not ", __entry->timeout) 1317 ); 1318 1319 TRACE_EVENT(rdev_connect, 1320 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1321 struct cfg80211_connect_params *sme), 1322 TP_ARGS(wiphy, netdev, sme), 1323 TP_STRUCT__entry( 1324 WIPHY_ENTRY 1325 NETDEV_ENTRY 1326 MAC_ENTRY(bssid) 1327 __array(char, ssid, IEEE80211_MAX_SSID_LEN + 1) 1328 __field(enum nl80211_auth_type, auth_type) 1329 __field(bool, privacy) 1330 __field(u32, wpa_versions) 1331 __field(u32, flags) 1332 MAC_ENTRY(prev_bssid) 1333 ), 1334 TP_fast_assign( 1335 WIPHY_ASSIGN; 1336 NETDEV_ASSIGN; 1337 MAC_ASSIGN(bssid, sme->bssid); 1338 memset(__entry->ssid, 0, IEEE80211_MAX_SSID_LEN + 1); 1339 memcpy(__entry->ssid, sme->ssid, sme->ssid_len); 1340 __entry->auth_type = sme->auth_type; 1341 __entry->privacy = sme->privacy; 1342 __entry->wpa_versions = sme->crypto.wpa_versions; 1343 __entry->flags = sme->flags; 1344 MAC_ASSIGN(prev_bssid, sme->prev_bssid); 1345 ), 1346 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT 1347 ", ssid: %s, auth type: %d, privacy: %s, wpa versions: %u, " 1348 "flags: %u, previous bssid: " MAC_PR_FMT, 1349 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), __entry->ssid, 1350 __entry->auth_type, BOOL_TO_STR(__entry->privacy), 1351 __entry->wpa_versions, __entry->flags, MAC_PR_ARG(prev_bssid)) 1352 ); 1353 1354 TRACE_EVENT(rdev_update_connect_params, 1355 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1356 struct cfg80211_connect_params *sme, u32 changed), 1357 TP_ARGS(wiphy, netdev, sme, changed), 1358 TP_STRUCT__entry( 1359 WIPHY_ENTRY 1360 NETDEV_ENTRY 1361 __field(u32, changed) 1362 ), 1363 TP_fast_assign( 1364 WIPHY_ASSIGN; 1365 NETDEV_ASSIGN; 1366 __entry->changed = changed; 1367 ), 1368 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", parameters changed: %u", 1369 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->changed) 1370 ); 1371 1372 TRACE_EVENT(rdev_set_cqm_rssi_config, 1373 TP_PROTO(struct wiphy *wiphy, 1374 struct net_device *netdev, s32 rssi_thold, 1375 u32 rssi_hyst), 1376 TP_ARGS(wiphy, netdev, rssi_thold, rssi_hyst), 1377 TP_STRUCT__entry( 1378 WIPHY_ENTRY 1379 NETDEV_ENTRY 1380 __field(s32, rssi_thold) 1381 __field(u32, rssi_hyst) 1382 ), 1383 TP_fast_assign( 1384 WIPHY_ASSIGN; 1385 NETDEV_ASSIGN; 1386 __entry->rssi_thold = rssi_thold; 1387 __entry->rssi_hyst = rssi_hyst; 1388 ), 1389 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT 1390 ", rssi_thold: %d, rssi_hyst: %u ", 1391 WIPHY_PR_ARG, NETDEV_PR_ARG, 1392 __entry->rssi_thold, __entry->rssi_hyst) 1393 ); 1394 1395 TRACE_EVENT(rdev_set_cqm_rssi_range_config, 1396 TP_PROTO(struct wiphy *wiphy, 1397 struct net_device *netdev, s32 low, s32 high), 1398 TP_ARGS(wiphy, netdev, low, high), 1399 TP_STRUCT__entry( 1400 WIPHY_ENTRY 1401 NETDEV_ENTRY 1402 __field(s32, rssi_low) 1403 __field(s32, rssi_high) 1404 ), 1405 TP_fast_assign( 1406 WIPHY_ASSIGN; 1407 NETDEV_ASSIGN; 1408 __entry->rssi_low = low; 1409 __entry->rssi_high = high; 1410 ), 1411 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT 1412 ", range: %d - %d ", 1413 WIPHY_PR_ARG, NETDEV_PR_ARG, 1414 __entry->rssi_low, __entry->rssi_high) 1415 ); 1416 1417 TRACE_EVENT(rdev_set_cqm_txe_config, 1418 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u32 rate, 1419 u32 pkts, u32 intvl), 1420 TP_ARGS(wiphy, netdev, rate, pkts, intvl), 1421 TP_STRUCT__entry( 1422 WIPHY_ENTRY 1423 NETDEV_ENTRY 1424 __field(u32, rate) 1425 __field(u32, pkts) 1426 __field(u32, intvl) 1427 ), 1428 TP_fast_assign( 1429 WIPHY_ASSIGN; 1430 NETDEV_ASSIGN; 1431 __entry->rate = rate; 1432 __entry->pkts = pkts; 1433 __entry->intvl = intvl; 1434 ), 1435 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", rate: %u, packets: %u, interval: %u", 1436 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->rate, __entry->pkts, 1437 __entry->intvl) 1438 ); 1439 1440 TRACE_EVENT(rdev_disconnect, 1441 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1442 u16 reason_code), 1443 TP_ARGS(wiphy, netdev, reason_code), 1444 TP_STRUCT__entry( 1445 WIPHY_ENTRY 1446 NETDEV_ENTRY 1447 __field(u16, reason_code) 1448 ), 1449 TP_fast_assign( 1450 WIPHY_ASSIGN; 1451 NETDEV_ASSIGN; 1452 __entry->reason_code = reason_code; 1453 ), 1454 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", reason code: %u", WIPHY_PR_ARG, 1455 NETDEV_PR_ARG, __entry->reason_code) 1456 ); 1457 1458 TRACE_EVENT(rdev_join_ibss, 1459 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1460 struct cfg80211_ibss_params *params), 1461 TP_ARGS(wiphy, netdev, params), 1462 TP_STRUCT__entry( 1463 WIPHY_ENTRY 1464 NETDEV_ENTRY 1465 MAC_ENTRY(bssid) 1466 __array(char, ssid, IEEE80211_MAX_SSID_LEN + 1) 1467 ), 1468 TP_fast_assign( 1469 WIPHY_ASSIGN; 1470 NETDEV_ASSIGN; 1471 MAC_ASSIGN(bssid, params->bssid); 1472 memset(__entry->ssid, 0, IEEE80211_MAX_SSID_LEN + 1); 1473 memcpy(__entry->ssid, params->ssid, params->ssid_len); 1474 ), 1475 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT ", ssid: %s", 1476 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid), __entry->ssid) 1477 ); 1478 1479 TRACE_EVENT(rdev_join_ocb, 1480 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1481 const struct ocb_setup *setup), 1482 TP_ARGS(wiphy, netdev, setup), 1483 TP_STRUCT__entry( 1484 WIPHY_ENTRY 1485 NETDEV_ENTRY 1486 ), 1487 TP_fast_assign( 1488 WIPHY_ASSIGN; 1489 NETDEV_ASSIGN; 1490 ), 1491 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT, 1492 WIPHY_PR_ARG, NETDEV_PR_ARG) 1493 ); 1494 1495 TRACE_EVENT(rdev_set_wiphy_params, 1496 TP_PROTO(struct wiphy *wiphy, u32 changed), 1497 TP_ARGS(wiphy, changed), 1498 TP_STRUCT__entry( 1499 WIPHY_ENTRY 1500 __field(u32, changed) 1501 ), 1502 TP_fast_assign( 1503 WIPHY_ASSIGN; 1504 __entry->changed = changed; 1505 ), 1506 TP_printk(WIPHY_PR_FMT ", changed: %u", 1507 WIPHY_PR_ARG, __entry->changed) 1508 ); 1509 1510 DEFINE_EVENT(wiphy_wdev_evt, rdev_get_tx_power, 1511 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 1512 TP_ARGS(wiphy, wdev) 1513 ); 1514 1515 TRACE_EVENT(rdev_set_tx_power, 1516 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 1517 enum nl80211_tx_power_setting type, int mbm), 1518 TP_ARGS(wiphy, wdev, type, mbm), 1519 TP_STRUCT__entry( 1520 WIPHY_ENTRY 1521 WDEV_ENTRY 1522 __field(enum nl80211_tx_power_setting, type) 1523 __field(int, mbm) 1524 ), 1525 TP_fast_assign( 1526 WIPHY_ASSIGN; 1527 WDEV_ASSIGN; 1528 __entry->type = type; 1529 __entry->mbm = mbm; 1530 ), 1531 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", type: %u, mbm: %d", 1532 WIPHY_PR_ARG, WDEV_PR_ARG,__entry->type, __entry->mbm) 1533 ); 1534 1535 TRACE_EVENT(rdev_return_int_int, 1536 TP_PROTO(struct wiphy *wiphy, int func_ret, int func_fill), 1537 TP_ARGS(wiphy, func_ret, func_fill), 1538 TP_STRUCT__entry( 1539 WIPHY_ENTRY 1540 __field(int, func_ret) 1541 __field(int, func_fill) 1542 ), 1543 TP_fast_assign( 1544 WIPHY_ASSIGN; 1545 __entry->func_ret = func_ret; 1546 __entry->func_fill = func_fill; 1547 ), 1548 TP_printk(WIPHY_PR_FMT ", function returns: %d, function filled: %d", 1549 WIPHY_PR_ARG, __entry->func_ret, __entry->func_fill) 1550 ); 1551 1552 #ifdef CONFIG_NL80211_TESTMODE 1553 TRACE_EVENT(rdev_testmode_cmd, 1554 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 1555 TP_ARGS(wiphy, wdev), 1556 TP_STRUCT__entry( 1557 WIPHY_ENTRY 1558 WDEV_ENTRY 1559 ), 1560 TP_fast_assign( 1561 WIPHY_ASSIGN; 1562 WDEV_ASSIGN; 1563 ), 1564 TP_printk(WIPHY_PR_FMT WDEV_PR_FMT, WIPHY_PR_ARG, WDEV_PR_ARG) 1565 ); 1566 1567 TRACE_EVENT(rdev_testmode_dump, 1568 TP_PROTO(struct wiphy *wiphy), 1569 TP_ARGS(wiphy), 1570 TP_STRUCT__entry( 1571 WIPHY_ENTRY 1572 ), 1573 TP_fast_assign( 1574 WIPHY_ASSIGN; 1575 ), 1576 TP_printk(WIPHY_PR_FMT, WIPHY_PR_ARG) 1577 ); 1578 #endif /* CONFIG_NL80211_TESTMODE */ 1579 1580 TRACE_EVENT(rdev_set_bitrate_mask, 1581 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1582 const u8 *peer, const struct cfg80211_bitrate_mask *mask), 1583 TP_ARGS(wiphy, netdev, peer, mask), 1584 TP_STRUCT__entry( 1585 WIPHY_ENTRY 1586 NETDEV_ENTRY 1587 MAC_ENTRY(peer) 1588 ), 1589 TP_fast_assign( 1590 WIPHY_ASSIGN; 1591 NETDEV_ASSIGN; 1592 MAC_ASSIGN(peer, peer); 1593 ), 1594 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT, 1595 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer)) 1596 ); 1597 1598 TRACE_EVENT(rdev_update_mgmt_frame_registrations, 1599 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 1600 struct mgmt_frame_regs *upd), 1601 TP_ARGS(wiphy, wdev, upd), 1602 TP_STRUCT__entry( 1603 WIPHY_ENTRY 1604 WDEV_ENTRY 1605 __field(u16, global_stypes) 1606 __field(u16, interface_stypes) 1607 ), 1608 TP_fast_assign( 1609 WIPHY_ASSIGN; 1610 WDEV_ASSIGN; 1611 __entry->global_stypes = upd->global_stypes; 1612 __entry->interface_stypes = upd->interface_stypes; 1613 ), 1614 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", global: 0x%.2x, intf: 0x%.2x", 1615 WIPHY_PR_ARG, WDEV_PR_ARG, 1616 __entry->global_stypes, __entry->interface_stypes) 1617 ); 1618 1619 TRACE_EVENT(rdev_return_int_tx_rx, 1620 TP_PROTO(struct wiphy *wiphy, int ret, u32 tx, u32 rx), 1621 TP_ARGS(wiphy, ret, tx, rx), 1622 TP_STRUCT__entry( 1623 WIPHY_ENTRY 1624 __field(int, ret) 1625 __field(u32, tx) 1626 __field(u32, rx) 1627 ), 1628 TP_fast_assign( 1629 WIPHY_ASSIGN; 1630 __entry->ret = ret; 1631 __entry->tx = tx; 1632 __entry->rx = rx; 1633 ), 1634 TP_printk(WIPHY_PR_FMT ", returned %d, tx: %u, rx: %u", 1635 WIPHY_PR_ARG, __entry->ret, __entry->tx, __entry->rx) 1636 ); 1637 1638 TRACE_EVENT(rdev_return_void_tx_rx, 1639 TP_PROTO(struct wiphy *wiphy, u32 tx, u32 tx_max, 1640 u32 rx, u32 rx_max), 1641 TP_ARGS(wiphy, tx, tx_max, rx, rx_max), 1642 TP_STRUCT__entry( 1643 WIPHY_ENTRY 1644 __field(u32, tx) 1645 __field(u32, tx_max) 1646 __field(u32, rx) 1647 __field(u32, rx_max) 1648 ), 1649 TP_fast_assign( 1650 WIPHY_ASSIGN; 1651 __entry->tx = tx; 1652 __entry->tx_max = tx_max; 1653 __entry->rx = rx; 1654 __entry->rx_max = rx_max; 1655 ), 1656 TP_printk(WIPHY_PR_FMT ", tx: %u, tx_max: %u, rx: %u, rx_max: %u ", 1657 WIPHY_PR_ARG, __entry->tx, __entry->tx_max, __entry->rx, 1658 __entry->rx_max) 1659 ); 1660 1661 DECLARE_EVENT_CLASS(tx_rx_evt, 1662 TP_PROTO(struct wiphy *wiphy, u32 tx, u32 rx), 1663 TP_ARGS(wiphy, rx, tx), 1664 TP_STRUCT__entry( 1665 WIPHY_ENTRY 1666 __field(u32, tx) 1667 __field(u32, rx) 1668 ), 1669 TP_fast_assign( 1670 WIPHY_ASSIGN; 1671 __entry->tx = tx; 1672 __entry->rx = rx; 1673 ), 1674 TP_printk(WIPHY_PR_FMT ", tx: %u, rx: %u ", 1675 WIPHY_PR_ARG, __entry->tx, __entry->rx) 1676 ); 1677 1678 DEFINE_EVENT(tx_rx_evt, rdev_set_antenna, 1679 TP_PROTO(struct wiphy *wiphy, u32 tx, u32 rx), 1680 TP_ARGS(wiphy, rx, tx) 1681 ); 1682 1683 DECLARE_EVENT_CLASS(wiphy_netdev_id_evt, 1684 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u64 id), 1685 TP_ARGS(wiphy, netdev, id), 1686 TP_STRUCT__entry( 1687 WIPHY_ENTRY 1688 NETDEV_ENTRY 1689 __field(u64, id) 1690 ), 1691 TP_fast_assign( 1692 WIPHY_ASSIGN; 1693 NETDEV_ASSIGN; 1694 __entry->id = id; 1695 ), 1696 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", id: %llu", 1697 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->id) 1698 ); 1699 1700 DEFINE_EVENT(wiphy_netdev_id_evt, rdev_sched_scan_start, 1701 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u64 id), 1702 TP_ARGS(wiphy, netdev, id) 1703 ); 1704 1705 DEFINE_EVENT(wiphy_netdev_id_evt, rdev_sched_scan_stop, 1706 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, u64 id), 1707 TP_ARGS(wiphy, netdev, id) 1708 ); 1709 1710 TRACE_EVENT(rdev_tdls_mgmt, 1711 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1712 u8 *peer, u8 action_code, u8 dialog_token, 1713 u16 status_code, u32 peer_capability, 1714 bool initiator, const u8 *buf, size_t len), 1715 TP_ARGS(wiphy, netdev, peer, action_code, dialog_token, status_code, 1716 peer_capability, initiator, buf, len), 1717 TP_STRUCT__entry( 1718 WIPHY_ENTRY 1719 NETDEV_ENTRY 1720 MAC_ENTRY(peer) 1721 __field(u8, action_code) 1722 __field(u8, dialog_token) 1723 __field(u16, status_code) 1724 __field(u32, peer_capability) 1725 __field(bool, initiator) 1726 __dynamic_array(u8, buf, len) 1727 ), 1728 TP_fast_assign( 1729 WIPHY_ASSIGN; 1730 NETDEV_ASSIGN; 1731 MAC_ASSIGN(peer, peer); 1732 __entry->action_code = action_code; 1733 __entry->dialog_token = dialog_token; 1734 __entry->status_code = status_code; 1735 __entry->peer_capability = peer_capability; 1736 __entry->initiator = initiator; 1737 memcpy(__get_dynamic_array(buf), buf, len); 1738 ), 1739 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", action_code: %u, " 1740 "dialog_token: %u, status_code: %u, peer_capability: %u " 1741 "initiator: %s buf: %#.2x ", 1742 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), 1743 __entry->action_code, __entry->dialog_token, 1744 __entry->status_code, __entry->peer_capability, 1745 BOOL_TO_STR(__entry->initiator), 1746 ((u8 *)__get_dynamic_array(buf))[0]) 1747 ); 1748 1749 TRACE_EVENT(rdev_dump_survey, 1750 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, int _idx), 1751 TP_ARGS(wiphy, netdev, _idx), 1752 TP_STRUCT__entry( 1753 WIPHY_ENTRY 1754 NETDEV_ENTRY 1755 __field(int, idx) 1756 ), 1757 TP_fast_assign( 1758 WIPHY_ASSIGN; 1759 NETDEV_ASSIGN; 1760 __entry->idx = _idx; 1761 ), 1762 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", index: %d", 1763 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->idx) 1764 ); 1765 1766 TRACE_EVENT(rdev_return_int_survey_info, 1767 TP_PROTO(struct wiphy *wiphy, int ret, struct survey_info *info), 1768 TP_ARGS(wiphy, ret, info), 1769 TP_STRUCT__entry( 1770 WIPHY_ENTRY 1771 CHAN_ENTRY 1772 __field(int, ret) 1773 __field(u64, time) 1774 __field(u64, time_busy) 1775 __field(u64, time_ext_busy) 1776 __field(u64, time_rx) 1777 __field(u64, time_tx) 1778 __field(u64, time_scan) 1779 __field(u32, filled) 1780 __field(s8, noise) 1781 ), 1782 TP_fast_assign( 1783 WIPHY_ASSIGN; 1784 CHAN_ASSIGN(info->channel); 1785 __entry->ret = ret; 1786 __entry->time = info->time; 1787 __entry->time_busy = info->time_busy; 1788 __entry->time_ext_busy = info->time_ext_busy; 1789 __entry->time_rx = info->time_rx; 1790 __entry->time_tx = info->time_tx; 1791 __entry->time_scan = info->time_scan; 1792 __entry->filled = info->filled; 1793 __entry->noise = info->noise; 1794 ), 1795 TP_printk(WIPHY_PR_FMT ", returned: %d, " CHAN_PR_FMT 1796 ", channel time: %llu, channel time busy: %llu, " 1797 "channel time extension busy: %llu, channel time rx: %llu, " 1798 "channel time tx: %llu, scan time: %llu, filled: %u, noise: %d", 1799 WIPHY_PR_ARG, __entry->ret, CHAN_PR_ARG, 1800 __entry->time, __entry->time_busy, 1801 __entry->time_ext_busy, __entry->time_rx, 1802 __entry->time_tx, __entry->time_scan, 1803 __entry->filled, __entry->noise) 1804 ); 1805 1806 TRACE_EVENT(rdev_tdls_oper, 1807 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1808 u8 *peer, enum nl80211_tdls_operation oper), 1809 TP_ARGS(wiphy, netdev, peer, oper), 1810 TP_STRUCT__entry( 1811 WIPHY_ENTRY 1812 NETDEV_ENTRY 1813 MAC_ENTRY(peer) 1814 __field(enum nl80211_tdls_operation, oper) 1815 ), 1816 TP_fast_assign( 1817 WIPHY_ASSIGN; 1818 NETDEV_ASSIGN; 1819 MAC_ASSIGN(peer, peer); 1820 __entry->oper = oper; 1821 ), 1822 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", oper: %d", 1823 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->oper) 1824 ); 1825 1826 DECLARE_EVENT_CLASS(rdev_pmksa, 1827 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1828 struct cfg80211_pmksa *pmksa), 1829 TP_ARGS(wiphy, netdev, pmksa), 1830 TP_STRUCT__entry( 1831 WIPHY_ENTRY 1832 NETDEV_ENTRY 1833 MAC_ENTRY(bssid) 1834 ), 1835 TP_fast_assign( 1836 WIPHY_ASSIGN; 1837 NETDEV_ASSIGN; 1838 MAC_ASSIGN(bssid, pmksa->bssid); 1839 ), 1840 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT, 1841 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(bssid)) 1842 ); 1843 1844 TRACE_EVENT(rdev_probe_client, 1845 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1846 const u8 *peer), 1847 TP_ARGS(wiphy, netdev, peer), 1848 TP_STRUCT__entry( 1849 WIPHY_ENTRY 1850 NETDEV_ENTRY 1851 MAC_ENTRY(peer) 1852 ), 1853 TP_fast_assign( 1854 WIPHY_ASSIGN; 1855 NETDEV_ASSIGN; 1856 MAC_ASSIGN(peer, peer); 1857 ), 1858 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT, 1859 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer)) 1860 ); 1861 1862 DEFINE_EVENT(rdev_pmksa, rdev_set_pmksa, 1863 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1864 struct cfg80211_pmksa *pmksa), 1865 TP_ARGS(wiphy, netdev, pmksa) 1866 ); 1867 1868 DEFINE_EVENT(rdev_pmksa, rdev_del_pmksa, 1869 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1870 struct cfg80211_pmksa *pmksa), 1871 TP_ARGS(wiphy, netdev, pmksa) 1872 ); 1873 1874 TRACE_EVENT(rdev_remain_on_channel, 1875 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 1876 struct ieee80211_channel *chan, 1877 unsigned int duration), 1878 TP_ARGS(wiphy, wdev, chan, duration), 1879 TP_STRUCT__entry( 1880 WIPHY_ENTRY 1881 WDEV_ENTRY 1882 CHAN_ENTRY 1883 __field(unsigned int, duration) 1884 ), 1885 TP_fast_assign( 1886 WIPHY_ASSIGN; 1887 WDEV_ASSIGN; 1888 CHAN_ASSIGN(chan); 1889 __entry->duration = duration; 1890 ), 1891 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", " CHAN_PR_FMT ", duration: %u", 1892 WIPHY_PR_ARG, WDEV_PR_ARG, CHAN_PR_ARG, __entry->duration) 1893 ); 1894 1895 TRACE_EVENT(rdev_return_int_cookie, 1896 TP_PROTO(struct wiphy *wiphy, int ret, u64 cookie), 1897 TP_ARGS(wiphy, ret, cookie), 1898 TP_STRUCT__entry( 1899 WIPHY_ENTRY 1900 __field(int, ret) 1901 __field(u64, cookie) 1902 ), 1903 TP_fast_assign( 1904 WIPHY_ASSIGN; 1905 __entry->ret = ret; 1906 __entry->cookie = cookie; 1907 ), 1908 TP_printk(WIPHY_PR_FMT ", returned %d, cookie: %llu", 1909 WIPHY_PR_ARG, __entry->ret, __entry->cookie) 1910 ); 1911 1912 TRACE_EVENT(rdev_cancel_remain_on_channel, 1913 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie), 1914 TP_ARGS(wiphy, wdev, cookie), 1915 TP_STRUCT__entry( 1916 WIPHY_ENTRY 1917 WDEV_ENTRY 1918 __field(u64, cookie) 1919 ), 1920 TP_fast_assign( 1921 WIPHY_ASSIGN; 1922 WDEV_ASSIGN; 1923 __entry->cookie = cookie; 1924 ), 1925 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie: %llu", 1926 WIPHY_PR_ARG, WDEV_PR_ARG, __entry->cookie) 1927 ); 1928 1929 TRACE_EVENT(rdev_mgmt_tx, 1930 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 1931 struct cfg80211_mgmt_tx_params *params), 1932 TP_ARGS(wiphy, wdev, params), 1933 TP_STRUCT__entry( 1934 WIPHY_ENTRY 1935 WDEV_ENTRY 1936 CHAN_ENTRY 1937 __field(bool, offchan) 1938 __field(unsigned int, wait) 1939 __field(bool, no_cck) 1940 __field(bool, dont_wait_for_ack) 1941 ), 1942 TP_fast_assign( 1943 WIPHY_ASSIGN; 1944 WDEV_ASSIGN; 1945 CHAN_ASSIGN(params->chan); 1946 __entry->offchan = params->offchan; 1947 __entry->wait = params->wait; 1948 __entry->no_cck = params->no_cck; 1949 __entry->dont_wait_for_ack = params->dont_wait_for_ack; 1950 ), 1951 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", " CHAN_PR_FMT ", offchan: %s," 1952 " wait: %u, no cck: %s, dont wait for ack: %s", 1953 WIPHY_PR_ARG, WDEV_PR_ARG, CHAN_PR_ARG, 1954 BOOL_TO_STR(__entry->offchan), __entry->wait, 1955 BOOL_TO_STR(__entry->no_cck), 1956 BOOL_TO_STR(__entry->dont_wait_for_ack)) 1957 ); 1958 1959 TRACE_EVENT(rdev_tx_control_port, 1960 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1961 const u8 *buf, size_t len, const u8 *dest, __be16 proto, 1962 bool unencrypted), 1963 TP_ARGS(wiphy, netdev, buf, len, dest, proto, unencrypted), 1964 TP_STRUCT__entry( 1965 WIPHY_ENTRY 1966 NETDEV_ENTRY 1967 MAC_ENTRY(dest) 1968 __field(__be16, proto) 1969 __field(bool, unencrypted) 1970 ), 1971 TP_fast_assign( 1972 WIPHY_ASSIGN; 1973 NETDEV_ASSIGN; 1974 MAC_ASSIGN(dest, dest); 1975 __entry->proto = proto; 1976 __entry->unencrypted = unencrypted; 1977 ), 1978 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT "," 1979 " proto: 0x%x, unencrypted: %s", 1980 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(dest), 1981 be16_to_cpu(__entry->proto), 1982 BOOL_TO_STR(__entry->unencrypted)) 1983 ); 1984 1985 TRACE_EVENT(rdev_set_noack_map, 1986 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 1987 u16 noack_map), 1988 TP_ARGS(wiphy, netdev, noack_map), 1989 TP_STRUCT__entry( 1990 WIPHY_ENTRY 1991 NETDEV_ENTRY 1992 __field(u16, noack_map) 1993 ), 1994 TP_fast_assign( 1995 WIPHY_ASSIGN; 1996 NETDEV_ASSIGN; 1997 __entry->noack_map = noack_map; 1998 ), 1999 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", noack_map: %u", 2000 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->noack_map) 2001 ); 2002 2003 DEFINE_EVENT(wiphy_wdev_evt, rdev_get_channel, 2004 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 2005 TP_ARGS(wiphy, wdev) 2006 ); 2007 2008 TRACE_EVENT(rdev_return_chandef, 2009 TP_PROTO(struct wiphy *wiphy, int ret, 2010 struct cfg80211_chan_def *chandef), 2011 TP_ARGS(wiphy, ret, chandef), 2012 TP_STRUCT__entry( 2013 WIPHY_ENTRY 2014 __field(int, ret) 2015 CHAN_DEF_ENTRY 2016 ), 2017 TP_fast_assign( 2018 WIPHY_ASSIGN; 2019 if (ret == 0) 2020 CHAN_DEF_ASSIGN(chandef); 2021 else 2022 CHAN_DEF_ASSIGN((struct cfg80211_chan_def *)NULL); 2023 __entry->ret = ret; 2024 ), 2025 TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT ", ret: %d", 2026 WIPHY_PR_ARG, CHAN_DEF_PR_ARG, __entry->ret) 2027 ); 2028 2029 DEFINE_EVENT(wiphy_wdev_evt, rdev_start_p2p_device, 2030 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 2031 TP_ARGS(wiphy, wdev) 2032 ); 2033 2034 DEFINE_EVENT(wiphy_wdev_evt, rdev_stop_p2p_device, 2035 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 2036 TP_ARGS(wiphy, wdev) 2037 ); 2038 2039 TRACE_EVENT(rdev_start_nan, 2040 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 2041 struct cfg80211_nan_conf *conf), 2042 TP_ARGS(wiphy, wdev, conf), 2043 TP_STRUCT__entry( 2044 WIPHY_ENTRY 2045 WDEV_ENTRY 2046 __field(u8, master_pref) 2047 __field(u8, bands) 2048 ), 2049 TP_fast_assign( 2050 WIPHY_ASSIGN; 2051 WDEV_ASSIGN; 2052 __entry->master_pref = conf->master_pref; 2053 __entry->bands = conf->bands; 2054 ), 2055 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT 2056 ", master preference: %u, bands: 0x%0x", 2057 WIPHY_PR_ARG, WDEV_PR_ARG, __entry->master_pref, 2058 __entry->bands) 2059 ); 2060 2061 TRACE_EVENT(rdev_nan_change_conf, 2062 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 2063 struct cfg80211_nan_conf *conf, u32 changes), 2064 TP_ARGS(wiphy, wdev, conf, changes), 2065 TP_STRUCT__entry( 2066 WIPHY_ENTRY 2067 WDEV_ENTRY 2068 __field(u8, master_pref) 2069 __field(u8, bands) 2070 __field(u32, changes) 2071 ), 2072 TP_fast_assign( 2073 WIPHY_ASSIGN; 2074 WDEV_ASSIGN; 2075 __entry->master_pref = conf->master_pref; 2076 __entry->bands = conf->bands; 2077 __entry->changes = changes; 2078 ), 2079 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT 2080 ", master preference: %u, bands: 0x%0x, changes: %x", 2081 WIPHY_PR_ARG, WDEV_PR_ARG, __entry->master_pref, 2082 __entry->bands, __entry->changes) 2083 ); 2084 2085 DEFINE_EVENT(wiphy_wdev_evt, rdev_stop_nan, 2086 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 2087 TP_ARGS(wiphy, wdev) 2088 ); 2089 2090 TRACE_EVENT(rdev_add_nan_func, 2091 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 2092 const struct cfg80211_nan_func *func), 2093 TP_ARGS(wiphy, wdev, func), 2094 TP_STRUCT__entry( 2095 WIPHY_ENTRY 2096 WDEV_ENTRY 2097 __field(u8, func_type) 2098 __field(u64, cookie) 2099 ), 2100 TP_fast_assign( 2101 WIPHY_ASSIGN; 2102 WDEV_ASSIGN; 2103 __entry->func_type = func->type; 2104 __entry->cookie = func->cookie 2105 ), 2106 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", type=%u, cookie=%llu", 2107 WIPHY_PR_ARG, WDEV_PR_ARG, __entry->func_type, 2108 __entry->cookie) 2109 ); 2110 2111 TRACE_EVENT(rdev_del_nan_func, 2112 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 2113 u64 cookie), 2114 TP_ARGS(wiphy, wdev, cookie), 2115 TP_STRUCT__entry( 2116 WIPHY_ENTRY 2117 WDEV_ENTRY 2118 __field(u64, cookie) 2119 ), 2120 TP_fast_assign( 2121 WIPHY_ASSIGN; 2122 WDEV_ASSIGN; 2123 __entry->cookie = cookie; 2124 ), 2125 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie=%llu", 2126 WIPHY_PR_ARG, WDEV_PR_ARG, __entry->cookie) 2127 ); 2128 2129 TRACE_EVENT(rdev_set_mac_acl, 2130 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2131 struct cfg80211_acl_data *params), 2132 TP_ARGS(wiphy, netdev, params), 2133 TP_STRUCT__entry( 2134 WIPHY_ENTRY 2135 NETDEV_ENTRY 2136 __field(u32, acl_policy) 2137 ), 2138 TP_fast_assign( 2139 WIPHY_ASSIGN; 2140 NETDEV_ASSIGN; 2141 __entry->acl_policy = params->acl_policy; 2142 ), 2143 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", acl policy: %d", 2144 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->acl_policy) 2145 ); 2146 2147 TRACE_EVENT(rdev_update_ft_ies, 2148 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2149 struct cfg80211_update_ft_ies_params *ftie), 2150 TP_ARGS(wiphy, netdev, ftie), 2151 TP_STRUCT__entry( 2152 WIPHY_ENTRY 2153 NETDEV_ENTRY 2154 __field(u16, md) 2155 __dynamic_array(u8, ie, ftie->ie_len) 2156 ), 2157 TP_fast_assign( 2158 WIPHY_ASSIGN; 2159 NETDEV_ASSIGN; 2160 __entry->md = ftie->md; 2161 memcpy(__get_dynamic_array(ie), ftie->ie, ftie->ie_len); 2162 ), 2163 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", md: 0x%x", 2164 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->md) 2165 ); 2166 2167 TRACE_EVENT(rdev_crit_proto_start, 2168 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 2169 enum nl80211_crit_proto_id protocol, u16 duration), 2170 TP_ARGS(wiphy, wdev, protocol, duration), 2171 TP_STRUCT__entry( 2172 WIPHY_ENTRY 2173 WDEV_ENTRY 2174 __field(u16, proto) 2175 __field(u16, duration) 2176 ), 2177 TP_fast_assign( 2178 WIPHY_ASSIGN; 2179 WDEV_ASSIGN; 2180 __entry->proto = protocol; 2181 __entry->duration = duration; 2182 ), 2183 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", proto=%x, duration=%u", 2184 WIPHY_PR_ARG, WDEV_PR_ARG, __entry->proto, __entry->duration) 2185 ); 2186 2187 TRACE_EVENT(rdev_crit_proto_stop, 2188 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 2189 TP_ARGS(wiphy, wdev), 2190 TP_STRUCT__entry( 2191 WIPHY_ENTRY 2192 WDEV_ENTRY 2193 ), 2194 TP_fast_assign( 2195 WIPHY_ASSIGN; 2196 WDEV_ASSIGN; 2197 ), 2198 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT, 2199 WIPHY_PR_ARG, WDEV_PR_ARG) 2200 ); 2201 2202 TRACE_EVENT(rdev_channel_switch, 2203 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2204 struct cfg80211_csa_settings *params), 2205 TP_ARGS(wiphy, netdev, params), 2206 TP_STRUCT__entry( 2207 WIPHY_ENTRY 2208 NETDEV_ENTRY 2209 CHAN_DEF_ENTRY 2210 __field(bool, radar_required) 2211 __field(bool, block_tx) 2212 __field(u8, count) 2213 __dynamic_array(u16, bcn_ofs, params->n_counter_offsets_beacon) 2214 __dynamic_array(u16, pres_ofs, params->n_counter_offsets_presp) 2215 ), 2216 TP_fast_assign( 2217 WIPHY_ASSIGN; 2218 NETDEV_ASSIGN; 2219 CHAN_DEF_ASSIGN(¶ms->chandef); 2220 __entry->radar_required = params->radar_required; 2221 __entry->block_tx = params->block_tx; 2222 __entry->count = params->count; 2223 memcpy(__get_dynamic_array(bcn_ofs), 2224 params->counter_offsets_beacon, 2225 params->n_counter_offsets_beacon * sizeof(u16)); 2226 2227 /* probe response offsets are optional */ 2228 if (params->n_counter_offsets_presp) 2229 memcpy(__get_dynamic_array(pres_ofs), 2230 params->counter_offsets_presp, 2231 params->n_counter_offsets_presp * sizeof(u16)); 2232 ), 2233 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT 2234 ", block_tx: %d, count: %u, radar_required: %d", 2235 WIPHY_PR_ARG, NETDEV_PR_ARG, CHAN_DEF_PR_ARG, 2236 __entry->block_tx, __entry->count, __entry->radar_required) 2237 ); 2238 2239 TRACE_EVENT(rdev_set_qos_map, 2240 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2241 struct cfg80211_qos_map *qos_map), 2242 TP_ARGS(wiphy, netdev, qos_map), 2243 TP_STRUCT__entry( 2244 WIPHY_ENTRY 2245 NETDEV_ENTRY 2246 QOS_MAP_ENTRY 2247 ), 2248 TP_fast_assign( 2249 WIPHY_ASSIGN; 2250 NETDEV_ASSIGN; 2251 QOS_MAP_ASSIGN(qos_map); 2252 ), 2253 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", num_des: %u", 2254 WIPHY_PR_ARG, NETDEV_PR_ARG, __entry->num_des) 2255 ); 2256 2257 TRACE_EVENT(rdev_set_ap_chanwidth, 2258 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2259 struct cfg80211_chan_def *chandef), 2260 TP_ARGS(wiphy, netdev, chandef), 2261 TP_STRUCT__entry( 2262 WIPHY_ENTRY 2263 NETDEV_ENTRY 2264 CHAN_DEF_ENTRY 2265 ), 2266 TP_fast_assign( 2267 WIPHY_ASSIGN; 2268 NETDEV_ASSIGN; 2269 CHAN_DEF_ASSIGN(chandef); 2270 ), 2271 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT, 2272 WIPHY_PR_ARG, NETDEV_PR_ARG, CHAN_DEF_PR_ARG) 2273 ); 2274 2275 TRACE_EVENT(rdev_add_tx_ts, 2276 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2277 u8 tsid, const u8 *peer, u8 user_prio, u16 admitted_time), 2278 TP_ARGS(wiphy, netdev, tsid, peer, user_prio, admitted_time), 2279 TP_STRUCT__entry( 2280 WIPHY_ENTRY 2281 NETDEV_ENTRY 2282 MAC_ENTRY(peer) 2283 __field(u8, tsid) 2284 __field(u8, user_prio) 2285 __field(u16, admitted_time) 2286 ), 2287 TP_fast_assign( 2288 WIPHY_ASSIGN; 2289 NETDEV_ASSIGN; 2290 MAC_ASSIGN(peer, peer); 2291 __entry->tsid = tsid; 2292 __entry->user_prio = user_prio; 2293 __entry->admitted_time = admitted_time; 2294 ), 2295 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", TSID %d, UP %d, time %d", 2296 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), 2297 __entry->tsid, __entry->user_prio, __entry->admitted_time) 2298 ); 2299 2300 TRACE_EVENT(rdev_del_tx_ts, 2301 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2302 u8 tsid, const u8 *peer), 2303 TP_ARGS(wiphy, netdev, tsid, peer), 2304 TP_STRUCT__entry( 2305 WIPHY_ENTRY 2306 NETDEV_ENTRY 2307 MAC_ENTRY(peer) 2308 __field(u8, tsid) 2309 ), 2310 TP_fast_assign( 2311 WIPHY_ASSIGN; 2312 NETDEV_ASSIGN; 2313 MAC_ASSIGN(peer, peer); 2314 __entry->tsid = tsid; 2315 ), 2316 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT ", TSID %d", 2317 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->tsid) 2318 ); 2319 2320 TRACE_EVENT(rdev_tdls_channel_switch, 2321 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2322 const u8 *addr, u8 oper_class, 2323 struct cfg80211_chan_def *chandef), 2324 TP_ARGS(wiphy, netdev, addr, oper_class, chandef), 2325 TP_STRUCT__entry( 2326 WIPHY_ENTRY 2327 NETDEV_ENTRY 2328 MAC_ENTRY(addr) 2329 __field(u8, oper_class) 2330 CHAN_DEF_ENTRY 2331 ), 2332 TP_fast_assign( 2333 WIPHY_ASSIGN; 2334 NETDEV_ASSIGN; 2335 MAC_ASSIGN(addr, addr); 2336 CHAN_DEF_ASSIGN(chandef); 2337 ), 2338 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT 2339 " oper class %d, " CHAN_DEF_PR_FMT, 2340 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(addr), 2341 __entry->oper_class, CHAN_DEF_PR_ARG) 2342 ); 2343 2344 TRACE_EVENT(rdev_tdls_cancel_channel_switch, 2345 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2346 const u8 *addr), 2347 TP_ARGS(wiphy, netdev, addr), 2348 TP_STRUCT__entry( 2349 WIPHY_ENTRY 2350 NETDEV_ENTRY 2351 MAC_ENTRY(addr) 2352 ), 2353 TP_fast_assign( 2354 WIPHY_ASSIGN; 2355 NETDEV_ASSIGN; 2356 MAC_ASSIGN(addr, addr); 2357 ), 2358 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT, 2359 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(addr)) 2360 ); 2361 2362 TRACE_EVENT(rdev_set_pmk, 2363 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2364 struct cfg80211_pmk_conf *pmk_conf), 2365 2366 TP_ARGS(wiphy, netdev, pmk_conf), 2367 2368 TP_STRUCT__entry( 2369 WIPHY_ENTRY 2370 NETDEV_ENTRY 2371 MAC_ENTRY(aa) 2372 __field(u8, pmk_len) 2373 __field(u8, pmk_r0_name_len) 2374 __dynamic_array(u8, pmk, pmk_conf->pmk_len) 2375 __dynamic_array(u8, pmk_r0_name, WLAN_PMK_NAME_LEN) 2376 ), 2377 2378 TP_fast_assign( 2379 WIPHY_ASSIGN; 2380 NETDEV_ASSIGN; 2381 MAC_ASSIGN(aa, pmk_conf->aa); 2382 __entry->pmk_len = pmk_conf->pmk_len; 2383 __entry->pmk_r0_name_len = 2384 pmk_conf->pmk_r0_name ? WLAN_PMK_NAME_LEN : 0; 2385 memcpy(__get_dynamic_array(pmk), pmk_conf->pmk, 2386 pmk_conf->pmk_len); 2387 memcpy(__get_dynamic_array(pmk_r0_name), pmk_conf->pmk_r0_name, 2388 pmk_conf->pmk_r0_name ? WLAN_PMK_NAME_LEN : 0); 2389 ), 2390 2391 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT 2392 "pmk_len=%u, pmk: %s pmk_r0_name: %s", WIPHY_PR_ARG, 2393 NETDEV_PR_ARG, MAC_PR_ARG(aa), __entry->pmk_len, 2394 __print_array(__get_dynamic_array(pmk), 2395 __get_dynamic_array_len(pmk), 1), 2396 __entry->pmk_r0_name_len ? 2397 __print_array(__get_dynamic_array(pmk_r0_name), 2398 __get_dynamic_array_len(pmk_r0_name), 1) : "") 2399 ); 2400 2401 TRACE_EVENT(rdev_del_pmk, 2402 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *aa), 2403 2404 TP_ARGS(wiphy, netdev, aa), 2405 2406 TP_STRUCT__entry( 2407 WIPHY_ENTRY 2408 NETDEV_ENTRY 2409 MAC_ENTRY(aa) 2410 ), 2411 2412 TP_fast_assign( 2413 WIPHY_ASSIGN; 2414 NETDEV_ASSIGN; 2415 MAC_ASSIGN(aa, aa); 2416 ), 2417 2418 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT, 2419 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(aa)) 2420 ); 2421 2422 TRACE_EVENT(rdev_external_auth, 2423 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2424 struct cfg80211_external_auth_params *params), 2425 TP_ARGS(wiphy, netdev, params), 2426 TP_STRUCT__entry(WIPHY_ENTRY 2427 NETDEV_ENTRY 2428 MAC_ENTRY(bssid) 2429 __array(u8, ssid, IEEE80211_MAX_SSID_LEN + 1) 2430 __field(u16, status) 2431 ), 2432 TP_fast_assign(WIPHY_ASSIGN; 2433 NETDEV_ASSIGN; 2434 MAC_ASSIGN(bssid, params->bssid); 2435 memset(__entry->ssid, 0, IEEE80211_MAX_SSID_LEN + 1); 2436 memcpy(__entry->ssid, params->ssid.ssid, 2437 params->ssid.ssid_len); 2438 __entry->status = params->status; 2439 ), 2440 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", bssid: " MAC_PR_FMT 2441 ", ssid: %s, status: %u", WIPHY_PR_ARG, NETDEV_PR_ARG, 2442 __entry->bssid, __entry->ssid, __entry->status) 2443 ); 2444 2445 TRACE_EVENT(rdev_start_radar_detection, 2446 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2447 struct cfg80211_chan_def *chandef, 2448 u32 cac_time_ms), 2449 TP_ARGS(wiphy, netdev, chandef, cac_time_ms), 2450 TP_STRUCT__entry( 2451 WIPHY_ENTRY 2452 NETDEV_ENTRY 2453 CHAN_DEF_ENTRY 2454 __field(u32, cac_time_ms) 2455 ), 2456 TP_fast_assign( 2457 WIPHY_ASSIGN; 2458 NETDEV_ASSIGN; 2459 CHAN_DEF_ASSIGN(chandef); 2460 __entry->cac_time_ms = cac_time_ms; 2461 ), 2462 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT 2463 ", cac_time_ms=%u", 2464 WIPHY_PR_ARG, NETDEV_PR_ARG, CHAN_DEF_PR_ARG, 2465 __entry->cac_time_ms) 2466 ); 2467 2468 TRACE_EVENT(rdev_set_mcast_rate, 2469 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2470 int *mcast_rate), 2471 TP_ARGS(wiphy, netdev, mcast_rate), 2472 TP_STRUCT__entry( 2473 WIPHY_ENTRY 2474 NETDEV_ENTRY 2475 __array(int, mcast_rate, NUM_NL80211_BANDS) 2476 ), 2477 TP_fast_assign( 2478 WIPHY_ASSIGN; 2479 NETDEV_ASSIGN; 2480 memcpy(__entry->mcast_rate, mcast_rate, 2481 sizeof(int) * NUM_NL80211_BANDS); 2482 ), 2483 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " 2484 "mcast_rates [2.4GHz=0x%x, 5.2GHz=0x%x, 6GHz=0x%x, 60GHz=0x%x]", 2485 WIPHY_PR_ARG, NETDEV_PR_ARG, 2486 __entry->mcast_rate[NL80211_BAND_2GHZ], 2487 __entry->mcast_rate[NL80211_BAND_5GHZ], 2488 __entry->mcast_rate[NL80211_BAND_6GHZ], 2489 __entry->mcast_rate[NL80211_BAND_60GHZ]) 2490 ); 2491 2492 TRACE_EVENT(rdev_set_coalesce, 2493 TP_PROTO(struct wiphy *wiphy, struct cfg80211_coalesce *coalesce), 2494 TP_ARGS(wiphy, coalesce), 2495 TP_STRUCT__entry( 2496 WIPHY_ENTRY 2497 __field(int, n_rules) 2498 ), 2499 TP_fast_assign( 2500 WIPHY_ASSIGN; 2501 __entry->n_rules = coalesce ? coalesce->n_rules : 0; 2502 ), 2503 TP_printk(WIPHY_PR_FMT ", n_rules=%d", 2504 WIPHY_PR_ARG, __entry->n_rules) 2505 ); 2506 2507 DEFINE_EVENT(wiphy_wdev_evt, rdev_abort_scan, 2508 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 2509 TP_ARGS(wiphy, wdev) 2510 ); 2511 2512 TRACE_EVENT(rdev_set_multicast_to_unicast, 2513 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2514 const bool enabled), 2515 TP_ARGS(wiphy, netdev, enabled), 2516 TP_STRUCT__entry( 2517 WIPHY_ENTRY 2518 NETDEV_ENTRY 2519 __field(bool, enabled) 2520 ), 2521 TP_fast_assign( 2522 WIPHY_ASSIGN; 2523 NETDEV_ASSIGN; 2524 __entry->enabled = enabled; 2525 ), 2526 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", unicast: %s", 2527 WIPHY_PR_ARG, NETDEV_PR_ARG, 2528 BOOL_TO_STR(__entry->enabled)) 2529 ); 2530 2531 DEFINE_EVENT(wiphy_wdev_evt, rdev_get_txq_stats, 2532 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 2533 TP_ARGS(wiphy, wdev) 2534 ); 2535 2536 TRACE_EVENT(rdev_get_ftm_responder_stats, 2537 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 2538 struct cfg80211_ftm_responder_stats *ftm_stats), 2539 2540 TP_ARGS(wiphy, netdev, ftm_stats), 2541 2542 TP_STRUCT__entry( 2543 WIPHY_ENTRY 2544 NETDEV_ENTRY 2545 __field(u64, timestamp) 2546 __field(u32, success_num) 2547 __field(u32, partial_num) 2548 __field(u32, failed_num) 2549 __field(u32, asap_num) 2550 __field(u32, non_asap_num) 2551 __field(u64, duration) 2552 __field(u32, unknown_triggers) 2553 __field(u32, reschedule) 2554 __field(u32, out_of_window) 2555 ), 2556 2557 TP_fast_assign( 2558 WIPHY_ASSIGN; 2559 NETDEV_ASSIGN; 2560 __entry->success_num = ftm_stats->success_num; 2561 __entry->partial_num = ftm_stats->partial_num; 2562 __entry->failed_num = ftm_stats->failed_num; 2563 __entry->asap_num = ftm_stats->asap_num; 2564 __entry->non_asap_num = ftm_stats->non_asap_num; 2565 __entry->duration = ftm_stats->total_duration_ms; 2566 __entry->unknown_triggers = ftm_stats->unknown_triggers_num; 2567 __entry->reschedule = ftm_stats->reschedule_requests_num; 2568 __entry->out_of_window = ftm_stats->out_of_window_triggers_num; 2569 ), 2570 2571 TP_printk(WIPHY_PR_FMT "Ftm responder stats: success %u, partial %u, " 2572 "failed %u, asap %u, non asap %u, total duration %llu, unknown " 2573 "triggers %u, rescheduled %u, out of window %u", WIPHY_PR_ARG, 2574 __entry->success_num, __entry->partial_num, __entry->failed_num, 2575 __entry->asap_num, __entry->non_asap_num, __entry->duration, 2576 __entry->unknown_triggers, __entry->reschedule, 2577 __entry->out_of_window) 2578 ); 2579 2580 DEFINE_EVENT(wiphy_wdev_cookie_evt, rdev_start_pmsr, 2581 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie), 2582 TP_ARGS(wiphy, wdev, cookie) 2583 ); 2584 2585 DEFINE_EVENT(wiphy_wdev_cookie_evt, rdev_abort_pmsr, 2586 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie), 2587 TP_ARGS(wiphy, wdev, cookie) 2588 ); 2589 2590 /************************************************************* 2591 * cfg80211 exported functions traces * 2592 *************************************************************/ 2593 2594 TRACE_EVENT(cfg80211_return_bool, 2595 TP_PROTO(bool ret), 2596 TP_ARGS(ret), 2597 TP_STRUCT__entry( 2598 __field(bool, ret) 2599 ), 2600 TP_fast_assign( 2601 __entry->ret = ret; 2602 ), 2603 TP_printk("returned %s", BOOL_TO_STR(__entry->ret)) 2604 ); 2605 2606 DECLARE_EVENT_CLASS(cfg80211_netdev_mac_evt, 2607 TP_PROTO(struct net_device *netdev, const u8 *macaddr), 2608 TP_ARGS(netdev, macaddr), 2609 TP_STRUCT__entry( 2610 NETDEV_ENTRY 2611 MAC_ENTRY(macaddr) 2612 ), 2613 TP_fast_assign( 2614 NETDEV_ASSIGN; 2615 MAC_ASSIGN(macaddr, macaddr); 2616 ), 2617 TP_printk(NETDEV_PR_FMT ", mac: " MAC_PR_FMT, 2618 NETDEV_PR_ARG, MAC_PR_ARG(macaddr)) 2619 ); 2620 2621 DEFINE_EVENT(cfg80211_netdev_mac_evt, cfg80211_notify_new_peer_candidate, 2622 TP_PROTO(struct net_device *netdev, const u8 *macaddr), 2623 TP_ARGS(netdev, macaddr) 2624 ); 2625 2626 DECLARE_EVENT_CLASS(netdev_evt_only, 2627 TP_PROTO(struct net_device *netdev), 2628 TP_ARGS(netdev), 2629 TP_STRUCT__entry( 2630 NETDEV_ENTRY 2631 ), 2632 TP_fast_assign( 2633 NETDEV_ASSIGN; 2634 ), 2635 TP_printk(NETDEV_PR_FMT , NETDEV_PR_ARG) 2636 ); 2637 2638 DEFINE_EVENT(netdev_evt_only, cfg80211_send_rx_auth, 2639 TP_PROTO(struct net_device *netdev), 2640 TP_ARGS(netdev) 2641 ); 2642 2643 TRACE_EVENT(cfg80211_send_rx_assoc, 2644 TP_PROTO(struct net_device *netdev, struct cfg80211_bss *bss), 2645 TP_ARGS(netdev, bss), 2646 TP_STRUCT__entry( 2647 NETDEV_ENTRY 2648 MAC_ENTRY(bssid) 2649 CHAN_ENTRY 2650 ), 2651 TP_fast_assign( 2652 NETDEV_ASSIGN; 2653 MAC_ASSIGN(bssid, bss->bssid); 2654 CHAN_ASSIGN(bss->channel); 2655 ), 2656 TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT ", " CHAN_PR_FMT, 2657 NETDEV_PR_ARG, MAC_PR_ARG(bssid), CHAN_PR_ARG) 2658 ); 2659 2660 DECLARE_EVENT_CLASS(netdev_frame_event, 2661 TP_PROTO(struct net_device *netdev, const u8 *buf, int len), 2662 TP_ARGS(netdev, buf, len), 2663 TP_STRUCT__entry( 2664 NETDEV_ENTRY 2665 __dynamic_array(u8, frame, len) 2666 ), 2667 TP_fast_assign( 2668 NETDEV_ASSIGN; 2669 memcpy(__get_dynamic_array(frame), buf, len); 2670 ), 2671 TP_printk(NETDEV_PR_FMT ", ftype:0x%.2x", 2672 NETDEV_PR_ARG, 2673 le16_to_cpup((__le16 *)__get_dynamic_array(frame))) 2674 ); 2675 2676 DEFINE_EVENT(netdev_frame_event, cfg80211_rx_unprot_mlme_mgmt, 2677 TP_PROTO(struct net_device *netdev, const u8 *buf, int len), 2678 TP_ARGS(netdev, buf, len) 2679 ); 2680 2681 DEFINE_EVENT(netdev_frame_event, cfg80211_rx_mlme_mgmt, 2682 TP_PROTO(struct net_device *netdev, const u8 *buf, int len), 2683 TP_ARGS(netdev, buf, len) 2684 ); 2685 2686 TRACE_EVENT(cfg80211_tx_mlme_mgmt, 2687 TP_PROTO(struct net_device *netdev, const u8 *buf, int len), 2688 TP_ARGS(netdev, buf, len), 2689 TP_STRUCT__entry( 2690 NETDEV_ENTRY 2691 __dynamic_array(u8, frame, len) 2692 ), 2693 TP_fast_assign( 2694 NETDEV_ASSIGN; 2695 memcpy(__get_dynamic_array(frame), buf, len); 2696 ), 2697 TP_printk(NETDEV_PR_FMT ", ftype:0x%.2x", 2698 NETDEV_PR_ARG, 2699 le16_to_cpup((__le16 *)__get_dynamic_array(frame))) 2700 ); 2701 2702 DECLARE_EVENT_CLASS(netdev_mac_evt, 2703 TP_PROTO(struct net_device *netdev, const u8 *mac), 2704 TP_ARGS(netdev, mac), 2705 TP_STRUCT__entry( 2706 NETDEV_ENTRY 2707 MAC_ENTRY(mac) 2708 ), 2709 TP_fast_assign( 2710 NETDEV_ASSIGN; 2711 MAC_ASSIGN(mac, mac) 2712 ), 2713 TP_printk(NETDEV_PR_FMT ", mac: " MAC_PR_FMT, 2714 NETDEV_PR_ARG, MAC_PR_ARG(mac)) 2715 ); 2716 2717 DEFINE_EVENT(netdev_mac_evt, cfg80211_send_auth_timeout, 2718 TP_PROTO(struct net_device *netdev, const u8 *mac), 2719 TP_ARGS(netdev, mac) 2720 ); 2721 2722 DEFINE_EVENT(netdev_mac_evt, cfg80211_send_assoc_timeout, 2723 TP_PROTO(struct net_device *netdev, const u8 *mac), 2724 TP_ARGS(netdev, mac) 2725 ); 2726 2727 TRACE_EVENT(cfg80211_michael_mic_failure, 2728 TP_PROTO(struct net_device *netdev, const u8 *addr, 2729 enum nl80211_key_type key_type, int key_id, const u8 *tsc), 2730 TP_ARGS(netdev, addr, key_type, key_id, tsc), 2731 TP_STRUCT__entry( 2732 NETDEV_ENTRY 2733 MAC_ENTRY(addr) 2734 __field(enum nl80211_key_type, key_type) 2735 __field(int, key_id) 2736 __array(u8, tsc, 6) 2737 ), 2738 TP_fast_assign( 2739 NETDEV_ASSIGN; 2740 MAC_ASSIGN(addr, addr); 2741 __entry->key_type = key_type; 2742 __entry->key_id = key_id; 2743 if (tsc) 2744 memcpy(__entry->tsc, tsc, 6); 2745 ), 2746 TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT ", key type: %d, key id: %d, tsc: %pm", 2747 NETDEV_PR_ARG, MAC_PR_ARG(addr), __entry->key_type, 2748 __entry->key_id, __entry->tsc) 2749 ); 2750 2751 TRACE_EVENT(cfg80211_ready_on_channel, 2752 TP_PROTO(struct wireless_dev *wdev, u64 cookie, 2753 struct ieee80211_channel *chan, 2754 unsigned int duration), 2755 TP_ARGS(wdev, cookie, chan, duration), 2756 TP_STRUCT__entry( 2757 WDEV_ENTRY 2758 __field(u64, cookie) 2759 CHAN_ENTRY 2760 __field(unsigned int, duration) 2761 ), 2762 TP_fast_assign( 2763 WDEV_ASSIGN; 2764 __entry->cookie = cookie; 2765 CHAN_ASSIGN(chan); 2766 __entry->duration = duration; 2767 ), 2768 TP_printk(WDEV_PR_FMT ", cookie: %llu, " CHAN_PR_FMT ", duration: %u", 2769 WDEV_PR_ARG, __entry->cookie, CHAN_PR_ARG, 2770 __entry->duration) 2771 ); 2772 2773 TRACE_EVENT(cfg80211_ready_on_channel_expired, 2774 TP_PROTO(struct wireless_dev *wdev, u64 cookie, 2775 struct ieee80211_channel *chan), 2776 TP_ARGS(wdev, cookie, chan), 2777 TP_STRUCT__entry( 2778 WDEV_ENTRY 2779 __field(u64, cookie) 2780 CHAN_ENTRY 2781 ), 2782 TP_fast_assign( 2783 WDEV_ASSIGN; 2784 __entry->cookie = cookie; 2785 CHAN_ASSIGN(chan); 2786 ), 2787 TP_printk(WDEV_PR_FMT ", cookie: %llu, " CHAN_PR_FMT, 2788 WDEV_PR_ARG, __entry->cookie, CHAN_PR_ARG) 2789 ); 2790 2791 TRACE_EVENT(cfg80211_tx_mgmt_expired, 2792 TP_PROTO(struct wireless_dev *wdev, u64 cookie, 2793 struct ieee80211_channel *chan), 2794 TP_ARGS(wdev, cookie, chan), 2795 TP_STRUCT__entry( 2796 WDEV_ENTRY 2797 __field(u64, cookie) 2798 CHAN_ENTRY 2799 ), 2800 TP_fast_assign( 2801 WDEV_ASSIGN; 2802 __entry->cookie = cookie; 2803 CHAN_ASSIGN(chan); 2804 ), 2805 TP_printk(WDEV_PR_FMT ", cookie: %llu, " CHAN_PR_FMT, 2806 WDEV_PR_ARG, __entry->cookie, CHAN_PR_ARG) 2807 ); 2808 2809 TRACE_EVENT(cfg80211_new_sta, 2810 TP_PROTO(struct net_device *netdev, const u8 *mac_addr, 2811 struct station_info *sinfo), 2812 TP_ARGS(netdev, mac_addr, sinfo), 2813 TP_STRUCT__entry( 2814 NETDEV_ENTRY 2815 MAC_ENTRY(mac_addr) 2816 SINFO_ENTRY 2817 ), 2818 TP_fast_assign( 2819 NETDEV_ASSIGN; 2820 MAC_ASSIGN(mac_addr, mac_addr); 2821 SINFO_ASSIGN; 2822 ), 2823 TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT, 2824 NETDEV_PR_ARG, MAC_PR_ARG(mac_addr)) 2825 ); 2826 2827 DEFINE_EVENT(cfg80211_netdev_mac_evt, cfg80211_del_sta, 2828 TP_PROTO(struct net_device *netdev, const u8 *macaddr), 2829 TP_ARGS(netdev, macaddr) 2830 ); 2831 2832 TRACE_EVENT(cfg80211_rx_mgmt, 2833 TP_PROTO(struct wireless_dev *wdev, int freq, int sig_dbm), 2834 TP_ARGS(wdev, freq, sig_dbm), 2835 TP_STRUCT__entry( 2836 WDEV_ENTRY 2837 __field(int, freq) 2838 __field(int, sig_dbm) 2839 ), 2840 TP_fast_assign( 2841 WDEV_ASSIGN; 2842 __entry->freq = freq; 2843 __entry->sig_dbm = sig_dbm; 2844 ), 2845 TP_printk(WDEV_PR_FMT ", freq: "KHZ_F", sig dbm: %d", 2846 WDEV_PR_ARG, PR_KHZ(__entry->freq), __entry->sig_dbm) 2847 ); 2848 2849 TRACE_EVENT(cfg80211_mgmt_tx_status, 2850 TP_PROTO(struct wireless_dev *wdev, u64 cookie, bool ack), 2851 TP_ARGS(wdev, cookie, ack), 2852 TP_STRUCT__entry( 2853 WDEV_ENTRY 2854 __field(u64, cookie) 2855 __field(bool, ack) 2856 ), 2857 TP_fast_assign( 2858 WDEV_ASSIGN; 2859 __entry->cookie = cookie; 2860 __entry->ack = ack; 2861 ), 2862 TP_printk(WDEV_PR_FMT", cookie: %llu, ack: %s", 2863 WDEV_PR_ARG, __entry->cookie, BOOL_TO_STR(__entry->ack)) 2864 ); 2865 2866 TRACE_EVENT(cfg80211_control_port_tx_status, 2867 TP_PROTO(struct wireless_dev *wdev, u64 cookie, bool ack), 2868 TP_ARGS(wdev, cookie, ack), 2869 TP_STRUCT__entry( 2870 WDEV_ENTRY 2871 __field(u64, cookie) 2872 __field(bool, ack) 2873 ), 2874 TP_fast_assign( 2875 WDEV_ASSIGN; 2876 __entry->cookie = cookie; 2877 __entry->ack = ack; 2878 ), 2879 TP_printk(WDEV_PR_FMT", cookie: %llu, ack: %s", 2880 WDEV_PR_ARG, __entry->cookie, BOOL_TO_STR(__entry->ack)) 2881 ); 2882 2883 TRACE_EVENT(cfg80211_rx_control_port, 2884 TP_PROTO(struct net_device *netdev, struct sk_buff *skb, 2885 bool unencrypted), 2886 TP_ARGS(netdev, skb, unencrypted), 2887 TP_STRUCT__entry( 2888 NETDEV_ENTRY 2889 __field(int, len) 2890 MAC_ENTRY(from) 2891 __field(u16, proto) 2892 __field(bool, unencrypted) 2893 ), 2894 TP_fast_assign( 2895 NETDEV_ASSIGN; 2896 __entry->len = skb->len; 2897 MAC_ASSIGN(from, eth_hdr(skb)->h_source); 2898 __entry->proto = be16_to_cpu(skb->protocol); 2899 __entry->unencrypted = unencrypted; 2900 ), 2901 TP_printk(NETDEV_PR_FMT ", len=%d, " MAC_PR_FMT ", proto: 0x%x, unencrypted: %s", 2902 NETDEV_PR_ARG, __entry->len, MAC_PR_ARG(from), 2903 __entry->proto, BOOL_TO_STR(__entry->unencrypted)) 2904 ); 2905 2906 TRACE_EVENT(cfg80211_cqm_rssi_notify, 2907 TP_PROTO(struct net_device *netdev, 2908 enum nl80211_cqm_rssi_threshold_event rssi_event, 2909 s32 rssi_level), 2910 TP_ARGS(netdev, rssi_event, rssi_level), 2911 TP_STRUCT__entry( 2912 NETDEV_ENTRY 2913 __field(enum nl80211_cqm_rssi_threshold_event, rssi_event) 2914 __field(s32, rssi_level) 2915 ), 2916 TP_fast_assign( 2917 NETDEV_ASSIGN; 2918 __entry->rssi_event = rssi_event; 2919 __entry->rssi_level = rssi_level; 2920 ), 2921 TP_printk(NETDEV_PR_FMT ", rssi event: %d, level: %d", 2922 NETDEV_PR_ARG, __entry->rssi_event, __entry->rssi_level) 2923 ); 2924 2925 TRACE_EVENT(cfg80211_reg_can_beacon, 2926 TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef, 2927 enum nl80211_iftype iftype, bool check_no_ir), 2928 TP_ARGS(wiphy, chandef, iftype, check_no_ir), 2929 TP_STRUCT__entry( 2930 WIPHY_ENTRY 2931 CHAN_DEF_ENTRY 2932 __field(enum nl80211_iftype, iftype) 2933 __field(bool, check_no_ir) 2934 ), 2935 TP_fast_assign( 2936 WIPHY_ASSIGN; 2937 CHAN_DEF_ASSIGN(chandef); 2938 __entry->iftype = iftype; 2939 __entry->check_no_ir = check_no_ir; 2940 ), 2941 TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT ", iftype=%d check_no_ir=%s", 2942 WIPHY_PR_ARG, CHAN_DEF_PR_ARG, __entry->iftype, 2943 BOOL_TO_STR(__entry->check_no_ir)) 2944 ); 2945 2946 TRACE_EVENT(cfg80211_chandef_dfs_required, 2947 TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef), 2948 TP_ARGS(wiphy, chandef), 2949 TP_STRUCT__entry( 2950 WIPHY_ENTRY 2951 CHAN_DEF_ENTRY 2952 ), 2953 TP_fast_assign( 2954 WIPHY_ASSIGN; 2955 CHAN_DEF_ASSIGN(chandef); 2956 ), 2957 TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT, 2958 WIPHY_PR_ARG, CHAN_DEF_PR_ARG) 2959 ); 2960 2961 TRACE_EVENT(cfg80211_ch_switch_notify, 2962 TP_PROTO(struct net_device *netdev, 2963 struct cfg80211_chan_def *chandef), 2964 TP_ARGS(netdev, chandef), 2965 TP_STRUCT__entry( 2966 NETDEV_ENTRY 2967 CHAN_DEF_ENTRY 2968 ), 2969 TP_fast_assign( 2970 NETDEV_ASSIGN; 2971 CHAN_DEF_ASSIGN(chandef); 2972 ), 2973 TP_printk(NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT, 2974 NETDEV_PR_ARG, CHAN_DEF_PR_ARG) 2975 ); 2976 2977 TRACE_EVENT(cfg80211_ch_switch_started_notify, 2978 TP_PROTO(struct net_device *netdev, 2979 struct cfg80211_chan_def *chandef), 2980 TP_ARGS(netdev, chandef), 2981 TP_STRUCT__entry( 2982 NETDEV_ENTRY 2983 CHAN_DEF_ENTRY 2984 ), 2985 TP_fast_assign( 2986 NETDEV_ASSIGN; 2987 CHAN_DEF_ASSIGN(chandef); 2988 ), 2989 TP_printk(NETDEV_PR_FMT ", " CHAN_DEF_PR_FMT, 2990 NETDEV_PR_ARG, CHAN_DEF_PR_ARG) 2991 ); 2992 2993 TRACE_EVENT(cfg80211_radar_event, 2994 TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef), 2995 TP_ARGS(wiphy, chandef), 2996 TP_STRUCT__entry( 2997 WIPHY_ENTRY 2998 CHAN_DEF_ENTRY 2999 ), 3000 TP_fast_assign( 3001 WIPHY_ASSIGN; 3002 CHAN_DEF_ASSIGN(chandef); 3003 ), 3004 TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT, 3005 WIPHY_PR_ARG, CHAN_DEF_PR_ARG) 3006 ); 3007 3008 TRACE_EVENT(cfg80211_cac_event, 3009 TP_PROTO(struct net_device *netdev, enum nl80211_radar_event evt), 3010 TP_ARGS(netdev, evt), 3011 TP_STRUCT__entry( 3012 NETDEV_ENTRY 3013 __field(enum nl80211_radar_event, evt) 3014 ), 3015 TP_fast_assign( 3016 NETDEV_ASSIGN; 3017 __entry->evt = evt; 3018 ), 3019 TP_printk(NETDEV_PR_FMT ", event: %d", 3020 NETDEV_PR_ARG, __entry->evt) 3021 ); 3022 3023 DECLARE_EVENT_CLASS(cfg80211_rx_evt, 3024 TP_PROTO(struct net_device *netdev, const u8 *addr), 3025 TP_ARGS(netdev, addr), 3026 TP_STRUCT__entry( 3027 NETDEV_ENTRY 3028 MAC_ENTRY(addr) 3029 ), 3030 TP_fast_assign( 3031 NETDEV_ASSIGN; 3032 MAC_ASSIGN(addr, addr); 3033 ), 3034 TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT, NETDEV_PR_ARG, MAC_PR_ARG(addr)) 3035 ); 3036 3037 DEFINE_EVENT(cfg80211_rx_evt, cfg80211_rx_spurious_frame, 3038 TP_PROTO(struct net_device *netdev, const u8 *addr), 3039 TP_ARGS(netdev, addr) 3040 ); 3041 3042 DEFINE_EVENT(cfg80211_rx_evt, cfg80211_rx_unexpected_4addr_frame, 3043 TP_PROTO(struct net_device *netdev, const u8 *addr), 3044 TP_ARGS(netdev, addr) 3045 ); 3046 3047 TRACE_EVENT(cfg80211_ibss_joined, 3048 TP_PROTO(struct net_device *netdev, const u8 *bssid, 3049 struct ieee80211_channel *channel), 3050 TP_ARGS(netdev, bssid, channel), 3051 TP_STRUCT__entry( 3052 NETDEV_ENTRY 3053 MAC_ENTRY(bssid) 3054 CHAN_ENTRY 3055 ), 3056 TP_fast_assign( 3057 NETDEV_ASSIGN; 3058 MAC_ASSIGN(bssid, bssid); 3059 CHAN_ASSIGN(channel); 3060 ), 3061 TP_printk(NETDEV_PR_FMT ", bssid: " MAC_PR_FMT ", " CHAN_PR_FMT, 3062 NETDEV_PR_ARG, MAC_PR_ARG(bssid), CHAN_PR_ARG) 3063 ); 3064 3065 TRACE_EVENT(cfg80211_probe_status, 3066 TP_PROTO(struct net_device *netdev, const u8 *addr, u64 cookie, 3067 bool acked), 3068 TP_ARGS(netdev, addr, cookie, acked), 3069 TP_STRUCT__entry( 3070 NETDEV_ENTRY 3071 MAC_ENTRY(addr) 3072 __field(u64, cookie) 3073 __field(bool, acked) 3074 ), 3075 TP_fast_assign( 3076 NETDEV_ASSIGN; 3077 MAC_ASSIGN(addr, addr); 3078 __entry->cookie = cookie; 3079 __entry->acked = acked; 3080 ), 3081 TP_printk(NETDEV_PR_FMT " addr:" MAC_PR_FMT ", cookie: %llu, acked: %s", 3082 NETDEV_PR_ARG, MAC_PR_ARG(addr), __entry->cookie, 3083 BOOL_TO_STR(__entry->acked)) 3084 ); 3085 3086 TRACE_EVENT(cfg80211_cqm_pktloss_notify, 3087 TP_PROTO(struct net_device *netdev, const u8 *peer, u32 num_packets), 3088 TP_ARGS(netdev, peer, num_packets), 3089 TP_STRUCT__entry( 3090 NETDEV_ENTRY 3091 MAC_ENTRY(peer) 3092 __field(u32, num_packets) 3093 ), 3094 TP_fast_assign( 3095 NETDEV_ASSIGN; 3096 MAC_ASSIGN(peer, peer); 3097 __entry->num_packets = num_packets; 3098 ), 3099 TP_printk(NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", num of lost packets: %u", 3100 NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->num_packets) 3101 ); 3102 3103 DEFINE_EVENT(cfg80211_netdev_mac_evt, cfg80211_gtk_rekey_notify, 3104 TP_PROTO(struct net_device *netdev, const u8 *macaddr), 3105 TP_ARGS(netdev, macaddr) 3106 ); 3107 3108 TRACE_EVENT(cfg80211_pmksa_candidate_notify, 3109 TP_PROTO(struct net_device *netdev, int index, const u8 *bssid, 3110 bool preauth), 3111 TP_ARGS(netdev, index, bssid, preauth), 3112 TP_STRUCT__entry( 3113 NETDEV_ENTRY 3114 __field(int, index) 3115 MAC_ENTRY(bssid) 3116 __field(bool, preauth) 3117 ), 3118 TP_fast_assign( 3119 NETDEV_ASSIGN; 3120 __entry->index = index; 3121 MAC_ASSIGN(bssid, bssid); 3122 __entry->preauth = preauth; 3123 ), 3124 TP_printk(NETDEV_PR_FMT ", index:%d, bssid: " MAC_PR_FMT ", pre auth: %s", 3125 NETDEV_PR_ARG, __entry->index, MAC_PR_ARG(bssid), 3126 BOOL_TO_STR(__entry->preauth)) 3127 ); 3128 3129 TRACE_EVENT(cfg80211_report_obss_beacon, 3130 TP_PROTO(struct wiphy *wiphy, const u8 *frame, size_t len, 3131 int freq, int sig_dbm), 3132 TP_ARGS(wiphy, frame, len, freq, sig_dbm), 3133 TP_STRUCT__entry( 3134 WIPHY_ENTRY 3135 __field(int, freq) 3136 __field(int, sig_dbm) 3137 ), 3138 TP_fast_assign( 3139 WIPHY_ASSIGN; 3140 __entry->freq = freq; 3141 __entry->sig_dbm = sig_dbm; 3142 ), 3143 TP_printk(WIPHY_PR_FMT ", freq: "KHZ_F", sig_dbm: %d", 3144 WIPHY_PR_ARG, PR_KHZ(__entry->freq), __entry->sig_dbm) 3145 ); 3146 3147 TRACE_EVENT(cfg80211_tdls_oper_request, 3148 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *peer, 3149 enum nl80211_tdls_operation oper, u16 reason_code), 3150 TP_ARGS(wiphy, netdev, peer, oper, reason_code), 3151 TP_STRUCT__entry( 3152 WIPHY_ENTRY 3153 NETDEV_ENTRY 3154 MAC_ENTRY(peer) 3155 __field(enum nl80211_tdls_operation, oper) 3156 __field(u16, reason_code) 3157 ), 3158 TP_fast_assign( 3159 WIPHY_ASSIGN; 3160 NETDEV_ASSIGN; 3161 MAC_ASSIGN(peer, peer); 3162 __entry->oper = oper; 3163 __entry->reason_code = reason_code; 3164 ), 3165 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", oper: %d, reason_code %u", 3166 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->oper, 3167 __entry->reason_code) 3168 ); 3169 3170 TRACE_EVENT(cfg80211_scan_done, 3171 TP_PROTO(struct cfg80211_scan_request *request, 3172 struct cfg80211_scan_info *info), 3173 TP_ARGS(request, info), 3174 TP_STRUCT__entry( 3175 __field(u32, n_channels) 3176 __dynamic_array(u8, ie, request ? request->ie_len : 0) 3177 __array(u32, rates, NUM_NL80211_BANDS) 3178 __field(u32, wdev_id) 3179 MAC_ENTRY(wiphy_mac) 3180 __field(bool, no_cck) 3181 __field(bool, aborted) 3182 __field(u64, scan_start_tsf) 3183 MAC_ENTRY(tsf_bssid) 3184 ), 3185 TP_fast_assign( 3186 if (request) { 3187 memcpy(__get_dynamic_array(ie), request->ie, 3188 request->ie_len); 3189 memcpy(__entry->rates, request->rates, 3190 NUM_NL80211_BANDS); 3191 __entry->wdev_id = request->wdev ? 3192 request->wdev->identifier : 0; 3193 if (request->wiphy) 3194 MAC_ASSIGN(wiphy_mac, 3195 request->wiphy->perm_addr); 3196 __entry->no_cck = request->no_cck; 3197 } 3198 if (info) { 3199 __entry->aborted = info->aborted; 3200 __entry->scan_start_tsf = info->scan_start_tsf; 3201 MAC_ASSIGN(tsf_bssid, info->tsf_bssid); 3202 } 3203 ), 3204 TP_printk("aborted: %s, scan start (TSF): %llu, tsf_bssid: " MAC_PR_FMT, 3205 BOOL_TO_STR(__entry->aborted), 3206 (unsigned long long)__entry->scan_start_tsf, 3207 MAC_PR_ARG(tsf_bssid)) 3208 ); 3209 3210 DECLARE_EVENT_CLASS(wiphy_id_evt, 3211 TP_PROTO(struct wiphy *wiphy, u64 id), 3212 TP_ARGS(wiphy, id), 3213 TP_STRUCT__entry( 3214 WIPHY_ENTRY 3215 __field(u64, id) 3216 ), 3217 TP_fast_assign( 3218 WIPHY_ASSIGN; 3219 __entry->id = id; 3220 ), 3221 TP_printk(WIPHY_PR_FMT ", id: %llu", WIPHY_PR_ARG, __entry->id) 3222 ); 3223 3224 DEFINE_EVENT(wiphy_id_evt, cfg80211_sched_scan_stopped, 3225 TP_PROTO(struct wiphy *wiphy, u64 id), 3226 TP_ARGS(wiphy, id) 3227 ); 3228 3229 DEFINE_EVENT(wiphy_id_evt, cfg80211_sched_scan_results, 3230 TP_PROTO(struct wiphy *wiphy, u64 id), 3231 TP_ARGS(wiphy, id) 3232 ); 3233 3234 TRACE_EVENT(cfg80211_get_bss, 3235 TP_PROTO(struct wiphy *wiphy, struct ieee80211_channel *channel, 3236 const u8 *bssid, const u8 *ssid, size_t ssid_len, 3237 enum ieee80211_bss_type bss_type, 3238 enum ieee80211_privacy privacy), 3239 TP_ARGS(wiphy, channel, bssid, ssid, ssid_len, bss_type, privacy), 3240 TP_STRUCT__entry( 3241 WIPHY_ENTRY 3242 CHAN_ENTRY 3243 MAC_ENTRY(bssid) 3244 __dynamic_array(u8, ssid, ssid_len) 3245 __field(enum ieee80211_bss_type, bss_type) 3246 __field(enum ieee80211_privacy, privacy) 3247 ), 3248 TP_fast_assign( 3249 WIPHY_ASSIGN; 3250 CHAN_ASSIGN(channel); 3251 MAC_ASSIGN(bssid, bssid); 3252 memcpy(__get_dynamic_array(ssid), ssid, ssid_len); 3253 __entry->bss_type = bss_type; 3254 __entry->privacy = privacy; 3255 ), 3256 TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT ", " MAC_PR_FMT 3257 ", buf: %#.2x, bss_type: %d, privacy: %d", 3258 WIPHY_PR_ARG, CHAN_PR_ARG, MAC_PR_ARG(bssid), 3259 ((u8 *)__get_dynamic_array(ssid))[0], __entry->bss_type, 3260 __entry->privacy) 3261 ); 3262 3263 TRACE_EVENT(cfg80211_inform_bss_frame, 3264 TP_PROTO(struct wiphy *wiphy, struct cfg80211_inform_bss *data, 3265 struct ieee80211_mgmt *mgmt, size_t len), 3266 TP_ARGS(wiphy, data, mgmt, len), 3267 TP_STRUCT__entry( 3268 WIPHY_ENTRY 3269 CHAN_ENTRY 3270 __field(enum nl80211_bss_scan_width, scan_width) 3271 __dynamic_array(u8, mgmt, len) 3272 __field(s32, signal) 3273 __field(u64, ts_boottime) 3274 __field(u64, parent_tsf) 3275 MAC_ENTRY(parent_bssid) 3276 ), 3277 TP_fast_assign( 3278 WIPHY_ASSIGN; 3279 CHAN_ASSIGN(data->chan); 3280 __entry->scan_width = data->scan_width; 3281 if (mgmt) 3282 memcpy(__get_dynamic_array(mgmt), mgmt, len); 3283 __entry->signal = data->signal; 3284 __entry->ts_boottime = data->boottime_ns; 3285 __entry->parent_tsf = data->parent_tsf; 3286 MAC_ASSIGN(parent_bssid, data->parent_bssid); 3287 ), 3288 TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT 3289 "(scan_width: %d) signal: %d, tsb:%llu, detect_tsf:%llu, tsf_bssid: " 3290 MAC_PR_FMT, WIPHY_PR_ARG, CHAN_PR_ARG, __entry->scan_width, 3291 __entry->signal, (unsigned long long)__entry->ts_boottime, 3292 (unsigned long long)__entry->parent_tsf, 3293 MAC_PR_ARG(parent_bssid)) 3294 ); 3295 3296 DECLARE_EVENT_CLASS(cfg80211_bss_evt, 3297 TP_PROTO(struct cfg80211_bss *pub), 3298 TP_ARGS(pub), 3299 TP_STRUCT__entry( 3300 MAC_ENTRY(bssid) 3301 CHAN_ENTRY 3302 ), 3303 TP_fast_assign( 3304 MAC_ASSIGN(bssid, pub->bssid); 3305 CHAN_ASSIGN(pub->channel); 3306 ), 3307 TP_printk(MAC_PR_FMT ", " CHAN_PR_FMT, MAC_PR_ARG(bssid), CHAN_PR_ARG) 3308 ); 3309 3310 DEFINE_EVENT(cfg80211_bss_evt, cfg80211_return_bss, 3311 TP_PROTO(struct cfg80211_bss *pub), 3312 TP_ARGS(pub) 3313 ); 3314 3315 TRACE_EVENT(cfg80211_return_uint, 3316 TP_PROTO(unsigned int ret), 3317 TP_ARGS(ret), 3318 TP_STRUCT__entry( 3319 __field(unsigned int, ret) 3320 ), 3321 TP_fast_assign( 3322 __entry->ret = ret; 3323 ), 3324 TP_printk("ret: %d", __entry->ret) 3325 ); 3326 3327 TRACE_EVENT(cfg80211_return_u32, 3328 TP_PROTO(u32 ret), 3329 TP_ARGS(ret), 3330 TP_STRUCT__entry( 3331 __field(u32, ret) 3332 ), 3333 TP_fast_assign( 3334 __entry->ret = ret; 3335 ), 3336 TP_printk("ret: %u", __entry->ret) 3337 ); 3338 3339 TRACE_EVENT(cfg80211_report_wowlan_wakeup, 3340 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 3341 struct cfg80211_wowlan_wakeup *wakeup), 3342 TP_ARGS(wiphy, wdev, wakeup), 3343 TP_STRUCT__entry( 3344 WIPHY_ENTRY 3345 WDEV_ENTRY 3346 __field(bool, non_wireless) 3347 __field(bool, disconnect) 3348 __field(bool, magic_pkt) 3349 __field(bool, gtk_rekey_failure) 3350 __field(bool, eap_identity_req) 3351 __field(bool, four_way_handshake) 3352 __field(bool, rfkill_release) 3353 __field(s32, pattern_idx) 3354 __field(u32, packet_len) 3355 __dynamic_array(u8, packet, 3356 wakeup ? wakeup->packet_present_len : 0) 3357 ), 3358 TP_fast_assign( 3359 WIPHY_ASSIGN; 3360 WDEV_ASSIGN; 3361 __entry->non_wireless = !wakeup; 3362 __entry->disconnect = wakeup ? wakeup->disconnect : false; 3363 __entry->magic_pkt = wakeup ? wakeup->magic_pkt : false; 3364 __entry->gtk_rekey_failure = wakeup ? wakeup->gtk_rekey_failure : false; 3365 __entry->eap_identity_req = wakeup ? wakeup->eap_identity_req : false; 3366 __entry->four_way_handshake = wakeup ? wakeup->four_way_handshake : false; 3367 __entry->rfkill_release = wakeup ? wakeup->rfkill_release : false; 3368 __entry->pattern_idx = wakeup ? wakeup->pattern_idx : false; 3369 __entry->packet_len = wakeup ? wakeup->packet_len : false; 3370 if (wakeup && wakeup->packet && wakeup->packet_present_len) 3371 memcpy(__get_dynamic_array(packet), wakeup->packet, 3372 wakeup->packet_present_len); 3373 ), 3374 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT, WIPHY_PR_ARG, WDEV_PR_ARG) 3375 ); 3376 3377 TRACE_EVENT(cfg80211_ft_event, 3378 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 3379 struct cfg80211_ft_event_params *ft_event), 3380 TP_ARGS(wiphy, netdev, ft_event), 3381 TP_STRUCT__entry( 3382 WIPHY_ENTRY 3383 NETDEV_ENTRY 3384 __dynamic_array(u8, ies, ft_event->ies_len) 3385 MAC_ENTRY(target_ap) 3386 __dynamic_array(u8, ric_ies, ft_event->ric_ies_len) 3387 ), 3388 TP_fast_assign( 3389 WIPHY_ASSIGN; 3390 NETDEV_ASSIGN; 3391 if (ft_event->ies) 3392 memcpy(__get_dynamic_array(ies), ft_event->ies, 3393 ft_event->ies_len); 3394 MAC_ASSIGN(target_ap, ft_event->target_ap); 3395 if (ft_event->ric_ies) 3396 memcpy(__get_dynamic_array(ric_ies), ft_event->ric_ies, 3397 ft_event->ric_ies_len); 3398 ), 3399 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", target_ap: " MAC_PR_FMT, 3400 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(target_ap)) 3401 ); 3402 3403 TRACE_EVENT(cfg80211_stop_iface, 3404 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev), 3405 TP_ARGS(wiphy, wdev), 3406 TP_STRUCT__entry( 3407 WIPHY_ENTRY 3408 WDEV_ENTRY 3409 ), 3410 TP_fast_assign( 3411 WIPHY_ASSIGN; 3412 WDEV_ASSIGN; 3413 ), 3414 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT, 3415 WIPHY_PR_ARG, WDEV_PR_ARG) 3416 ); 3417 3418 TRACE_EVENT(cfg80211_pmsr_report, 3419 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, 3420 u64 cookie, const u8 *addr), 3421 TP_ARGS(wiphy, wdev, cookie, addr), 3422 TP_STRUCT__entry( 3423 WIPHY_ENTRY 3424 WDEV_ENTRY 3425 __field(u64, cookie) 3426 MAC_ENTRY(addr) 3427 ), 3428 TP_fast_assign( 3429 WIPHY_ASSIGN; 3430 WDEV_ASSIGN; 3431 __entry->cookie = cookie; 3432 MAC_ASSIGN(addr, addr); 3433 ), 3434 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie:%lld, " MAC_PR_FMT, 3435 WIPHY_PR_ARG, WDEV_PR_ARG, 3436 (unsigned long long)__entry->cookie, 3437 MAC_PR_ARG(addr)) 3438 ); 3439 3440 TRACE_EVENT(cfg80211_pmsr_complete, 3441 TP_PROTO(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie), 3442 TP_ARGS(wiphy, wdev, cookie), 3443 TP_STRUCT__entry( 3444 WIPHY_ENTRY 3445 WDEV_ENTRY 3446 __field(u64, cookie) 3447 ), 3448 TP_fast_assign( 3449 WIPHY_ASSIGN; 3450 WDEV_ASSIGN; 3451 __entry->cookie = cookie; 3452 ), 3453 TP_printk(WIPHY_PR_FMT ", " WDEV_PR_FMT ", cookie:%lld", 3454 WIPHY_PR_ARG, WDEV_PR_ARG, 3455 (unsigned long long)__entry->cookie) 3456 ); 3457 3458 TRACE_EVENT(rdev_update_owe_info, 3459 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 3460 struct cfg80211_update_owe_info *owe_info), 3461 TP_ARGS(wiphy, netdev, owe_info), 3462 TP_STRUCT__entry(WIPHY_ENTRY 3463 NETDEV_ENTRY 3464 MAC_ENTRY(peer) 3465 __field(u16, status) 3466 __dynamic_array(u8, ie, owe_info->ie_len)), 3467 TP_fast_assign(WIPHY_ASSIGN; 3468 NETDEV_ASSIGN; 3469 MAC_ASSIGN(peer, owe_info->peer); 3470 __entry->status = owe_info->status; 3471 memcpy(__get_dynamic_array(ie), 3472 owe_info->ie, owe_info->ie_len);), 3473 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT 3474 " status %d", WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), 3475 __entry->status) 3476 ); 3477 3478 TRACE_EVENT(cfg80211_update_owe_info_event, 3479 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 3480 struct cfg80211_update_owe_info *owe_info), 3481 TP_ARGS(wiphy, netdev, owe_info), 3482 TP_STRUCT__entry(WIPHY_ENTRY 3483 NETDEV_ENTRY 3484 MAC_ENTRY(peer) 3485 __dynamic_array(u8, ie, owe_info->ie_len)), 3486 TP_fast_assign(WIPHY_ASSIGN; 3487 NETDEV_ASSIGN; 3488 MAC_ASSIGN(peer, owe_info->peer); 3489 memcpy(__get_dynamic_array(ie), owe_info->ie, 3490 owe_info->ie_len);), 3491 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT, 3492 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer)) 3493 ); 3494 3495 TRACE_EVENT(rdev_probe_mesh_link, 3496 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 3497 const u8 *dest, const u8 *buf, size_t len), 3498 TP_ARGS(wiphy, netdev, dest, buf, len), 3499 TP_STRUCT__entry( 3500 WIPHY_ENTRY 3501 NETDEV_ENTRY 3502 MAC_ENTRY(dest) 3503 ), 3504 TP_fast_assign( 3505 WIPHY_ASSIGN; 3506 NETDEV_ASSIGN; 3507 MAC_ASSIGN(dest, dest); 3508 ), 3509 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", " MAC_PR_FMT, 3510 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(dest)) 3511 ); 3512 3513 TRACE_EVENT(rdev_set_tid_config, 3514 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 3515 struct cfg80211_tid_config *tid_conf), 3516 TP_ARGS(wiphy, netdev, tid_conf), 3517 TP_STRUCT__entry( 3518 WIPHY_ENTRY 3519 NETDEV_ENTRY 3520 MAC_ENTRY(peer) 3521 ), 3522 TP_fast_assign( 3523 WIPHY_ASSIGN; 3524 NETDEV_ASSIGN; 3525 MAC_ASSIGN(peer, tid_conf->peer); 3526 ), 3527 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT, 3528 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer)) 3529 ); 3530 3531 TRACE_EVENT(rdev_reset_tid_config, 3532 TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, 3533 const u8 *peer, u8 tids), 3534 TP_ARGS(wiphy, netdev, peer, tids), 3535 TP_STRUCT__entry( 3536 WIPHY_ENTRY 3537 NETDEV_ENTRY 3538 MAC_ENTRY(peer) 3539 __field(u8, tids) 3540 ), 3541 TP_fast_assign( 3542 WIPHY_ASSIGN; 3543 NETDEV_ASSIGN; 3544 MAC_ASSIGN(peer, peer); 3545 __entry->tids = tids; 3546 ), 3547 TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", tids: 0x%x", 3548 WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->tids) 3549 ); 3550 #endif /* !__RDEV_OPS_TRACE || TRACE_HEADER_MULTI_READ */ 3551 3552 #undef TRACE_INCLUDE_PATH 3553 #define TRACE_INCLUDE_PATH . 3554 #undef TRACE_INCLUDE_FILE 3555 #define TRACE_INCLUDE_FILE trace 3556 #include <trace/define_trace.h> 3557