openwrtv3/package/broadcom-wl/patches/003-compat-2.6.35.patch
Hauke Mehrtens 3dbb8c5088 brcm47xx: add fallback sprom for pci devices without an own sprom.
If there is no sprom on an ssb based pci device on the brcm47xx
architecture ssb now asks the architecture code to look into the nvram
to get some sprom data for this device. Now we are able to read out
pci/1/1/ foo or pci/1/3/ foo config options.

This will fix some problems where the wireless devices does not got an
mac address and the following message was show:
ssb: WARNING: Invalid SPROM CRC (corrupt SPROM)

SVN-Revision: 26801
2011-05-01 20:28:35 +00:00

38 lines
1.1 KiB
Diff

--- a/driver/wl_linux.c
+++ b/driver/wl_linux.c
@@ -2082,7 +2082,11 @@ static void
_wl_set_multicast_list(struct net_device *dev)
{
wl_info_t *wl;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
struct dev_mc_list *mclist;
+#else
+ struct netdev_hw_addr *ha;
+#endif
int i;
if (!dev)
@@ -2098,14 +2102,23 @@ _wl_set_multicast_list(struct net_device
wl->pub->allmulti = (dev->flags & IFF_ALLMULTI)? TRUE: FALSE;
/* copy the list of multicasts into our private table */
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
for (i = 0, mclist = dev->mc_list; mclist && (i < dev->mc_count);
i++, mclist = mclist->next) {
+#else
+ netdev_for_each_mc_addr(ha, dev) {
+#endif
if (i >= MAXMULTILIST) {
wl->pub->allmulti = TRUE;
i = 0;
break;
}
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,34)
wl->pub->multicast[i] = *((struct ether_addr*) mclist->dmi_addr);
+#else
+ wl->pub->multicast[i] = *((struct ether_addr*) ha->addr);
+ i++;
+#endif
}
wl->pub->nmulticast = i;
wlc_set(wl->wlc, WLC_SET_PROMISC, (dev->flags & IFF_PROMISC));