Thu, Oct 22, 2009 at 04:18:32PM CEST, bhutchings@xxxxxxxxxxxxxx wrote: >On Thu, 2009-10-22 at 15:52 +0200, Jiri Pirko wrote: >> This helpers should be used by network drivers to access to netdev >> multicast lists. >[...] >> +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. > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html