1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -800,8 +800,13 @@ static void ieee80211_do_stop(struct iee
if (sdata->dev) {
netif_addr_lock_bh(sdata->dev);
spin_lock_bh(&local->filter_lock);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
__hw_addr_unsync(&local->mc_list, &sdata->dev->mc,
sdata->dev->addr_len);
+#else
+ __dev_addr_unsync(&local->mc_list, &local->mc_count,
+ &sdata->dev->mc_list, &sdata->dev->mc_count);
+#endif
spin_unlock_bh(&local->filter_lock);
netif_addr_unlock_bh(sdata->dev);
}
@@ -1015,10 +1020,20 @@ static void ieee80211_set_multicast_list
if (sdata->vif.type != NL80211_IFTYPE_MONITOR &&
sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
sdata->vif.type != NL80211_IFTYPE_AP)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
drv_set_multicast_list(local, sdata, &dev->mc);
+#else
+ drv_set_multicast_list(local, sdata, dev->mc_count,
+ dev->mc_list);
+#endif
spin_lock_bh(&local->filter_lock);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
__hw_addr_sync(&local->mc_list, &dev->mc, dev->addr_len);
+#else
+ __dev_addr_sync(&local->mc_list, &local->mc_count,
+ &dev->mc_list, &dev->mc_count);
+#endif
spin_unlock_bh(&local->filter_lock);
ieee80211_queue_work(&local->hw, &local->reconfig_filter);
}
|