> To implement the multicast list callback in mac80211 we need to
> do partial list iteration. Since I want to convert the interface
> list to an RCU list, I need a new list walking primitive:
> list_for_each_entry_continue_rcu().
>
> Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
> Cc:
linux-kernel@vger.kernel.org
> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: Randy Dunlap <randy.dunlap@oracle.com>
> Cc: Pavel Emelianov <xemul@openvz.org>
> Cc: Zach Brown <zach.brown@oracle.com>
> Cc: Dave Jones <davej@redhat.com>
> Cc: Oleg Nesterov <oleg@tv-sign.ru>
>
> ---
> How do we want to handle this? Is it ok to push this via net-2.6.24 so
> we can merge it along with the fix that needs it?
>
> include/linux/list.h | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> --- wireless-dev.orig/include/linux/list.h 2007-09-07 00:16:07.374444290 +0200
> +++ wireless-dev/include/linux/list.h 2007-08-29 21:08:14.802054000 +0200
> @@ -665,6 +665,26 @@ static inline void list_splice_init_rcu(
> prefetch(rcu_dereference((pos))->next), (pos) != (head); \
> (pos) = (pos)->next)
>
> +
> +/**
> + * list_for_each_entry_continue_rcu - continue iteration over rcu list
> + * @pos: the type * to use as a loop cursor.
> + * @head: the head for your list.
> + * @member: the name of the list_struct within the struct.
> + *
> + * Continue to iterate over rcu list of given type, continuing after
> + * the current position.