summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-01-20 10:32:41 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-01-24 09:41:29 -0500
commit887da9176e011a044b12ec0deff62df5faadd67c (patch)
treecc90391e20d8d1b25e8418abde6b10105300628c
parenta65240c1013222dbf41166c8b2c5ed2720c807c3 (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.c1
-rw-r--r--include/net/mac80211.h1
-rw-r--r--net/mac80211/driver-ops.h5
-rw-r--r--net/mac80211/mlme.c4
-rw-r--r--net/mac80211/trace.h9
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
1158static void iwlagn_mac_rssi_callback(struct ieee80211_hw *hw, 1158static 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
847static inline void drv_rssi_callback(struct ieee80211_local *local, 847static 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
1190TRACE_EVENT(drv_rssi_callback, 1190TRACE_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