Comment 33 for bug 1097519

Revision history for this message
Dennis New (dennisn) wrote : Re: Wrong driver used for older Broadcom chipsets

So, after a bit of hacking around, I was able to get my BCM4313 working with the latest bcmwl-6.30.223.30 and the latest kernel 3.10.0.

I think the main problem that I originally had, and that others
( https://mail.gnome.org/archives/networkmanager-list/2013-February/msg00125.html )
started having was due to the bcmwl driver changing to use API=CFG80211 (the current make default) instead of API=WEXT, which I assume it was using before? Well, switching back to WEXT made things work for me.

Getting it to compile with 3.10.0 was an additional tangential hurdle -- the function "create_proc_entry" no longer exists. Perhaps something like this should do the trick:

--- wl_linux.c 2013-07-31 21:28:10.000000000 -0400
+++ /sloppyhacked/wl_linux.c 2013-07-31 23:18:22.000000000 -0400
@@ -3461,19 +3461,27 @@
        return length;
 }

+static const struct file_operations wlp_fops = {
+ .owner = THIS_MODULE,
+ .read = wl_proc_read,
+ .write = wl_proc_write
+};
+
 static int
 wl_reg_proc_entry(wl_info_t *wl)
 {
        char tmp[32];
        sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit);
- if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) {
+ if ((wl->proc_entry = proc_create(tmp, 0644, NULL, &wlp_fops)) == NULL) {
                WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp));
                ASSERT(0);
                return -1;
        }
+/*
        wl->proc_entry->read_proc = wl_proc_read;
        wl->proc_entry->write_proc = wl_proc_write;
        wl->proc_entry->data = wl;
+*/
        return 0;
 }
 #ifdef WLOFFLD