diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2013-01-20 10:32:41 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-01-24 09:41:29 -0500 |
commit | 887da9176e011a044b12ec0deff62df5faadd67c (patch) | |
tree | cc90391e20d8d1b25e8418abde6b10105300628c | |
parent | a65240c1013222dbf41166c8b2c5ed2720c807c3 (diff) |
mac80211: provide the vif in rssi_callback
Since drivers can support several BSS / P2P Client
interfaces, the rssi callback needs to inform the driver
about the interface teh rssi event relates to.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/dvm/mac80211.c | 1 | ||||
-rw-r--r-- | include/net/mac80211.h | 1 | ||||
-rw-r--r-- | net/mac80211/driver-ops.h | 5 | ||||
-rw-r--r-- | net/mac80211/mlme.c | 4 | ||||
-rw-r--r-- | net/mac80211/trace.h | 9 |
5 files changed, 13 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/mac80211.c b/drivers/net/wireless/iwlwifi/dvm/mac80211.c index 02fdcea76b21..f16b81d625ad 100644 --- a/drivers/net/wireless/iwlwifi/dvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/dvm/mac80211.c | |||
@@ -1156,6 +1156,7 @@ static int iwlagn_mac_cancel_remain_on_channel(struct ieee80211_hw *hw) | |||
1156 | } | 1156 | } |
1157 | 1157 | ||
1158 | static void iwlagn_mac_rssi_callback(struct ieee80211_hw *hw, | 1158 | static void iwlagn_mac_rssi_callback(struct ieee80211_hw *hw, |
1159 | struct ieee80211_vif *vif, | ||
1159 | enum ieee80211_rssi_event rssi_event) | 1160 | enum ieee80211_rssi_event rssi_event) |
1160 | { | 1161 | { |
1161 | struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); | 1162 | struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index ece5733d113d..5c98d654fc75 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -2633,6 +2633,7 @@ struct ieee80211_ops { | |||
2633 | int (*set_bitrate_mask)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | 2633 | int (*set_bitrate_mask)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, |
2634 | const struct cfg80211_bitrate_mask *mask); | 2634 | const struct cfg80211_bitrate_mask *mask); |
2635 | void (*rssi_callback)(struct ieee80211_hw *hw, | 2635 | void (*rssi_callback)(struct ieee80211_hw *hw, |
2636 | struct ieee80211_vif *vif, | ||
2636 | enum ieee80211_rssi_event rssi_event); | 2637 | enum ieee80211_rssi_event rssi_event); |
2637 | 2638 | ||
2638 | void (*allow_buffered_frames)(struct ieee80211_hw *hw, | 2639 | void (*allow_buffered_frames)(struct ieee80211_hw *hw, |
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index d51afbd614d3..e75f5b9eb24f 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h | |||
@@ -845,11 +845,12 @@ static inline void drv_set_rekey_data(struct ieee80211_local *local, | |||
845 | } | 845 | } |
846 | 846 | ||
847 | static inline void drv_rssi_callback(struct ieee80211_local *local, | 847 | static inline void drv_rssi_callback(struct ieee80211_local *local, |
848 | struct ieee80211_sub_if_data *sdata, | ||
848 | const enum ieee80211_rssi_event event) | 849 | const enum ieee80211_rssi_event event) |
849 | { | 850 | { |
850 | trace_drv_rssi_callback(local, event); | 851 | trace_drv_rssi_callback(local, sdata, event); |
851 | if (local->ops->rssi_callback) | 852 | if (local->ops->rssi_callback) |
852 | local->ops->rssi_callback(&local->hw, event); | 853 | local->ops->rssi_callback(&local->hw, &sdata->vif, event); |
853 | trace_drv_return_void(local); | 854 | trace_drv_return_void(local); |
854 | } | 855 | } |
855 | 856 | ||
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 2d9ef20cd38d..344ef7d47c1a 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -2604,12 +2604,12 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata, | |||
2604 | if (sig > ifmgd->rssi_max_thold && | 2604 | if (sig > ifmgd->rssi_max_thold && |
2605 | (last_sig <= ifmgd->rssi_min_thold || last_sig == 0)) { | 2605 | (last_sig <= ifmgd->rssi_min_thold || last_sig == 0)) { |
2606 | ifmgd->last_ave_beacon_signal = sig; | 2606 | ifmgd->last_ave_beacon_signal = sig; |
2607 | drv_rssi_callback(local, RSSI_EVENT_HIGH); | 2607 | drv_rssi_callback(local, sdata, RSSI_EVENT_HIGH); |
2608 | } else if (sig < ifmgd->rssi_min_thold && | 2608 | } else if (sig < ifmgd->rssi_min_thold && |
2609 | (last_sig >= ifmgd->rssi_max_thold || | 2609 | (last_sig >= ifmgd->rssi_max_thold || |
2610 | last_sig == 0)) { | 2610 | last_sig == 0)) { |
2611 | ifmgd->last_ave_beacon_signal = sig; | 2611 | ifmgd->last_ave_beacon_signal = sig; |
2612 | drv_rssi_callback(local, RSSI_EVENT_LOW); | 2612 | drv_rssi_callback(local, sdata, RSSI_EVENT_LOW); |
2613 | } | 2613 | } |
2614 | } | 2614 | } |
2615 | 2615 | ||
diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h index 2a2c2e20307d..6ca53d64cb28 100644 --- a/net/mac80211/trace.h +++ b/net/mac80211/trace.h | |||
@@ -1189,23 +1189,26 @@ TRACE_EVENT(drv_set_rekey_data, | |||
1189 | 1189 | ||
1190 | TRACE_EVENT(drv_rssi_callback, | 1190 | TRACE_EVENT(drv_rssi_callback, |
1191 | TP_PROTO(struct ieee80211_local *local, | 1191 | TP_PROTO(struct ieee80211_local *local, |
1192 | struct ieee80211_sub_if_data *sdata, | ||
1192 | enum ieee80211_rssi_event rssi_event), | 1193 | enum ieee80211_rssi_event rssi_event), |
1193 | 1194 | ||
1194 | TP_ARGS(local, rssi_event), | 1195 | TP_ARGS(local, sdata, rssi_event), |
1195 | 1196 | ||
1196 | TP_STRUCT__entry( | 1197 | TP_STRUCT__entry( |
1197 | LOCAL_ENTRY | 1198 | LOCAL_ENTRY |
1199 | VIF_ENTRY | ||
1198 | __field(u32, rssi_event) | 1200 | __field(u32, rssi_event) |
1199 | ), | 1201 | ), |
1200 | 1202 | ||
1201 | TP_fast_assign( | 1203 | TP_fast_assign( |
1202 | LOCAL_ASSIGN; | 1204 | LOCAL_ASSIGN; |
1205 | VIF_ASSIGN; | ||
1203 | __entry->rssi_event = rssi_event; | 1206 | __entry->rssi_event = rssi_event; |
1204 | ), | 1207 | ), |
1205 | 1208 | ||
1206 | TP_printk( | 1209 | TP_printk( |
1207 | LOCAL_PR_FMT " rssi_event:%d", | 1210 | LOCAL_PR_FMT VIF_PR_FMT " rssi_event:%d", |
1208 | LOCAL_PR_ARG, __entry->rssi_event | 1211 | LOCAL_PR_ARG, VIF_PR_ARG, __entry->rssi_event |
1209 | ) | 1212 | ) |
1210 | ); | 1213 | ); |
1211 | 1214 | ||