From patchwork Wed Aug 5 10:08:38 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Kazior X-Patchwork-Id: 6947681 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 65252C05AC for ; Wed, 5 Aug 2015 10:08:14 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 9826220379 for ; Wed, 5 Aug 2015 10:08:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 281F820364 for ; Wed, 5 Aug 2015 10:08:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752109AbbHEKIJ (ORCPT ); Wed, 5 Aug 2015 06:08:09 -0400 Received: from mail-la0-f53.google.com ([209.85.215.53]:33857 "EHLO mail-la0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750925AbbHEKII (ORCPT ); Wed, 5 Aug 2015 06:08:08 -0400 Received: by labow3 with SMTP id ow3so25342235lab.1 for ; Wed, 05 Aug 2015 03:08:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tieto.com; s=google; h=from:to:cc:subject:date:message-id; bh=QVRrnF/1EOY+NDocPFH0+cF3MtfSPmCehs7YU67S6D4=; b=2MxkHaAUHfQU7y3bV7v/uRZy5tp3yuSVb5FRw+DIRR/6QXps9s16o/BdJxCCniGRbG RI9cpUromCBc6UP/hEdLgxTIfzgkV8eK1F/pmR/8sWaseoxQ0o3OFs0R3WG5g7KqRrlE wh0ovfxRexbQcr6ljFPioZSudfHNlPyqyHxcM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=QVRrnF/1EOY+NDocPFH0+cF3MtfSPmCehs7YU67S6D4=; b=CzxBBMErxrR4U84/WGWD3JhmizCPntfiRkkl5UbveEaxB0sH6ATFX+wRX/6v5Ue0JU 0SDQr+VCOxB2pQloMgZbrCm3cyeD1ETAiognrYAwcsDjoM1hK+rlrr+gPuTDHwolkSye RX37Y2vA6HrsZYjl1CpdBFbAJT3QS7iRKUSjCrrClAtt2SHhwUXZuznoGzjOuaua2Kgy oLfpbEZCJS8kvYumvNBdX6S34hAEQ1qjVze8ExzYB7LJ8Q1cNkY1OPR//fotfXULqdZX ZvmlYDl9DluuPJzzfq7FquSO8bBGRQ1LrH0WnzCSZQU40ZrFv21PIzKLKnqGgQF05ywm Udow== X-Gm-Message-State: ALoCoQmcQ2XRq/xrH1MCVL+w0iGUvHk+7jnKqCqbOgi9VIYBjWGi4/T2xE/TQKbfv5fnDTz5V3WmZ7kWofO/1T279ATokSlaEvx1Vyyp3j/D7Ut0sTKSg5ghXBriPJpf8TZRxM679iSW X-Received: by 10.112.12.102 with SMTP id x6mr8787274lbb.80.1438769286513; Wed, 05 Aug 2015 03:08:06 -0700 (PDT) Received: from localhost.localdomain ([91.198.246.10]) by smtp.gmail.com with ESMTPSA id un4sm449067lbb.7.2015.08.05.03.08.05 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 05 Aug 2015 03:08:05 -0700 (PDT) From: Michal Kazior To: ath10k@lists.infradead.org Cc: linux-wireless@vger.kernel.org, Michal Kazior Subject: [PATCH] ath10k: fix hw reconfig on wow failure Date: Wed, 5 Aug 2015 12:08:38 +0200 Message-Id: <1438769318-27373-1-git-send-email-michal.kazior@tieto.com> X-Mailer: git-send-email 2.1.4 X-DomainID: tieto.com 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_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,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 When WoWLAN resume fails with retval 1 mac80211 will attempt to reconfig the device in a similar manner when hw restart is requested. This wasn't handled properly and yielded call trace warnings and the device ended up not working. Signed-off-by: Michal Kazior --- drivers/net/wireless/ath/ath10k/wow.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath10k/wow.c b/drivers/net/wireless/ath/ath10k/wow.c index a68d8fd853a3..8e02b381990f 100644 --- a/drivers/net/wireless/ath/ath10k/wow.c +++ b/drivers/net/wireless/ath/ath10k/wow.c @@ -301,8 +301,26 @@ int ath10k_wow_op_resume(struct ieee80211_hw *hw) ath10k_warn(ar, "failed to wakeup from wow: %d\n", ret); exit: + if (ret) { + switch (ar->state) { + case ATH10K_STATE_ON: + ar->state = ATH10K_STATE_RESTARTING; + ret = 1; + break; + case ATH10K_STATE_OFF: + case ATH10K_STATE_RESTARTING: + case ATH10K_STATE_RESTARTED: + case ATH10K_STATE_UTF: + case ATH10K_STATE_WEDGED: + ath10k_warn(ar, "encountered unexpected device state %d on resume, cannot recover\n", + ar->state); + ret = -EIO; + break; + } + } + mutex_unlock(&ar->conf_mutex); - return ret ? 1 : 0; + return ret; } int ath10k_wow_init(struct ath10k *ar)