Received: by 2002:ac0:b08d:0:0:0:0:0 with SMTP id l13csp4913267imc; Mon, 25 Feb 2019 13:30:43 -0800 (PST) X-Google-Smtp-Source: AHgI3IaKdswAiFYKT173xkJQltFVsJWZPUtYXe5iydD+GDHsYJauWaE/YWTejaXtvKk4dt31rPQR X-Received: by 2002:a63:cf4c:: with SMTP id b12mr21128469pgj.316.1551130243910; Mon, 25 Feb 2019 13:30:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551130243; cv=none; d=google.com; s=arc-20160816; b=guOad63in5garmQvBIaGQRMpIpbvB2xczQqMdGRdqj85uN62gmKLQ/kq7JbZnEaOTQ 86YIuXE4bP48senG7zPPaY3UP4UtGwGZde4cNJI7/HiPJGrjPCQe5x2lcEJGXBLCidfR 5gnvCnXF4qAmQktWRt5HsVNPW/Z3B9TrJIspK36WTK0jmRhFtZRqDVe12/lyFUQc0bCO sgj32DP6XdplHQ0+oVL78th5+yKdlDa3ABCHt/6F8GQPNXcG6x0X9vl98J/HoEEAGE0q wEDPDdG236SImTJjcSdAo1lIK4AOxvfsEZoRf7yKdLPMPbHuCee5+hq3ga0GWQNyt9r5 mNPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=QpX1n37FzvDDeuYCsg4m+iRvVGzKClEJS5sQ6QJL8V0=; b=nG4XzEDTLUPEPV/NGyAZKdGBLnHd+tlsHNhL9+jDDw0dwldrI8R//iHHqujmRUr4FY fpiQmPVmqt+NVj2Fa32O6zGdTVNeZ+5xpUlBAnBrPtlO1uspeceLZpZLyOQ5P38SI0P4 W1k8gK/b7vloVkjsfPfYtIOm6YwuFGsJTUlEnB6gwNQ00E4IC5vtNuYVyE4eIol5Y+8M lqRiwUoo+DCKKSagP6klGnGcBCRKlMg8A1jGrz/2jNzV//TXHJBiYq13bOJ0OK03XMF8 btaD0SCARz9XQuxBFr1sfHno7kImpCBljpVVmP//p+bnza34RddWdI6MzzFL/sDT/5Qa /u3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Lox9upEb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c10si10847564pgd.18.2019.02.25.13.30.28; Mon, 25 Feb 2019 13:30:43 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Lox9upEb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731891AbfBYV2m (ORCPT + 99 others); Mon, 25 Feb 2019 16:28:42 -0500 Received: from mail.kernel.org ([198.145.29.99]:34404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729914AbfBYV2i (ORCPT ); Mon, 25 Feb 2019 16:28:38 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BCA56213A2; Mon, 25 Feb 2019 21:28:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551130117; bh=rNmeZzECpB2gwyMOVM2oHGv2eZrGwIzVqJO0Zsets2g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lox9upEbpLY81cU6hMv5FF1RQCcdJFlgT6EAqbRlE7iNKyYzWgy0PDsRAaCrscWwv 2N6ef6wwwDnGL38z8gHNNr0nLyghMiAA/leUrB/m6NN8Vk23ZLH6KvbCCPJ+vvQSTV dmtS0lTp7EcsGY8Ws3ma6tjPlyMIfpp6iLTCKR8c= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Stanislaw Gruszka , Lorenzo Bianconi , Kalle Valo Subject: [PATCH 4.20 005/183] mt76x0u: fix suspend/resume Date: Mon, 25 Feb 2019 22:09:38 +0100 Message-Id: <20190225195055.574567882@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190225195054.748060397@linuxfoundation.org> References: <20190225195054.748060397@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ From: Stanislaw Gruszka commit d04ca383860bef90a0dab4eb397907f7f05e839e upstream. We need to reset MCU and do other initializations on resume otherwise MT7610U device will fail to initialize, what cause system hung due to USB requests timeouts. Patch fixes 4.19 -> 4.20 regression. Cc: stable@vger.kernel.org # 4.20+ Signed-off-by: Stanislaw Gruszka Acked-by: Lorenzo Bianconi Signed-off-by: Kalle Valo Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/mediatek/mt76/mt76x0/usb.c | 46 +++++++++++++++--------- 1 file changed, 29 insertions(+), 17 deletions(-) --- a/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x0/usb.c @@ -159,39 +159,49 @@ static const struct ieee80211_ops mt76x0 .wake_tx_queue = mt76_wake_tx_queue, }; -static int mt76x0u_register_device(struct mt76x02_dev *dev) +static int mt76x0u_init_hardware(struct mt76x02_dev *dev) { - struct ieee80211_hw *hw = dev->mt76.hw; int err; - err = mt76u_alloc_queues(&dev->mt76); - if (err < 0) - goto out_err; - - err = mt76u_mcu_init_rx(&dev->mt76); - if (err < 0) - goto out_err; - mt76x0_chip_onoff(dev, true, true); - if (!mt76x02_wait_for_mac(&dev->mt76)) { - err = -ETIMEDOUT; - goto out_err; - } + + if (!mt76x02_wait_for_mac(&dev->mt76)) + return -ETIMEDOUT; err = mt76x0u_mcu_init(dev); if (err < 0) - goto out_err; + return err; mt76x0_init_usb_dma(dev); err = mt76x0_init_hardware(dev); if (err < 0) - goto out_err; + return err; mt76_rmw(dev, MT_US_CYC_CFG, MT_US_CYC_CNT, 0x1e); mt76_wr(dev, MT_TXOP_CTRL_CFG, FIELD_PREP(MT_TXOP_TRUN_EN, 0x3f) | FIELD_PREP(MT_TXOP_EXT_CCA_DLY, 0x58)); + return 0; +} + +static int mt76x0u_register_device(struct mt76x02_dev *dev) +{ + struct ieee80211_hw *hw = dev->mt76.hw; + int err; + + err = mt76u_alloc_queues(&dev->mt76); + if (err < 0) + goto out_err; + + err = mt76u_mcu_init_rx(&dev->mt76); + if (err < 0) + goto out_err; + + err = mt76x0u_init_hardware(dev); + if (err < 0) + goto out_err; + err = mt76x0_register_device(dev); if (err < 0) goto out_err; @@ -300,6 +310,8 @@ static int __maybe_unused mt76x0_suspend mt76u_stop_queues(&dev->mt76); mt76x0u_mac_stop(dev); + clear_bit(MT76_STATE_MCU_RUNNING, &dev->mt76.state); + mt76x0_chip_onoff(dev, false, false); usb_kill_urb(usb->mcu.res.urb); return 0; @@ -327,7 +339,7 @@ static int __maybe_unused mt76x0_resume( tasklet_enable(&usb->rx_tasklet); tasklet_enable(&usb->tx_tasklet); - ret = mt76x0_init_hardware(dev); + ret = mt76x0u_init_hardware(dev); if (ret) goto err;