From patchwork Sun Dec 31 17:29:16 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Erik Stromdahl X-Patchwork-Id: 10138279 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C283460362 for ; Sun, 31 Dec 2017 17:32:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A98262886B for ; Sun, 31 Dec 2017 17:32:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9E8D42887A; Sun, 31 Dec 2017 17:32:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 2F02C2886B for ; Sun, 31 Dec 2017 17:32:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=v1umeAgk09BIQxUPFvapViihVdyBYJ2pmfCyrgCjQoI=; b=fUUmLTZoM2iDD5NoymtX1tUUfG Pv3pGR/KBl4f1L13MHjxwJoBoy5pBxn4nqilSvnaPTzTbpH4U4LlTs9t5gLA92nrV/E1ovJk1D2pS eAZoUAnyLUgoU7s+dq6X/iiB5nok35dZXWyosh4/J6LN+ZGpn0+IaTwy9ECGxds+ibpAInCbXN/XY WL0uoPZi4X6w8BCQEvryb2VIFETztqaTeBu0kwyYhdAUivcHfRgez8LHxnKl7tPhwloadu0suSjjY c4fA7lDM+w6VqhiLrc497n531W+yZpKDas0bIYTBjho7RG7b7GhMhV5qwVLMXrCNRzNkjmuUeEpEr N+gACxew==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.89 #1 (Red Hat Linux)) id 1eVhTT-0006X0-5m; Sun, 31 Dec 2017 17:32:39 +0000 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1eVhSe-0005zJ-En for ath10k@lists.infradead.org; Sun, 31 Dec 2017 17:31:55 +0000 Received: by mail-lf0-x242.google.com with SMTP id h5so8624788lfj.2 for ; Sun, 31 Dec 2017 09:31:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=hvhfAiZXpSLtBR3/wUiKk6tMqOOzknnhITm6+MJ7SCM=; b=GCgpuiqZ/KJv8KSX/FL9q4OsJWU8bH2U2N+pqoqmOQiE6dDRjF1LGA4kLXOTHBwWwX KYEHmlzd1FGqglByFvKoFQhVk12Rig1VTD3KeIoJRnU7LI2E3x1aZhuZ3TWLDiY8hdC2 Z6bYrCmLYSzm47+/N5PLpv8cTBEffebipiGZaa1bwZLVOkee+MJ5h+A1mRepffTOrghD iDJ7I/pEEdyV5QUcahUajnNMLHpClGp0CPbsYTEc0vyreQYn03dk5w2RtPcMcS8Wh90S i38qGUdzyINPxIGjiwk4XbG6uh5nuUcKgTx6QWHCS0YuNihf7p1gu6HjSm0u3agZxl48 jipA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=hvhfAiZXpSLtBR3/wUiKk6tMqOOzknnhITm6+MJ7SCM=; b=umIktQO39zp6LsNUZDGrI50IjmMDPmRtsCW4wV9cHvmkkQoUrg5m5BpsjDSqzMtKI5 aljQr81FGhFput6ryqqO/8wtiBpqSCDBAmLZHROBOmeNliZgqhjxnaLpjkOQcIiGNwqI DXRRRoBRI94FTDUOQCDVeirCPpLlpMw0jgtbaiNlnzcNfUSi4rMf1IaYMMaid82ZUVIz 2ESWenM/UTel+ruaQiOrBQQFfnD+k2IgMSefZei8+flUOE3QJyM4nSfSn/0QtYSl+ODz aBTdn9oy73zXHQXqWGeZ3qWy2gz9oQMBO9UrPLLDFcCJ/pNmQKj2J1RU35ORqIowX9u0 r/6g== X-Gm-Message-State: AKGB3mJyz2f1T6bftD0pDXn5Mz5dKN/nbeO7hS/b9PsVBJKonsVhDow8 fCu5eGb5HJ4LwjYJifiHjM8= X-Google-Smtp-Source: ACJfBotvPuFDYXLaLyxm4aNqqWSqX6+m//YZIcJbqWcPSk61ktRo5zMXa8ulDOA7YFABj+iLJA06ag== X-Received: by 10.25.219.145 with SMTP id t17mr22720562lfi.73.1514741501802; Sun, 31 Dec 2017 09:31:41 -0800 (PST) Received: from localhost.localdomain (90-227-62-61-no75.tbcn.telia.com. [90.227.62.61]) by smtp.gmail.com with ESMTPSA id o64sm5048449lfo.53.2017.12.31.09.31.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 Dec 2017 09:31:41 -0800 (PST) From: Erik Stromdahl To: kvalo@qca.qualcomm.com, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Subject: [RFC v4 09/18] ath10k: add start_once support Date: Sun, 31 Dec 2017 18:29:16 +0100 Message-Id: <20171231172925.24014-10-erik.stromdahl@gmail.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20171231172925.24014-1-erik.stromdahl@gmail.com> References: <20171231172925.24014-1-erik.stromdahl@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20171231_093148_749293_050AC640 X-CRM114-Status: GOOD ( 15.72 ) X-BeenThere: ath10k@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Erik Stromdahl MIME-Version: 1.0 Sender: "ath10k" Errors-To: ath10k-bounces+patchwork-ath10k=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Add possibility to configure the driver to only start target once. This can reduce startup time of SDIO devices significantly since loading the firmware can take a substantial amount of time. The patch is also necessary for high latency devices in general since it does not seem to be possible to rerun the BMI phase (fw upload) without power-cycling the device. Signed-off-by: Erik Stromdahl --- drivers/net/wireless/ath/ath10k/core.c | 19 +++++++++++++++---- drivers/net/wireless/ath/ath10k/core.h | 2 ++ drivers/net/wireless/ath/ath10k/hw.h | 6 ++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index 4e849ec924c6..d42f6a1e5bfc 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -2130,6 +2130,9 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode, int status; u32 val; + if (ar->is_started && ar->hw_params.start_once) + return 0; + lockdep_assert_held(&ar->conf_mutex); clear_bit(ATH10K_FLAG_CRASH_FLUSH, &ar->dev_flags); @@ -2364,6 +2367,7 @@ int ath10k_core_start(struct ath10k *ar, enum ath10k_firmware_mode mode, if (status) goto err_hif_stop; + ar->is_started = true; return 0; err_hif_stop: @@ -2416,6 +2420,7 @@ void ath10k_core_stop(struct ath10k *ar) ath10k_htt_tx_stop(&ar->htt); ath10k_htt_rx_free(&ar->htt); ath10k_wmi_detach(ar); + ar->is_started = false; } EXPORT_SYMBOL(ath10k_core_stop); @@ -2545,12 +2550,18 @@ static int ath10k_core_probe_fw(struct ath10k *ar) goto err_unlock; } - ath10k_debug_print_boot_info(ar); - ath10k_core_stop(ar); + /* Leave target running if hw_params.start_once is set */ + if (ar->hw_params.start_once) { + mutex_unlock(&ar->conf_mutex); + } else { + ath10k_debug_print_boot_info(ar); + ath10k_core_stop(ar); - mutex_unlock(&ar->conf_mutex); + mutex_unlock(&ar->conf_mutex); + + ath10k_hif_power_down(ar); + } - ath10k_hif_power_down(ar); return 0; err_unlock: diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 32cfa14d3053..ed96f9ef5209 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -798,6 +798,8 @@ struct ath10k { bool p2p; + bool is_started; + struct { enum ath10k_bus bus; const struct ath10k_hif_ops *ops; diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h index 53276950c95c..98f9f3ccbf96 100644 --- a/drivers/net/wireless/ath/ath10k/hw.h +++ b/drivers/net/wireless/ath/ath10k/hw.h @@ -576,6 +576,12 @@ struct ath10k_hw_params { /* Target rx ring fill level */ u32 rx_ring_fill_level; + + /* Specifies whether or not the device should be started once. + * If set, the device will be started once by the early fw probe + * and it will not be terminated afterwards. + */ + bool start_once; }; struct htt_rx_desc;