diff -u bcmwl-5.60.48.36+bdcom/debian/dkms.conf.in bcmwl-5.60.48.36+bdcom/debian/dkms.conf.in --- bcmwl-5.60.48.36+bdcom/debian/dkms.conf.in +++ bcmwl-5.60.48.36+bdcom/debian/dkms.conf.in @@ -9,4 +9,7 @@ PATCH[1]="0002-Makefile.patch" PATCH[2]="0003-autoconf.h.patch" +# Needed for 2.6.35 and later +PATCH[3]="0004-mclist.patch" +PATCH_MATCH[3]="^2.6.(3[5-9]|[4-9][0-9])" AUTOINSTALL="yes" diff -u bcmwl-5.60.48.36+bdcom/debian/changelog bcmwl-5.60.48.36+bdcom/debian/changelog --- bcmwl-5.60.48.36+bdcom/debian/changelog +++ bcmwl-5.60.48.36+bdcom/debian/changelog @@ -1,3 +1,12 @@ +bcmwl (5.60.48.36+bdcom-0ubuntu5) maverick; urgency=low + + * debian/patches/0004-mclist.patch: + - Switch over to multicast iterator functions for kernels v2.6.35 and + later. This fixes module building on v2.6.35-1.1. Conditionalise + the patch to support older kernels. (LP: #590924) + + -- Andy Whitcroft Tue, 08 Jun 2010 11:19:05 +0100 + bcmwl (5.60.48.36+bdcom-0ubuntu4) maverick; urgency=low * debian/patches/0003-autoconf.h.patch: only in patch2: unchanged: --- bcmwl-5.60.48.36+bdcom.orig/debian/patches/0004-mclist.patch +++ bcmwl-5.60.48.36+bdcom/debian/patches/0004-mclist.patch @@ -0,0 +1,30 @@ +--- x/src/wl/sys/wl_linux.c- 2010-06-08 10:26:17.320092425 +0100 ++++ x/src/wl/sys/wl_linux.c 2010-06-08 10:42:16.824567775 +0100 +@@ -1416,7 +1416,7 @@ + _wl_set_multicast_list(struct net_device *dev) + { + wl_info_t *wl; +- struct dev_mc_list *mclist; ++ struct netdev_hw_addr *ha; + int i; + + if (!dev) +@@ -1430,14 +1430,15 @@ + if (wl->pub->up) { + wl->pub->allmulti = (dev->flags & IFF_ALLMULTI)? TRUE: FALSE; + +- for (i = 0, mclist = dev->mc_list; mclist && (i < dev->mc_count); +- i++, mclist = mclist->next) { ++ i = 0; ++ netdev_for_each_mc_addr(ha, dev) { + if (i >= MAXMULTILIST) { + wl->pub->allmulti = TRUE; + i = 0; + break; + } +- wl->pub->multicast[i] = *((struct ether_addr*) mclist->dmi_addr); ++ wl->pub->multicast[i] = *((struct ether_addr*)ha->addr); ++ i++; + } + wl->pub->nmulticast = i; + wlc_set(wl->wlc, WLC_SET_PROMISC, (dev->flags & IFF_PROMISC));