Re: [PATCH net-next-2.6 1/4] net: introduce mc list helpers
From: Jiri Pirko <hidden>
Date: 2009-10-22 14:28:18
Also in:
linux-media
Thu, Oct 22, 2009 at 04:18:32PM CEST, bhutchings@solarflare.com wrote:
On Thu, 2009-10-22 at 15:52 +0200, Jiri Pirko wrote:quoted
This helpers should be used by network drivers to access to netdev multicast lists.[...]quoted
+static inline void netdev_mc_walk(struct net_device *dev, + void (*func)(void *, unsigned char *), + void *data) +{ + struct dev_addr_list *mclist; + int i; + + for (i = 0, mclist = dev->mc_list; mclist && i < dev->mc_count; + i++, mclist = mclist->next) + func(data, mclist->dmi_addr); +}[...] We usually implement iteration as macros so that any context doesn't have to be squeezed through a single untyped (void *) variable. A macro for this would look something like: #define netdev_for_each_mc_addr(dev, addr) \ for (addr = (dev)->mc_list ? (dev)->mc_list->dmi_addr : NULL; \ addr; \ addr = (container_of(addr, struct dev_addr_list, dmi_addr)->next ? \ container_of(addr, struct dev_addr_list, dmi_addr)->next->dmi_addr : \ NULL))
I admit this would look better. Going to change this and then repost. Thanks Ben
Once you change the list type this can presumably be made less ugly. Ben. -- Ben Hutchings, Senior Software Engineer, Solarflare Communications Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.