rt2x00: Initial support for RT5370 USB devices.
PATCH 1/2 rt2x00: Initial support for RT5370 USB devices.
From: Gertjan van Wingerde <[email protected]>
Add necessary RF chipset define and basic support for these devices.
Tested-by Juan Carlos Garza <[email protected]>
Signed-off-by Gertjan van Wingerde <[email protected]>
Signed-off-by Ivo van Doorn <[email protected]>
--- drivers/net/wireless/rt2x00/Kconfig | 11 ++++++++++- drivers/net/wireless/rt2x00/rt2800.h | 2 ++ drivers/net/wireless/rt2x00/rt2800lib.c | 5 ++++- drivers/net/wireless/rt2x00/rt2800usb.c | 8 ++++++++ 4 files changed, 24 insertions(+), 2 deletions(-)
drivers/net/wireless/rt2x00/Kconfig +10 -1
@@ -93,7 +93,7 @@ config RT2800PCI_RT35XX intended for testers and developers. config RT2800PCI_RT53XX - bool "rt2800-pci - Include support for rt53xx devices (EXPERIMENTAL)" + bool "rt2800pci - Include support for rt53xx devices (EXPERIMENTAL)" depends on EXPERIMENTAL default y ---help---
@@ -163,6 +163,15 @@ config RT2800USB_RT35XX Support for these devices is non-functional at the moment and is intended for testers and developers. +config RT2800USB_RT53XX + bool "rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)" + depends on EXPERIMENTAL + default y + ---help--- + This adds support for rt53xx wireless chipset family to the + rt2800pci driver. + Supported chips: RT5370 + config RT2800USB_UNKNOWN bool "rt2800usb - Include support for unknown (USB) devices" default n
drivers/net/wireless/rt2x00/rt2800.h +2 -0
@@ -51,6 +51,7 @@* RF3320 2.4G 1T1R(RT3350/RT3370/RT3390) * RF3322 2.4G 2T2R(RT3352/RT3371/RT3372/RT3391/RT3392) * RF3853 2.4G/5G 3T3R(RT3883/RT3563/RT3573/RT3593/RT3662) +* RF5370 2.4G 1T1R * RF5390 2.4G 1T1R */ #define RF2820 0x0001
@@ -66,6 +67,7 @@#define RF3320 0x000b#define RF3322 0x000c#define RF3853 0x000d +#define RF5370 0x5370#define RF5390 0x5390/*
drivers/net/wireless/rt2x00/rt2800lib.c +4 -1
@@ -1751,7 +1751,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, rt2x00_rf(rt2x00dev, RF3052) || rt2x00_rf(rt2x00dev, RF3320))rt2800_config_channel_rf3xxx (rt2x00dev, conf, rf, info); - else if (rt2x00_rf(rt2x00dev, RF5390)) + else if (rt2x00_rf(rt2x00dev, RF5370) || + rt2x00_rf(rt2x00dev, RF5390)) rt2800_config_channel_rf53xx(rt2x00dev, conf, rf, info); elsert2800_config_channel_rf2xxx (rt2x00dev ,conf ,rf ,info );
@@ -3686,6 +3687,7 @@ int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) !rt2x00_rf(rt2x00dev, RF3022) && !rt2x00_rf(rt2x00dev, RF3052) && !rt2x00_rf(rt2x00dev, RF3320) && + !rt2x00_rf(rt2x00dev, RF5370) && !rt2x00_rf(rt2x00dev, RF5390)) {ERROR (rt2x00dev,"Invalid RF chipset detected.\n" );return -ENODEV ;
@@ -3988,6 +3990,7 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)rt2x00_rf (rt2x00dev,RF3021 ) ||rt2x00_rf (rt2x00dev,RF3022 ) ||rt2x00_rf (rt2x00dev,RF3320 ) || +rt2x00_rf (rt2x00dev,RF5370 ) || rt2x00_rf(rt2x00dev, RF5390)) { spec->num_channels = 14; spec->channels = rf_vals_3x;
drivers/net/wireless/rt2x00/rt2800usb.c +8 -0
@@ -1000,6 +1000,14 @@ static struct usb_device_id rt2800usb_device_table[] = { /* Zinwell */ { USB_DEVICE(0x5a57, 0x0284) }, #endif +#ifdef CONFIG_RT2800USB_RT53XX + /* Azurewave */ + { USB_DEVICE(0x13d3, 0x3329) }, + { USB_DEVICE(0x13d3, 0x3365) }, + /* Ralink */ + { USB_DEVICE(0x148f, 0x5370) }, + { USB_DEVICE(0x148f, 0x5372) }, +#endif #ifdef CONFIG_RT2800USB_UNKNOWN /* * Unclear what kind of devices these are (they aren't supported by the
Signature · 1 line
1.7.2.3
PATCH 2/2 rt2x00: Fix transfer speed regression for USB hardware
From: Ivo van Doorn <[email protected]>
Patch:
rt2x00: Make rt2x00_queue_entry_for_each more flexible
commit: 10e11568ca8b8a15f7478f6a4ceebabcbdba1018
introduced a severe regression on the throughput for USB hardware. It turns out that the exiting of the rt2x00queue_for_each_entry() was done too early.
The exact cause for this regression is unknown, but by disabling the premature exiting of the loop seems to resolve the issue.
Signed-off-by Ivo van Doorn <[email protected]>
Reported-by Yasushi SHOJI <[email protected]>
Reported-by Balint Viragh <[email protected]>
Tested-by Balint Viragh <[email protected]>
--- drivers/net/wireless/rt2x00/rt2x00usb.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
drivers/net/wireless/rt2x00/rt2x00usb.c +3 -3
@@ -298,7 +298,7 @@ static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void* data)if (!test_and_clear_bit (ENTRY_DATA_PENDING , &entry->flags) ||test_bit (ENTRY_DATA_STATUS_PENDING , &entry->flags)) -return true; +return false;/* * USB devices cannot blindly pass the skb->len as the
@@ -392,7 +392,7 @@ static bool rt2x00usb_kick_rx_entry(struct queue_entry *entry, void* data)if (test_and_set_bit (ENTRY_OWNER_DEVICE_DATA , &entry->flags) ||test_bit (ENTRY_DATA_STATUS_PENDING , &entry->flags)) -return true; +return false;rt2x00lib_dmastart (entry);
@@ -447,7 +447,7 @@ static bool rt2x00usb_flush_entry(struct queue_entry *entry, void* data)struct queue_entry_priv_usb_bcn *bcn_priv = entry->priv_data;if (!test_bit (ENTRY_OWNER_DEVICE_DATA , &entry->flags)) -return true; +return false;usb_kill_urb (entry_priv->urb);
Signature · 1 line
1.7.2.3