Package: broadcom-sta-source
Version: 5.60.48.36-2
Severity: important
Tags: patch

Hello,
m-a a-i broadcom-sta does not succeed.

I applied the patch given below for sucessful compilation. But this results in 
unusable WIFI. Attached inline is a sample session that should demonstrate my 
complaint.

<SessionLog>
root@host:/# iwlist wlan0 scanning 
wlan0     Interface doesn't support scanning : Network is down
root@host:/# iwconfig wlan0 power on 
Error for wireless request "Set Power Management" (8B2C) :
    SET failed on device wlan0 ; Operation not supported.
root@host:/# ifconfig wlan0 up 
SIOCSIFFLAGS: No such file or directory
root@host:/# ifup wlan0 
Ignoring unknown interface wlan0=wlan0.
root@host:/# mii-tool 
eth0: negotiated 100baseTx-FD, link ok
root@host:/# mii-tool wlan0 
SIOCGMIIPHY on 'wlan0' failed: Operation not supported
</SessionLog>

Regards,
Harish

-- System Information:
Debian Release: 6.0.3
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-0.bpo.2-686-pae (SMP w/2 CPU cores)
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages broadcom-sta-source depends on:
ii  bzip2                     1.0.5-6        high-quality block-sorting file co
ii  debhelper                 8.9.11~bpo60+1 helper programs for debian/rules
ii  make                      3.81-8         An utility for Directing compilati
ii  quilt                     0.48-7         Tool to work with series of patche

Versions of packages broadcom-sta-source recommends:
ii  module-assistant              0.11.3     tool to make module package creati

Versions of packages broadcom-sta-source suggests:
ii  wireless-tools                30~pre9-5  Tools for manipulating Linux Wirel

-- no debconf information
diff --git a/i386/src/wl/sys/wl_linux.c b/i386/src/wl/sys/wl_linux.c
index dbd6e89..a0f785d 100644
--- a/i386/src/wl/sys/wl_linux.c
+++ b/i386/src/wl/sys/wl_linux.c
@@ -216,7 +216,7 @@ static const struct net_device_ops wl_netdev_ops =
 	.ndo_start_xmit = wl_start,
 	.ndo_get_stats = wl_get_stats,
 	.ndo_set_mac_address = wl_set_mac_address,
-	.ndo_set_multicast_list = wl_set_multicast_list,
+	.ndo_set_rx_mode = wl_set_multicast_list,
 	.ndo_do_ioctl = wl_ioctl
 };
 #endif 
@@ -1418,9 +1418,13 @@ 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;
 	int i;
-
+#else
+	struct netdev_hw_addr *ha;
+	int i=0;
+#endif
 	if (!dev)
 		return;
 	wl = WL_INFO(dev);
@@ -1431,15 +1435,22 @@ _wl_set_multicast_list(struct net_device *dev)
 
 	if (wl->pub->up) {
 		wl->pub->allmulti = (dev->flags & IFF_ALLMULTI)? TRUE: FALSE;
-
+#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);
+#endif
 		}
 		wl->pub->nmulticast = i;
 		wlc_set(wl->wlc, WLC_SET_PROMISC, (dev->flags & IFF_PROMISC));

Reply via email to