diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-03-05 16:18:41 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-03-06 15:16:05 -0500 |
commit | 804483e90794256f9ed53e795ffbf1e94de237c8 (patch) | |
tree | 22a4d8ade674bb42aaf4d3e878dfd6a73b618dcc /net/wireless | |
parent | 769009b89d8c29c410a99eee3cd63764b1fff869 (diff) |
cfg80211/mac80211: report signal strength for mgmt frames
Add the signal strength (in dBm only for now) to
frames that are received via nl80211's various
frame APIs.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Acked-by: Kalle Valo <kvalo@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/mlme.c | 7 | ||||
-rw-r--r-- | net/wireless/nl80211.c | 9 | ||||
-rw-r--r-- | net/wireless/nl80211.h | 3 |
3 files changed, 13 insertions, 6 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index fb1e72179117..f5a7ac3a0939 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c | |||
@@ -814,8 +814,8 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, | |||
814 | cookie); | 814 | cookie); |
815 | } | 815 | } |
816 | 816 | ||
817 | bool cfg80211_rx_mgmt(struct net_device *dev, int freq, const u8 *buf, | 817 | bool cfg80211_rx_mgmt(struct net_device *dev, int freq, int sig_mbm, |
818 | size_t len, gfp_t gfp) | 818 | const u8 *buf, size_t len, gfp_t gfp) |
819 | { | 819 | { |
820 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 820 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
821 | struct wiphy *wiphy = wdev->wiphy; | 821 | struct wiphy *wiphy = wdev->wiphy; |
@@ -854,7 +854,8 @@ bool cfg80211_rx_mgmt(struct net_device *dev, int freq, const u8 *buf, | |||
854 | /* found match! */ | 854 | /* found match! */ |
855 | 855 | ||
856 | /* Indicate the received Action frame to user space */ | 856 | /* Indicate the received Action frame to user space */ |
857 | if (nl80211_send_mgmt(rdev, dev, reg->nlpid, freq, | 857 | if (nl80211_send_mgmt(rdev, dev, reg->nlpid, |
858 | freq, sig_mbm, | ||
858 | buf, len, gfp)) | 859 | buf, len, gfp)) |
859 | continue; | 860 | continue; |
860 | 861 | ||
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 4b6afc338aac..39dbdf2adb12 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -7686,7 +7686,8 @@ bool nl80211_unexpected_4addr_frame(struct net_device *dev, | |||
7686 | 7686 | ||
7687 | int nl80211_send_mgmt(struct cfg80211_registered_device *rdev, | 7687 | int nl80211_send_mgmt(struct cfg80211_registered_device *rdev, |
7688 | struct net_device *netdev, u32 nlpid, | 7688 | struct net_device *netdev, u32 nlpid, |
7689 | int freq, const u8 *buf, size_t len, gfp_t gfp) | 7689 | int freq, int sig_dbm, |
7690 | const u8 *buf, size_t len, gfp_t gfp) | ||
7690 | { | 7691 | { |
7691 | struct sk_buff *msg; | 7692 | struct sk_buff *msg; |
7692 | void *hdr; | 7693 | void *hdr; |
@@ -7704,6 +7705,8 @@ int nl80211_send_mgmt(struct cfg80211_registered_device *rdev, | |||
7704 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx); | 7705 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx); |
7705 | NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex); | 7706 | NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, netdev->ifindex); |
7706 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); | 7707 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); |
7708 | if (sig_dbm) | ||
7709 | NLA_PUT_U32(msg, NL80211_ATTR_RX_SIGNAL_DBM, sig_dbm); | ||
7707 | NLA_PUT(msg, NL80211_ATTR_FRAME, len, buf); | 7710 | NLA_PUT(msg, NL80211_ATTR_FRAME, len, buf); |
7708 | 7711 | ||
7709 | genlmsg_end(msg, hdr); | 7712 | genlmsg_end(msg, hdr); |
@@ -7965,7 +7968,7 @@ EXPORT_SYMBOL(cfg80211_probe_status); | |||
7965 | 7968 | ||
7966 | void cfg80211_report_obss_beacon(struct wiphy *wiphy, | 7969 | void cfg80211_report_obss_beacon(struct wiphy *wiphy, |
7967 | const u8 *frame, size_t len, | 7970 | const u8 *frame, size_t len, |
7968 | int freq, gfp_t gfp) | 7971 | int freq, int sig_dbm, gfp_t gfp) |
7969 | { | 7972 | { |
7970 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); | 7973 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); |
7971 | struct sk_buff *msg; | 7974 | struct sk_buff *msg; |
@@ -7988,6 +7991,8 @@ void cfg80211_report_obss_beacon(struct wiphy *wiphy, | |||
7988 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx); | 7991 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY, rdev->wiphy_idx); |
7989 | if (freq) | 7992 | if (freq) |
7990 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); | 7993 | NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); |
7994 | if (sig_dbm) | ||
7995 | NLA_PUT_U32(msg, NL80211_ATTR_RX_SIGNAL_DBM, sig_dbm); | ||
7991 | NLA_PUT(msg, NL80211_ATTR_FRAME, len, frame); | 7996 | NLA_PUT(msg, NL80211_ATTR_FRAME, len, frame); |
7992 | 7997 | ||
7993 | genlmsg_end(msg, hdr); | 7998 | genlmsg_end(msg, hdr); |
diff --git a/net/wireless/nl80211.h b/net/wireless/nl80211.h index 12bf4d185abe..4ffe50df9f31 100644 --- a/net/wireless/nl80211.h +++ b/net/wireless/nl80211.h | |||
@@ -92,7 +92,8 @@ void nl80211_send_sta_del_event(struct cfg80211_registered_device *rdev, | |||
92 | gfp_t gfp); | 92 | gfp_t gfp); |
93 | 93 | ||
94 | int nl80211_send_mgmt(struct cfg80211_registered_device *rdev, | 94 | int nl80211_send_mgmt(struct cfg80211_registered_device *rdev, |
95 | struct net_device *netdev, u32 nlpid, int freq, | 95 | struct net_device *netdev, u32 nlpid, |
96 | int freq, int sig_dbm, | ||
96 | const u8 *buf, size_t len, gfp_t gfp); | 97 | const u8 *buf, size_t len, gfp_t gfp); |
97 | void nl80211_send_mgmt_tx_status(struct cfg80211_registered_device *rdev, | 98 | void nl80211_send_mgmt_tx_status(struct cfg80211_registered_device *rdev, |
98 | struct net_device *netdev, u64 cookie, | 99 | struct net_device *netdev, u64 cookie, |