mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-23 21:37:10 +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.
|
||||
# See /LICENSE for more information.
|
||||
@ -10,7 +10,7 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=broadcom-wl
|
||||
PKG_VERSION:=4.150.10.5.3
|
||||
PKG_RELEASE:=7
|
||||
PKG_RELEASE:=8
|
||||
WLC_VERSION:=0.2
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
|
@ -38,7 +38,7 @@
|
||||
#include <wlioctl.h>
|
||||
|
||||
char buf[WLC_IOCTL_MAXLEN];
|
||||
static struct net_device *dev;
|
||||
static struct net_device *dev = NULL;
|
||||
#ifndef DEBUG
|
||||
static int random = 1;
|
||||
#endif
|
||||
@ -981,10 +981,15 @@ static int __init wlcompat_init()
|
||||
int found = 0, i;
|
||||
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))) {
|
||||
if ((wl_ioctl(dev, WLC_GET_MAGIC, &i, sizeof(i)) == 0) && (i == WLC_IOCTL_MAGIC))
|
||||
found = 1;
|
||||
devname[2]++;
|
||||
else {
|
||||
dev_put(dev);
|
||||
devname[2]++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1026,6 +1031,9 @@ static void __exit wlcompat_exit()
|
||||
dev->wireless_handlers = NULL;
|
||||
#endif
|
||||
dev->do_ioctl = old_ioctl;
|
||||
|
||||
dev_put(dev);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user