Hello! I use a USB Wi-Fi adapter identified as follows. usb 2-4: new high-speed USB device number 5 using ehci-pci usb 2-4: New USB device found, idVendor=148f, idProduct=5370 usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 2-4: Product: 802.11 n WLAN usb 2-4: Manufacturer: Ralink usb 2-4: SerialNumber: 1.0 usb 2-4: reset high-speed USB device number 5 using ehci-pci ieee80211 phy3: rt2x00_set_rt: Info - RT chipset 5390, rev 0502 detected ieee80211 phy3: rt2x00_set_rf: Info - RF chipset 5370 detected It worked well with older kernels and does not with newer kernels. Specifically it fails to find any AP when scanning. The first bad commit is: commit 76773f301f2210dcc20c466aebda7118062673eb Author: Gabor Juhos <juhosg@xxxxxxxxxxx> Date: Sat Aug 17 14:09:30 2013 +0200 rt2x00: rt2800lib: use a MCU command for frequency adjustment on USB devices According to the Ralink driver, there is an MCU command which can be used to send the frequency offset value directly to the USB device without going through the RFCSR writing sequence. Based on the DPO_RT5572_LinuxSTA_2.6.0.1_20120629 driver. Reference: RTMPAdjustFrequencyOffset function in common/rt_rf.c Signed-off-by: Gabor Juhos <juhosg@xxxxxxxxxxx> Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx> After I removed this special USB handling (see the patch) the adapter works again.
diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h index aab6b5e..835e91d 100644 --- a/drivers/net/wireless/rt2x00/rt2800.h +++ b/drivers/net/wireless/rt2x00/rt2800.h @@ -2798,7 +2798,6 @@ enum rt2800_eeprom_word { #define MCU_RADAR 0x60 #define MCU_BOOT_SIGNAL 0x72 #define MCU_ANT_SELECT 0X73 -#define MCU_FREQ_OFFSET 0x74 #define MCU_BBP_SIGNAL 0x80 #define MCU_POWER_SAVE 0x83 #define MCU_BAND_SELECT 0x91 diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c index 776aff3..1f80cf3 100644 --- a/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c @@ -1902,12 +1902,6 @@ static void rt2800_adjust_freq_offset(struct rt2x00_dev *rt2x00dev) if (rfcsr == prev_rfcsr) return; - if (rt2x00_is_usb(rt2x00dev)) { - rt2800_mcu_request(rt2x00dev, MCU_FREQ_OFFSET, 0xff, - freq_offset, prev_rfcsr); - return; - } - prev_freq_offset = rt2x00_get_field8(prev_rfcsr, RFCSR17_CODE); while (prev_freq_offset != freq_offset) { if (prev_freq_offset < freq_offset)