mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-03 21:09:42 +02:00
[brcm-2.4] fix wlcompat so that the wl module can be unloaded
This patch was created on 8.09.2 but it also applies to Backfire I found that I couldn't unload the broadcom wl driver, wlcompat didn't correctly release/decrement the device pointer, This patch cleans that up I wanted to be able to remove/install the wl driver so that I could get out of monitor mode without rebooting Signed-off-by: Chris Martin <chris@martin.cc> git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@25671 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
167c9d4a48
commit
e6e6f69066
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Copyright (C) 2006-2010 OpenWrt.org
|
# Copyright (C) 2006-2011 OpenWrt.org
|
||||||
#
|
#
|
||||||
# This is free software, licensed under the GNU General Public License v2.
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
# See /LICENSE for more information.
|
# See /LICENSE for more information.
|
||||||
@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||||||
|
|
||||||
PKG_NAME:=broadcom-wl
|
PKG_NAME:=broadcom-wl
|
||||||
PKG_VERSION:=4.150.10.5.3
|
PKG_VERSION:=4.150.10.5.3
|
||||||
PKG_RELEASE:=7
|
PKG_RELEASE:=8
|
||||||
WLC_VERSION:=0.2
|
WLC_VERSION:=0.2
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include <wlioctl.h>
|
#include <wlioctl.h>
|
||||||
|
|
||||||
char buf[WLC_IOCTL_MAXLEN];
|
char buf[WLC_IOCTL_MAXLEN];
|
||||||
static struct net_device *dev;
|
static struct net_device *dev = NULL;
|
||||||
#ifndef DEBUG
|
#ifndef DEBUG
|
||||||
static int random = 1;
|
static int random = 1;
|
||||||
#endif
|
#endif
|
||||||
@ -981,10 +981,15 @@ static int __init wlcompat_init()
|
|||||||
int found = 0, i;
|
int found = 0, i;
|
||||||
char devname[4] = "wl0";
|
char devname[4] = "wl0";
|
||||||
|
|
||||||
|
/* calling dev_get_by_name() will inc the open_counter in dev
|
||||||
|
* we must put it back with dev_put() when we are finished to dec the counter */
|
||||||
while (!found && (dev = dev_get_by_name(devname))) {
|
while (!found && (dev = dev_get_by_name(devname))) {
|
||||||
if ((wl_ioctl(dev, WLC_GET_MAGIC, &i, sizeof(i)) == 0) && (i == WLC_IOCTL_MAGIC))
|
if ((wl_ioctl(dev, WLC_GET_MAGIC, &i, sizeof(i)) == 0) && (i == WLC_IOCTL_MAGIC))
|
||||||
found = 1;
|
found = 1;
|
||||||
devname[2]++;
|
else {
|
||||||
|
dev_put(dev);
|
||||||
|
devname[2]++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1026,6 +1031,9 @@ static void __exit wlcompat_exit()
|
|||||||
dev->wireless_handlers = NULL;
|
dev->wireless_handlers = NULL;
|
||||||
#endif
|
#endif
|
||||||
dev->do_ioctl = old_ioctl;
|
dev->do_ioctl = old_ioctl;
|
||||||
|
|
||||||
|
dev_put(dev);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user