From patchwork Tue Jan 14 18:28:39 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergei Antonov X-Patchwork-Id: 3487431 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 52B329F381 for ; Tue, 14 Jan 2014 18:28:45 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4D8632021E for ; Tue, 14 Jan 2014 18:28:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1CCA92021C for ; Tue, 14 Jan 2014 18:28:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751762AbaANS2l (ORCPT ); Tue, 14 Jan 2014 13:28:41 -0500 Received: from mail-ob0-f182.google.com ([209.85.214.182]:55649 "EHLO mail-ob0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751669AbaANS2k (ORCPT ); Tue, 14 Jan 2014 13:28:40 -0500 Received: by mail-ob0-f182.google.com with SMTP id wn1so7712281obc.13 for ; Tue, 14 Jan 2014 10:28:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=SjJaWdu2wz52st7syLkzm6XjzjExjk9eonqYzCo5pAg=; b=mPoPawrr2bi0MlaqFHHB4nhds0Dv1TQ+WDRXAANziXRZRSQYotBozvooezso280blV KlAvmyKa2W/9TC8RBXE2OItoqAxxgnlqmcYQCAIdKp4ARx/RETZvZr6kboBHhBvfYzhT di9nAHMxXzwepqJc3WYY/e99u6TgVNdB5U7Nil+EJJxwU7m7zviBPsuc+bo4WmhXR+3M +gCW2z9eYA74/f9KlPtSuQKgJXjPz2HrxQOOEm0ejA8yy1Tb4TkwjtJRk31a/kLsi7f8 0PlY+m22Scjb8x/KkyxWUdt/gx2b0ClatkBHuuEZH5kQUmKBkreqsq0TvSc9mIktQjPP t2DQ== MIME-Version: 1.0 X-Received: by 10.182.183.1 with SMTP id ei1mr2331225obc.48.1389724119966; Tue, 14 Jan 2014 10:28:39 -0800 (PST) Received: by 10.60.118.234 with HTTP; Tue, 14 Jan 2014 10:28:39 -0800 (PST) Date: Tue, 14 Jan 2014 19:28:39 +0100 Message-ID: Subject: USB rt2x00 driver regression From: Sergei Antonov To: linux-wireless , Gabor Juhos Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, T_TVD_MIME_EPI,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 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 Signed-off-by: John W. Linville 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)