rtl8192s_usb: Fix various bugs
svn path=/dists/sid/linux-2.6/; revision=15929
This commit is contained in:
parent
186b3c8352
commit
5e7f08b2cc
|
@ -46,6 +46,13 @@ linux-2.6 (2.6.32-16) UNRELEASED; urgency=low
|
||||||
* Add drm changes from stable 2.6.33.6-rc1
|
* Add drm changes from stable 2.6.33.6-rc1
|
||||||
* [ia64, powerpc, sparc, x86] Enable KPROBES and KRETPROBES
|
* [ia64, powerpc, sparc, x86] Enable KPROBES and KRETPROBES
|
||||||
(Closes: #584130)
|
(Closes: #584130)
|
||||||
|
* rtl8192s_usb: Fix various bugs
|
||||||
|
- Check for skb allocation failure in 2 more places
|
||||||
|
- Update LED control code
|
||||||
|
- Clean up in case of an error in module initialisation
|
||||||
|
- Rename and remove proc directories correctly if an interface is
|
||||||
|
not called wlan0 (Closes: #582972)
|
||||||
|
- Correct device ID table (Closes: #584945, #587985)
|
||||||
|
|
||||||
[ Aurelien Jarno ]
|
[ Aurelien Jarno ]
|
||||||
* [sh4] fix sh_tmu clocksource following recent nohz changes.
|
* [sh4] fix sh_tmu clocksource following recent nohz changes.
|
||||||
|
|
104
debian/patches/bugfix/all/rtl8192su-Clean-up-in-case-of-an-error-in-mo.patch
vendored
Normal file
104
debian/patches/bugfix/all/rtl8192su-Clean-up-in-case-of-an-error-in-mo.patch
vendored
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
From: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
Date: Tue, 25 May 2010 04:20:30 +0100
|
||||||
|
Subject: [PATCH] Staging: rtl8192su: Clean up in case of an error in module initialisation
|
||||||
|
|
||||||
|
commit 9a3dfa0555130952517b9a9c3918729495aa709a upstream.
|
||||||
|
|
||||||
|
Currently various resources may be leaked in case of an error.
|
||||||
|
|
||||||
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||||
|
---
|
||||||
|
drivers/staging/rtl8192su/r8192U_core.c | 43 ++++++++++++++++++++++++++-----
|
||||||
|
1 files changed, 36 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192U_core.c b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
index 447d647..1b4ff90 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
@@ -990,10 +990,11 @@ static int proc_get_stats_rx(char *page, char **start,
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
-void rtl8192_proc_module_init(void)
|
||||||
|
+int rtl8192_proc_module_init(void)
|
||||||
|
{
|
||||||
|
RT_TRACE(COMP_INIT, "Initializing proc filesystem");
|
||||||
|
rtl8192_proc=create_proc_entry(RTL819xU_MODULE_NAME, S_IFDIR, init_net.proc_net);
|
||||||
|
+ return rtl8192_proc ? 0 : -ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -7473,35 +7474,63 @@ static int __init rtl8192_usb_module_init(void)
|
||||||
|
ret = ieee80211_crypto_init();
|
||||||
|
if (ret) {
|
||||||
|
printk(KERN_ERR "ieee80211_crypto_init() failed %d\n", ret);
|
||||||
|
- return ret;
|
||||||
|
+ goto fail_crypto;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ieee80211_crypto_tkip_init();
|
||||||
|
if (ret) {
|
||||||
|
printk(KERN_ERR "ieee80211_crypto_tkip_init() failed %d\n",
|
||||||
|
ret);
|
||||||
|
- return ret;
|
||||||
|
+ goto fail_crypto_tkip;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ieee80211_crypto_ccmp_init();
|
||||||
|
if (ret) {
|
||||||
|
printk(KERN_ERR "ieee80211_crypto_ccmp_init() failed %d\n",
|
||||||
|
ret);
|
||||||
|
- return ret;
|
||||||
|
+ goto fail_crypto_ccmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ieee80211_crypto_wep_init();
|
||||||
|
if (ret) {
|
||||||
|
printk(KERN_ERR "ieee80211_crypto_wep_init() failed %d\n", ret);
|
||||||
|
- return ret;
|
||||||
|
+ goto fail_crypto_wep;
|
||||||
|
}
|
||||||
|
|
||||||
|
printk(KERN_INFO "\nLinux kernel driver for RTL8192 based WLAN cards\n");
|
||||||
|
printk(KERN_INFO "Copyright (c) 2007-2008, Realsil Wlan\n");
|
||||||
|
RT_TRACE(COMP_INIT, "Initializing module");
|
||||||
|
RT_TRACE(COMP_INIT, "Wireless extensions version %d", WIRELESS_EXT);
|
||||||
|
- rtl8192_proc_module_init();
|
||||||
|
- return usb_register(&rtl8192_usb_driver);
|
||||||
|
+
|
||||||
|
+ ret = rtl8192_proc_module_init();
|
||||||
|
+ if (ret) {
|
||||||
|
+ pr_err("rtl8192_proc_module_init() failed %d\n", ret);
|
||||||
|
+ goto fail_proc;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = usb_register(&rtl8192_usb_driver);
|
||||||
|
+ if (ret) {
|
||||||
|
+ pr_err("usb_register() failed %d\n", ret);
|
||||||
|
+ goto fail_usb;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+fail_usb:
|
||||||
|
+ rtl8192_proc_module_remove();
|
||||||
|
+fail_proc:
|
||||||
|
+ ieee80211_crypto_wep_exit();
|
||||||
|
+fail_crypto_wep:
|
||||||
|
+ ieee80211_crypto_ccmp_exit();
|
||||||
|
+fail_crypto_ccmp:
|
||||||
|
+ ieee80211_crypto_tkip_exit();
|
||||||
|
+fail_crypto_tkip:
|
||||||
|
+ ieee80211_crypto_deinit();
|
||||||
|
+fail_crypto:
|
||||||
|
+#ifdef CONFIG_IEEE80211_DEBUG
|
||||||
|
+ ieee80211_debug_exit();
|
||||||
|
+#endif
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
1.7.1
|
||||||
|
|
107
debian/patches/bugfix/all/rtl8192su-Fix-procfs-code-for-interfaces-not.patch
vendored
Normal file
107
debian/patches/bugfix/all/rtl8192su-Fix-procfs-code-for-interfaces-not.patch
vendored
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
From: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
Date: Tue, 25 May 2010 04:25:57 +0100
|
||||||
|
Subject: [PATCH] Staging: rtl8192su: Fix procfs code for interfaces not named wlan0
|
||||||
|
|
||||||
|
commit 41a38d9e632f7c9ec5ad8fc627567d97f4302c4a upstream.
|
||||||
|
|
||||||
|
The current code creates directories in procfs named after interfaces,
|
||||||
|
but doesn't handle renaming. This can result in name collisions and
|
||||||
|
consequent WARNINGs. It also means that the interface name cannot
|
||||||
|
reliably be used to remove the directory - in fact the current code
|
||||||
|
doesn't even try, and always uses "wlan0"!
|
||||||
|
|
||||||
|
Since the name of a proc_dir_entry is embedded in it, use that when
|
||||||
|
removing it.
|
||||||
|
|
||||||
|
Add a netdev notifier to catch interface renaming, and remove and
|
||||||
|
re-add the directory at this point.
|
||||||
|
|
||||||
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||||
|
---
|
||||||
|
drivers/staging/rtl8192su/r8192U_core.c | 35 ++++++++++++++++++++++++++++--
|
||||||
|
1 files changed, 32 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192U_core.c b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
index 1b4ff90..a076f56 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
|
+#include <linux/notifier.h>
|
||||||
|
|
||||||
|
#undef LOOP_TEST
|
||||||
|
#undef DUMP_RX
|
||||||
|
@@ -161,6 +162,8 @@ MODULE_PARM_DESC(channels," Channel bitmask for specific locales. NYI");
|
||||||
|
static int __devinit rtl8192_usb_probe(struct usb_interface *intf,
|
||||||
|
const struct usb_device_id *id);
|
||||||
|
static void __devexit rtl8192_usb_disconnect(struct usb_interface *intf);
|
||||||
|
+static const struct net_device_ops rtl8192_netdev_ops;
|
||||||
|
+static struct notifier_block proc_netdev_notifier;
|
||||||
|
|
||||||
|
static struct usb_driver rtl8192_usb_driver = {
|
||||||
|
.name = RTL819xU_MODULE_NAME, /* Driver name */
|
||||||
|
@@ -992,14 +995,22 @@ static int proc_get_stats_rx(char *page, char **start,
|
||||||
|
|
||||||
|
int rtl8192_proc_module_init(void)
|
||||||
|
{
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
RT_TRACE(COMP_INIT, "Initializing proc filesystem");
|
||||||
|
rtl8192_proc=create_proc_entry(RTL819xU_MODULE_NAME, S_IFDIR, init_net.proc_net);
|
||||||
|
- return rtl8192_proc ? 0 : -ENOMEM;
|
||||||
|
+ if (!rtl8192_proc)
|
||||||
|
+ return -ENOMEM;
|
||||||
|
+ ret = register_netdevice_notifier(&proc_netdev_notifier);
|
||||||
|
+ if (ret)
|
||||||
|
+ remove_proc_entry(RTL819xU_MODULE_NAME, init_net.proc_net);
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void rtl8192_proc_module_remove(void)
|
||||||
|
{
|
||||||
|
+ unregister_netdevice_notifier(&proc_netdev_notifier);
|
||||||
|
remove_proc_entry(RTL819xU_MODULE_NAME, init_net.proc_net);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1027,8 +1038,7 @@ void rtl8192_proc_remove_one(struct net_device *dev)
|
||||||
|
remove_proc_entry("registers-e", priv->dir_dev);
|
||||||
|
// remove_proc_entry("cck-registers",priv->dir_dev);
|
||||||
|
// remove_proc_entry("ofdm-registers",priv->dir_dev);
|
||||||
|
- //remove_proc_entry(dev->name, rtl8192_proc);
|
||||||
|
- remove_proc_entry("wlan0", rtl8192_proc);
|
||||||
|
+ remove_proc_entry(priv->dir_dev->name, rtl8192_proc);
|
||||||
|
priv->dir_dev = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1145,6 +1155,25 @@ void rtl8192_proc_init_one(struct net_device *dev)
|
||||||
|
dev->name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+static int proc_netdev_event(struct notifier_block *this,
|
||||||
|
+ unsigned long event, void *ptr)
|
||||||
|
+{
|
||||||
|
+ struct net_device *net_dev = ptr;
|
||||||
|
+
|
||||||
|
+ if (net_dev->netdev_ops == &rtl8192_netdev_ops &&
|
||||||
|
+ event == NETDEV_CHANGENAME) {
|
||||||
|
+ rtl8192_proc_remove_one(net_dev);
|
||||||
|
+ rtl8192_proc_init_one(net_dev);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return NOTIFY_DONE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static struct notifier_block proc_netdev_notifier = {
|
||||||
|
+ .notifier_call = proc_netdev_event,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
/****************************************************************************
|
||||||
|
-----------------------------MISC STUFF-------------------------
|
||||||
|
*****************************************************************************/
|
||||||
|
--
|
||||||
|
1.7.1
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
From: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Date: Tue, 8 Jun 2010 03:47:13 +0200
|
||||||
|
Subject: [PATCH] Staging: rtl8192su: add device ids
|
||||||
|
|
||||||
|
commit 15d93ed070125d51693f102a0f94045dcaf30d9b upstream.
|
||||||
|
|
||||||
|
This patch adds some device ids.
|
||||||
|
The list of supported devices was extracted from realteks driver package.
|
||||||
|
(0x050d, 0x815F) and (0x0df6, 0x004b) are not in the official list of
|
||||||
|
supported devices and may not work correctly.
|
||||||
|
In case of problems with these, they should probably be removed from the list.
|
||||||
|
|
||||||
|
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||||
|
[bwh: Adjust context for 2.6.32]
|
||||||
|
---
|
||||||
|
drivers/staging/rtl8192su/r8192U_core.c | 30 +++++++++++++++++++++++-------
|
||||||
|
1 files changed, 23 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192U_core.c b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
index 06b2b97..f1d852b 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
@@ -112,14 +112,30 @@ u32 rt_global_debug_component = \
|
||||||
|
#define CAM_CONTENT_COUNT 8
|
||||||
|
|
||||||
|
static struct usb_device_id rtl8192_usb_id_tbl[] = {
|
||||||
|
- /* Realtek */
|
||||||
|
- {USB_DEVICE(0x0bda, 0x8171)},
|
||||||
|
- {USB_DEVICE(0x050d, 0x815F)}, /* Belkin F5D8053 v6 */
|
||||||
|
- {USB_DEVICE(0x0df6, 0x004b)}, /* WL-349 */
|
||||||
|
- /* Guillemot */
|
||||||
|
- {USB_DEVICE(0x06f8, 0xe031)},
|
||||||
|
- //92SU
|
||||||
|
+ {USB_DEVICE(0x0bda, 0x8171)}, /* Realtek */
|
||||||
|
{USB_DEVICE(0x0bda, 0x8172)},
|
||||||
|
+ {USB_DEVICE(0x0bda, 0x8173)},
|
||||||
|
+ {USB_DEVICE(0x0bda, 0x8174)},
|
||||||
|
+ {USB_DEVICE(0x0bda, 0x8712)},
|
||||||
|
+ {USB_DEVICE(0x0bda, 0x8713)},
|
||||||
|
+ {USB_DEVICE(0x07aa, 0x0047)},
|
||||||
|
+ {USB_DEVICE(0x07d1, 0x3303)},
|
||||||
|
+ {USB_DEVICE(0x07d1, 0x3302)},
|
||||||
|
+ {USB_DEVICE(0x07d1, 0x3300)},
|
||||||
|
+ {USB_DEVICE(0x1740, 0x9603)},
|
||||||
|
+ {USB_DEVICE(0x1740, 0x9605)},
|
||||||
|
+ {USB_DEVICE(0x050d, 0x815F)},
|
||||||
|
+ {USB_DEVICE(0x06f8, 0xe031)},
|
||||||
|
+ {USB_DEVICE(0x7392, 0x7611)},
|
||||||
|
+ {USB_DEVICE(0x7392, 0x7612)},
|
||||||
|
+ {USB_DEVICE(0x7392, 0x7622)},
|
||||||
|
+ {USB_DEVICE(0x0DF6, 0x0045)},
|
||||||
|
+ {USB_DEVICE(0x0E66, 0x0015)},
|
||||||
|
+ {USB_DEVICE(0x0E66, 0x0016)},
|
||||||
|
+ {USB_DEVICE(0x0b05, 0x1786)},
|
||||||
|
+ /* these are not in the official list */
|
||||||
|
+ {USB_DEVICE(0x050d, 0x815F)}, /* Belkin F5D8053 v6 */
|
||||||
|
+ {USB_DEVICE(0x0df6, 0x004b)}, /* WL-349 */
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
From: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Date: Tue, 4 May 2010 14:23:43 +0200
|
||||||
|
Subject: [PATCH] Staging: rtl8192su: check for skb == NULL
|
||||||
|
|
||||||
|
commit 199ef62a287b429a8fa3b7dc5ae6b69f607bf324 upstream.
|
||||||
|
|
||||||
|
added 2 checks for skb == NULL.
|
||||||
|
plus cosmetics
|
||||||
|
|
||||||
|
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||||
|
[bwh: Remove cosmetic changes]
|
||||||
|
---
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192S_firmware.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192S_firmware.c
|
||||||
|
@@ -68,6 +68,11 @@
|
||||||
|
|
||||||
|
/* Allocate skb buffer to contain firmware info and tx descriptor info. */
|
||||||
|
skb = dev_alloc_skb(frag_length);
|
||||||
|
+ if (skb == NULL) {
|
||||||
|
+ RT_TRACE(COMP_ERR, "(%s): unable to alloc skb buffer\n",
|
||||||
|
+ __func__);
|
||||||
|
+ goto cmdsend_downloadcode_fail;
|
||||||
|
+ }
|
||||||
|
memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev));
|
||||||
|
|
||||||
|
tcb_desc = (cb_desc*)(skb->cb + MAX_DEV_ADDR_SIZE);
|
||||||
|
--- a/drivers/staging/rtl8192su/r819xU_cmdpkt.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r819xU_cmdpkt.c
|
||||||
|
@@ -56,6 +56,12 @@ bool SendTxCommandPacket(struct net_device *dev, void *pData, u32 DataLen)
|
||||||
|
|
||||||
|
//Get TCB and local buffer from common pool. (It is shared by CmdQ, MgntQ, and USB coalesce DataQ)
|
||||||
|
skb = dev_alloc_skb(USB_HWDESC_HEADER_LEN + DataLen + 4);
|
||||||
|
+ if (skb == NULL) {
|
||||||
|
+ RT_TRACE(COMP_ERR, "(%s): unable to alloc skb buffer\n",
|
||||||
|
+ __func__);
|
||||||
|
+ rtStatus = false;
|
||||||
|
+ return rtStatus;
|
||||||
|
+ }
|
||||||
|
memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev));
|
||||||
|
tcb_desc = (cb_desc*)(skb->cb + MAX_DEV_ADDR_SIZE);
|
||||||
|
tcb_desc->queue_index = TXCMD_QUEUE;
|
|
@ -0,0 +1,96 @@
|
||||||
|
From: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Date: Thu, 13 May 2010 13:55:52 +0200
|
||||||
|
Subject: [PATCH] Staging: rtl8192su: led update
|
||||||
|
|
||||||
|
commit 3dfe08e6073f40a742fe3e5d6b43ca8184c55722 upstream.
|
||||||
|
|
||||||
|
derived from Realteks driver.
|
||||||
|
leds are now working.
|
||||||
|
|
||||||
|
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||||
|
[bwh: Adjust context for 2.6.32]
|
||||||
|
---
|
||||||
|
drivers/staging/rtl8192su/r8192U_core.c | 27 +++++++++++++++++++--------
|
||||||
|
1 files changed, 19 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192U_core.c b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
index 70a8087..78af0d7 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
@@ -1219,6 +1219,7 @@ void rtl8192_set_mode(struct net_device *dev,int mode)
|
||||||
|
void rtl8192_update_msr(struct net_device *dev)
|
||||||
|
{
|
||||||
|
struct r8192_priv *priv = ieee80211_priv(dev);
|
||||||
|
+ LED_CTL_MODE LedAction = LED_CTL_NO_LINK;
|
||||||
|
u8 msr;
|
||||||
|
|
||||||
|
msr = read_nic_byte(dev, MSR);
|
||||||
|
@@ -1229,19 +1230,23 @@ void rtl8192_update_msr(struct net_device *dev)
|
||||||
|
* this is intentional and make sense for ad-hoc and
|
||||||
|
* master (see the create BSS/IBSS func)
|
||||||
|
*/
|
||||||
|
- if (priv->ieee80211->state == IEEE80211_LINKED){
|
||||||
|
+ if (priv->ieee80211->state == IEEE80211_LINKED) {
|
||||||
|
|
||||||
|
- if (priv->ieee80211->iw_mode == IW_MODE_INFRA)
|
||||||
|
+ if (priv->ieee80211->iw_mode == IW_MODE_INFRA) {
|
||||||
|
msr |= (MSR_LINK_MANAGED<<MSR_LINK_SHIFT);
|
||||||
|
- else if (priv->ieee80211->iw_mode == IW_MODE_ADHOC)
|
||||||
|
+ LedAction = LED_CTL_LINK;
|
||||||
|
+ } else if (priv->ieee80211->iw_mode == IW_MODE_ADHOC)
|
||||||
|
msr |= (MSR_LINK_ADHOC<<MSR_LINK_SHIFT);
|
||||||
|
else if (priv->ieee80211->iw_mode == IW_MODE_MASTER)
|
||||||
|
msr |= (MSR_LINK_MASTER<<MSR_LINK_SHIFT);
|
||||||
|
|
||||||
|
- }else
|
||||||
|
+ } else
|
||||||
|
msr |= (MSR_LINK_NONE<<MSR_LINK_SHIFT);
|
||||||
|
|
||||||
|
write_nic_byte(dev, MSR, msr);
|
||||||
|
+
|
||||||
|
+ if(priv->ieee80211->LedControlHandler != NULL)
|
||||||
|
+ priv->ieee80211->LedControlHandler(dev, LedAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
void rtl8192_set_chan(struct net_device *dev,short ch)
|
||||||
|
@@ -2154,15 +2159,13 @@ short rtl8192SU_tx(struct net_device *dev, struct sk_buff* skb)
|
||||||
|
struct r8192_priv *priv = ieee80211_priv(dev);
|
||||||
|
cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
|
||||||
|
tx_desc_819x_usb *tx_desc = (tx_desc_819x_usb *)skb->data;
|
||||||
|
- //tx_fwinfo_819x_usb *tx_fwinfo = (tx_fwinfo_819x_usb *)(skb->data + USB_HWDESC_HEADER_LEN);//92su del
|
||||||
|
struct usb_device *udev = priv->udev;
|
||||||
|
int pend;
|
||||||
|
int status;
|
||||||
|
struct urb *tx_urb = NULL, *tx_urb_zero = NULL;
|
||||||
|
- //int urb_len;
|
||||||
|
unsigned int idx_pipe;
|
||||||
|
- u16 MPDUOverhead = 0;
|
||||||
|
- //RT_DEBUG_DATA(COMP_SEND, tcb_desc, sizeof(cb_desc));
|
||||||
|
+ u16 MPDUOverhead = 0;
|
||||||
|
+ u16 type = 0;
|
||||||
|
|
||||||
|
pend = atomic_read(&priv->tx_pending[tcb_desc->queue_index]);
|
||||||
|
/* we are locked here so the two atomic_read and inc are executed
|
||||||
|
@@ -2359,6 +2362,11 @@ short rtl8192SU_tx(struct net_device *dev, struct sk_buff* skb)
|
||||||
|
skb->data,
|
||||||
|
skb->len, rtl8192_tx_isr, skb);
|
||||||
|
|
||||||
|
+ if (type == IEEE80211_FTYPE_DATA) {
|
||||||
|
+ if (priv->ieee80211->LedControlHandler != NULL)
|
||||||
|
+ priv->ieee80211->LedControlHandler(dev, LED_CTL_TX);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
status = usb_submit_urb(tx_urb, GFP_ATOMIC);
|
||||||
|
if (!status){
|
||||||
|
//we need to send 0 byte packet whenever 512N bytes/64N(HIGN SPEED/NORMAL SPEED) bytes packet has been transmitted. Otherwise, it will be halt to wait for another packet. WB. 2008.08.27
|
||||||
|
@@ -5487,6 +5495,9 @@ void rtl819x_watchdog_wqcallback(struct work_struct *work)
|
||||||
|
RemovePeerTS(priv->ieee80211,priv->ieee80211->current_network.bssid);
|
||||||
|
ieee->is_roaming = true;
|
||||||
|
priv->ieee80211->link_change(dev);
|
||||||
|
+ if(ieee->LedControlHandler != NULL)
|
||||||
|
+ ieee->LedControlHandler(ieee->dev,
|
||||||
|
+ LED_CTL_START_TO_LINK);
|
||||||
|
queue_work(priv->ieee80211->wq, &priv->ieee80211->associate_procedure_wq);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
From: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Date: Tue, 8 Jun 2010 03:46:26 +0200
|
||||||
|
Subject: [PATCH] Staging: rtl8192su: remove device ids
|
||||||
|
|
||||||
|
commit 60b42de30ad6fb131dc8e9dbd11a8a9ea0ab394c upstream.
|
||||||
|
|
||||||
|
This patch removes some device-ids.
|
||||||
|
The list of unsupported devices was extracted from realteks driver package.
|
||||||
|
removed IDs are:
|
||||||
|
(0x0bda, 0x8192)
|
||||||
|
(0x0bda, 0x8709)
|
||||||
|
(0x07aa, 0x0043)
|
||||||
|
(0x050d, 0x805E)
|
||||||
|
(0x0df6, 0x0031)
|
||||||
|
(0x1740, 0x9201)
|
||||||
|
(0x2001, 0x3301)
|
||||||
|
(0x5a57, 0x0290)
|
||||||
|
These devices are _not_ rtl819su based.
|
||||||
|
|
||||||
|
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com>
|
||||||
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
||||||
|
---
|
||||||
|
drivers/staging/rtl8192su/r8192U_core.c | 14 --------------
|
||||||
|
1 files changed, 0 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/staging/rtl8192su/r8192U_core.c b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
index 447d647..06b2b97 100644
|
||||||
|
--- a/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
+++ b/drivers/staging/rtl8192su/r8192U_core.c
|
||||||
|
@@ -114,22 +114,8 @@ u32 rt_global_debug_component = \
|
||||||
|
static const struct usb_device_id rtl8192_usb_id_tbl[] = {
|
||||||
|
/* Realtek */
|
||||||
|
{USB_DEVICE(0x0bda, 0x8171)},
|
||||||
|
- {USB_DEVICE(0x0bda, 0x8192)},
|
||||||
|
- {USB_DEVICE(0x0bda, 0x8709)},
|
||||||
|
- /* Corega */
|
||||||
|
- {USB_DEVICE(0x07aa, 0x0043)},
|
||||||
|
- /* Belkin */
|
||||||
|
- {USB_DEVICE(0x050d, 0x805E)},
|
||||||
|
{USB_DEVICE(0x050d, 0x815F)}, /* Belkin F5D8053 v6 */
|
||||||
|
- /* Sitecom */
|
||||||
|
- {USB_DEVICE(0x0df6, 0x0031)},
|
||||||
|
{USB_DEVICE(0x0df6, 0x004b)}, /* WL-349 */
|
||||||
|
- /* EnGenius */
|
||||||
|
- {USB_DEVICE(0x1740, 0x9201)},
|
||||||
|
- /* Dlink */
|
||||||
|
- {USB_DEVICE(0x2001, 0x3301)},
|
||||||
|
- /* Zinwell */
|
||||||
|
- {USB_DEVICE(0x5a57, 0x0290)},
|
||||||
|
/* Guillemot */
|
||||||
|
{USB_DEVICE(0x06f8, 0xe031)},
|
||||||
|
//92SU
|
||||||
|
--
|
||||||
|
1.7.1
|
||||||
|
|
|
@ -179,3 +179,9 @@
|
||||||
+ debian/revert-wrong-type-for-magic-argument-in-simple_fill_super.patch
|
+ debian/revert-wrong-type-for-magic-argument-in-simple_fill_super.patch
|
||||||
- bugfix/all/drm-edid-Fix-1024x768@85Hz.patch
|
- bugfix/all/drm-edid-Fix-1024x768@85Hz.patch
|
||||||
+ bugfix/all/stable/2.6.33.6-rc1.patch
|
+ bugfix/all/stable/2.6.33.6-rc1.patch
|
||||||
|
+ bugfix/all/rtl8192su-check-for-skb-NULL.patch
|
||||||
|
+ bugfix/all/rtl8192su-led-update.patch
|
||||||
|
+ bugfix/all/rtl8192su-Clean-up-in-case-of-an-error-in-mo.patch
|
||||||
|
+ bugfix/all/rtl8192su-Fix-procfs-code-for-interfaces-not.patch
|
||||||
|
+ bugfix/all/rtl8192su-remove-device-ids.patch
|
||||||
|
+ bugfix/all/rtl8192su-add-device-ids.patch
|
||||||
|
|
Loading…
Reference in New Issue