openwrtv3/package/kernel/broadcom-wl/patches/012-compat-3.10.patch
Hauke Mehrtens 697f4a19e5 broadcom-wl: fix crash when starting multiple virtual interfaces
When enabling multiple VIFS, the driver sometimes crashes.  The frequency
of the crash increases as more VIFS are enabled.

Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>

SVN-Revision: 38762
2013-11-11 22:04:26 +00:00

47 lines
1.7 KiB
Diff

--- a/driver/wl_linux.c
+++ b/driver/wl_linux.c
@@ -349,7 +349,7 @@ static void wl_mic_error(wl_info_t *wl,
defined(WL_MONITOR)
static int wl_schedule_task(wl_info_t *wl, void (*fn)(struct wl_task *), void *context);
#endif
-#if defined(CONFIG_PROC_FS)
+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0))
static int wl_read_proc(char *buffer, char **start, off_t offset, int length, int *eof, void *data);
#endif /* defined(CONFIG_PROC_FS) */
#ifdef BCMDBG
@@ -517,7 +517,7 @@ wl_attach(uint16 vendor, uint16 device,
struct net_device *dev;
wl_if_t *wlif;
wl_info_t *wl;
-#if defined(CONFIG_PROC_FS)
+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0))
char tmp[128];
#endif
osl_t *osh;
@@ -664,7 +664,7 @@ wl_attach(uint16 vendor, uint16 device,
WL_ERROR(("wl%d: Error setting MPC variable to 0\n", unit));
}
}
-#if defined(CONFIG_PROC_FS)
+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0))
/* create /proc/net/wl<unit> */
sprintf(tmp, "net/wl%d", wl->pub->unit);
create_proc_read_entry(tmp, 0, 0, wl_read_proc, (void*)wl);
@@ -810,7 +810,7 @@ wl_dbus_disconnect_cb(void *arg)
}
#endif /* BCMDBUS */
-#if defined(CONFIG_PROC_FS)
+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0))
static int
wl_read_proc(char *buffer, char **start, off_t offset, int length, int *eof, void *data)
{
@@ -1149,7 +1149,7 @@ wl_free(wl_info_t *wl)
/* free common resources */
if (wl->wlc) {
-#if defined(CONFIG_PROC_FS)
+#if defined(CONFIG_PROC_FS) && (LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0))
char tmp[128];
/* remove /proc/net/wl<unit> */
sprintf(tmp, "net/wl%d", wl->pub->unit);