diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/wireless/nl80211.c | 47 | ||||
-rw-r--r-- | net/wireless/trace.h | 23 |
2 files changed, 70 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index c18b2fc9d492..4c427fa5c450 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -9027,6 +9027,53 @@ void cfg80211_report_obss_beacon(struct wiphy *wiphy, | |||
9027 | } | 9027 | } |
9028 | EXPORT_SYMBOL(cfg80211_report_obss_beacon); | 9028 | EXPORT_SYMBOL(cfg80211_report_obss_beacon); |
9029 | 9029 | ||
9030 | void cfg80211_tdls_oper_request(struct net_device *dev, const u8 *peer, | ||
9031 | enum nl80211_tdls_operation oper, | ||
9032 | u16 reason_code, gfp_t gfp) | ||
9033 | { | ||
9034 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
9035 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); | ||
9036 | struct sk_buff *msg; | ||
9037 | void *hdr; | ||
9038 | int err; | ||
9039 | |||
9040 | trace_cfg80211_tdls_oper_request(wdev->wiphy, dev, peer, oper, | ||
9041 | reason_code); | ||
9042 | |||
9043 | msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); | ||
9044 | if (!msg) | ||
9045 | return; | ||
9046 | |||
9047 | hdr = nl80211hdr_put(msg, 0, 0, 0, NL80211_CMD_TDLS_OPER); | ||
9048 | if (!hdr) { | ||
9049 | nlmsg_free(msg); | ||
9050 | return; | ||
9051 | } | ||
9052 | |||
9053 | if (nla_put_u32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx) || | ||
9054 | nla_put_u32(msg, NL80211_ATTR_IFINDEX, dev->ifindex) || | ||
9055 | nla_put_u8(msg, NL80211_ATTR_TDLS_OPERATION, oper) || | ||
9056 | nla_put(msg, NL80211_ATTR_MAC, ETH_ALEN, peer) || | ||
9057 | (reason_code > 0 && | ||
9058 | nla_put_u16(msg, NL80211_ATTR_REASON_CODE, reason_code))) | ||
9059 | goto nla_put_failure; | ||
9060 | |||
9061 | err = genlmsg_end(msg, hdr); | ||
9062 | if (err < 0) { | ||
9063 | nlmsg_free(msg); | ||
9064 | return; | ||
9065 | } | ||
9066 | |||
9067 | genlmsg_multicast_netns(wiphy_net(&rdev->wiphy), msg, 0, | ||
9068 | nl80211_mlme_mcgrp.id, gfp); | ||
9069 | return; | ||
9070 | |||
9071 | nla_put_failure: | ||
9072 | genlmsg_cancel(msg, hdr); | ||
9073 | nlmsg_free(msg); | ||
9074 | } | ||
9075 | EXPORT_SYMBOL(cfg80211_tdls_oper_request); | ||
9076 | |||
9030 | static int nl80211_netlink_notify(struct notifier_block * nb, | 9077 | static int nl80211_netlink_notify(struct notifier_block * nb, |
9031 | unsigned long state, | 9078 | unsigned long state, |
9032 | void *_notify) | 9079 | void *_notify) |
diff --git a/net/wireless/trace.h b/net/wireless/trace.h index 8e03c6382a8a..f264c20a7090 100644 --- a/net/wireless/trace.h +++ b/net/wireless/trace.h | |||
@@ -2157,6 +2157,29 @@ TRACE_EVENT(cfg80211_report_obss_beacon, | |||
2157 | WIPHY_PR_ARG, __entry->freq, __entry->sig_dbm) | 2157 | WIPHY_PR_ARG, __entry->freq, __entry->sig_dbm) |
2158 | ); | 2158 | ); |
2159 | 2159 | ||
2160 | TRACE_EVENT(cfg80211_tdls_oper_request, | ||
2161 | TP_PROTO(struct wiphy *wiphy, struct net_device *netdev, const u8 *peer, | ||
2162 | enum nl80211_tdls_operation oper, u16 reason_code), | ||
2163 | TP_ARGS(wiphy, netdev, peer, oper, reason_code), | ||
2164 | TP_STRUCT__entry( | ||
2165 | WIPHY_ENTRY | ||
2166 | NETDEV_ENTRY | ||
2167 | MAC_ENTRY(peer) | ||
2168 | __field(enum nl80211_tdls_operation, oper) | ||
2169 | __field(u16, reason_code) | ||
2170 | ), | ||
2171 | TP_fast_assign( | ||
2172 | WIPHY_ASSIGN; | ||
2173 | NETDEV_ASSIGN; | ||
2174 | MAC_ASSIGN(peer, peer); | ||
2175 | __entry->oper = oper; | ||
2176 | __entry->reason_code = reason_code; | ||
2177 | ), | ||
2178 | TP_printk(WIPHY_PR_FMT ", " NETDEV_PR_FMT ", peer: " MAC_PR_FMT ", oper: %d, reason_code %u", | ||
2179 | WIPHY_PR_ARG, NETDEV_PR_ARG, MAC_PR_ARG(peer), __entry->oper, | ||
2180 | __entry->reason_code) | ||
2181 | ); | ||
2182 | |||
2160 | TRACE_EVENT(cfg80211_scan_done, | 2183 | TRACE_EVENT(cfg80211_scan_done, |
2161 | TP_PROTO(struct cfg80211_scan_request *request, bool aborted), | 2184 | TP_PROTO(struct cfg80211_scan_request *request, bool aborted), |
2162 | TP_ARGS(request, aborted), | 2185 | TP_ARGS(request, aborted), |