Search Linux Wireless

[RFC 5/5] mac80211: bind prepare_multicast callback to subif.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Driver is now aware for which virtual interace the multicast
is being configured.

ieee80211_sub_if_data *sdata parameter is added to
drv_prepare_multicast.

vieee80211_vif *vif parameter is added to driver's
prepare_multicast callback.

Signed-off-by: Lukasz Kucharczyk <lukasz.kucharczyk@xxxxxxxxx>
---
 include/net/mac80211.h      |    1 +
 net/mac80211/driver-ops.h   |    6 ++++--
 net/mac80211/driver-trace.h |   12 ++++++++----
 net/mac80211/main.c         |    2 +-
 4 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index c515a6f..39ebba0 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -2280,6 +2280,7 @@ struct ieee80211_ops {
 				 u32 changed);
 
 	u64 (*prepare_multicast)(struct ieee80211_hw *hw,
+				 struct ieee80211_vif *vif,
 				 struct netdev_hw_addr_list *mc_list);
 	void (*configure_filter)(struct ieee80211_hw *hw,
 				 struct ieee80211_vif *vif,
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index cfc4a35..e27dd48 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -222,14 +222,16 @@ static inline void drv_bss_info_changed(struct ieee80211_local *local,
 }
 
 static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
+					struct ieee80211_sub_if_data *sdata,
 					struct netdev_hw_addr_list *mc_list)
 {
 	u64 ret = 0;
 
-	trace_drv_prepare_multicast(local, mc_list->count);
+	trace_drv_prepare_multicast(local, sdata, mc_list->count);
 
 	if (local->ops->prepare_multicast)
-		ret = local->ops->prepare_multicast(&local->hw, mc_list);
+		ret = local->ops->prepare_multicast(&local->hw, &sdata->vif,
+						    mc_list);
 
 	trace_drv_return_u64(local, ret);
 
diff --git a/net/mac80211/driver-trace.h b/net/mac80211/driver-trace.h
index ad99338..2226816 100644
--- a/net/mac80211/driver-trace.h
+++ b/net/mac80211/driver-trace.h
@@ -338,23 +338,27 @@ TRACE_EVENT(drv_bss_info_changed,
 );
 
 TRACE_EVENT(drv_prepare_multicast,
-	TP_PROTO(struct ieee80211_local *local, int mc_count),
+	TP_PROTO(struct ieee80211_local *local,
+		 struct ieee80211_sub_if_data *sdata,
+		 int mc_count),
 
-	TP_ARGS(local, mc_count),
+	TP_ARGS(local, sdata, mc_count),
 
 	TP_STRUCT__entry(
 		LOCAL_ENTRY
+		VIF_ENTRY
 		__field(int, mc_count)
 	),
 
 	TP_fast_assign(
 		LOCAL_ASSIGN;
+		VIF_ASSIGN;
 		__entry->mc_count = mc_count;
 	),
 
 	TP_printk(
-		LOCAL_PR_FMT " prepare mc (%d)",
-		LOCAL_PR_ARG, __entry->mc_count
+		LOCAL_PR_FMT VIF_PR_FMT " prepare mc (%d)",
+		LOCAL_PR_ARG, VIF_PR_ARG, __entry->mc_count
 	)
 );
 
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index b00eb59..6541c74 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -67,7 +67,7 @@ void ieee80211_configure_filter(struct ieee80211_sub_if_data *sdata)
 	spin_lock_bh(&sdata->filter_lock);
 	changed_flags = sdata->filter_flags ^ new_flags;
 
-	mc = drv_prepare_multicast(local, &sdata->mc_list);
+	mc = drv_prepare_multicast(local, sdata, &sdata->mc_list);
 	spin_unlock_bh(&sdata->filter_lock);
 
 	/* be a bit nasty */
-- 
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux