On Wed, 2009-06-17 at 01:10 +0200, Johannes Berg wrote: > I'd like to get this patch into the .32 tree once it opens > http://johannes.sipsolutions.net/patches/kernel/all/LATEST/NNN-net-core-mc-sync-list.patch +/** + * mc_unsync_from_dev - Remove synchronized addresses from the destination list + * @to: destination list + * @to_count: destination list count + * @from: source device + * + * Remove all addresses that were added to the destination list by + * mc_sync_from_dev(). This function is intended to be called from + * the * dev->stop function of layered software devices. The + * destination list must be locked in whatever way the caller + * manages it. + */ +void mc_unsync_from_dev(struct dev_addr_list **to, int *to_count, + struct net_device *from) +{ + netif_addr_lock_bh(from); + __dev_addr_unsync(to, to_count, + &from->mc_list, &from->mc_count); + netif_addr_unlock_bh(from); +} +EXPORT_SYMBOL(mc_unsync_from_dev); That can't work, of course, because the "to" list needs to be locked _after_ "from" is locked, due mc_sync_from_dev() begin used in ndo_set_multicast_list(). I guess I have to push out all the locking, by just exporting __dev_addr_sync/__dev_addr_unsync. Objections? Better ideas? johannes
Attachment:
signature.asc
Description: This is a digitally signed message part