From patchwork Fri Nov 18 19:22:44 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Erik Stromdahl X-Patchwork-Id: 9437235 X-Patchwork-Delegate: kvalo@adurom.com 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 D1FCF60238 for ; Fri, 18 Nov 2016 19:24:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CA728299C9 for ; Fri, 18 Nov 2016 19:24:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BDEFA299E5; Fri, 18 Nov 2016 19:24:35 +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=-6.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 68FD7299C9 for ; Fri, 18 Nov 2016 19:24:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752988AbcKRTYe (ORCPT ); Fri, 18 Nov 2016 14:24:34 -0500 Received: from mail-qk0-f194.google.com ([209.85.220.194]:35910 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752672AbcKRTYP (ORCPT ); Fri, 18 Nov 2016 14:24:15 -0500 Received: by mail-qk0-f194.google.com with SMTP id h201so34193726qke.3 for ; Fri, 18 Nov 2016 11:24:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=NFRgb6CxmLe3MwOivt6/EKyvKI143VmqEt+Q2PLJook=; b=C2lG5hdQlcYyMu69MmvwJ7t1X/JhLIPbTDD/s9gha8zhK9tO9qFxPnEbVqPkLB1mEf pMO2Rw7N2rS7Xyq7pXtjYlXdSPdv214Zz+uor0+YpmKe34HjVOYc++CBwm7LoIZlbIrk yod/X8WvjKa9SDV1HT3DnwO7Xu0DHwdCEQH6O9DgNCOjAUw91KRhdA9jWrrJRG4sGYI3 N3kG7g+RmYxBdxptiUIwedfDgojEGQHWnj/J8cBpanNK0KQNWf/MSJEL7WNVi+e9PZXh dBQB8tWzxXSEwofjgmCd6GqYBvBmUmlP+QiG/w/gThZY9FCi21XJpSokBulBnAApa8BW 4uzQ== 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:in-reply-to :references; bh=NFRgb6CxmLe3MwOivt6/EKyvKI143VmqEt+Q2PLJook=; b=BpgB2C5QPz3hhOZqd//zgGW9NE4HPvnoFiH8idl7HF5Nx9YpnD2/ePFtnNSWU3Tkk1 sLl1cfdRgmh1vJ2kA+IsMiH6QLpjXaqrOIEXGCvNRpBfRkVlxWuV1XYWgOuTp2kua8Hs C/AjMqH8PixJOXFrO7QKywAE7+0/sCsXx4yKfQHUOsjS9EOmzoyFbhhDaptE/dX/A3hE iRoSbm1KTX9ksIhdHFI3gUXeWmtPcO/VyYg3/qVlkzkRHR5FJ5LHogWdcg1Fc9WyIatC WkWlfl6GZxmHAOkzwIFx0mkGchqhHSftZ/vzMse8/gu9XXElGCzOvPiYcz5xAExYAcmK KwXA== X-Gm-Message-State: AKaTC022ILEQO+F6M3Yy8h6k1CUTd6PSVC8WGsoqD7lIpHSn51BHTTS81IiBbc+nQdJ0Ag== X-Received: by 10.46.9.129 with SMTP id 123mr805395ljj.20.1479497054804; Fri, 18 Nov 2016 11:24:14 -0800 (PST) Received: from erik-desktop.lan (81-233-218-8-no25.tbcn.telia.com. [81.233.218.8]) by smtp.gmail.com with ESMTPSA id 23sm2623298ljf.48.2016.11.18.11.24.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 18 Nov 2016 11:24:14 -0800 (PST) From: Erik Stromdahl To: kvalo@qca.qualcomm.com, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Cc: Erik Stromdahl Subject: [RFC v2 04/11] ath10k: htc: Changed order of wait target and ep connect Date: Fri, 18 Nov 2016 20:22:44 +0100 Message-Id: <1479496971-19174-5-git-send-email-erik.stromdahl@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1479496971-19174-1-git-send-email-erik.stromdahl@gmail.com> References: <1479496971-19174-1-git-send-email-erik.stromdahl@gmail.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch changes the order in which the driver waits for the target to become ready and the service connect of the HTC control service. The HTC control service is connected before the driver starts waiting for the HTC ready message. The HTC ready message contains the total number of transmit credits the driver can distribute between endpoints. Since the HTC control service does not use any flow control it is not necessary to wait for the ready message before connecting the service. There will be no credits assigned to this service anyway. Besides, connecting the HTC control service does not yield any bus traffic at all. The ready message will always be transmitted on endpoint 0 (which is always assigned to the HTC control service) so it makes more sense if HTC control has been connected before the ready message is received. Signed-off-by: Erik Stromdahl --- drivers/net/wireless/ath/ath10k/htc.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/htc.c b/drivers/net/wireless/ath/ath10k/htc.c index 79d44de..6ff5837 100644 --- a/drivers/net/wireless/ath/ath10k/htc.c +++ b/drivers/net/wireless/ath/ath10k/htc.c @@ -606,6 +606,22 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc) u16 credit_count; u16 credit_size; + /* setup our pseudo HTC control endpoint connection */ + memset(&conn_req, 0, sizeof(conn_req)); + memset(&conn_resp, 0, sizeof(conn_resp)); + conn_req.ep_ops.ep_tx_complete = ath10k_htc_control_tx_complete; + conn_req.ep_ops.ep_rx_complete = ath10k_htc_control_rx_complete; + conn_req.max_send_queue_depth = ATH10K_NUM_CONTROL_TX_BUFFERS; + conn_req.service_id = ATH10K_HTC_SVC_ID_RSVD_CTRL; + + /* connect fake service */ + status = ath10k_htc_connect_service(htc, &conn_req, &conn_resp); + if (status) { + ath10k_err(ar, "could not connect to htc service (%d)\n", + status); + return status; + } + time_left = wait_for_completion_timeout(&htc->ctl_resp, ATH10K_HTC_WAIT_TIMEOUT_HZ); if (!time_left) { @@ -665,22 +681,6 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc) ath10k_htc_setup_target_buffer_assignments(htc); - /* setup our pseudo HTC control endpoint connection */ - memset(&conn_req, 0, sizeof(conn_req)); - memset(&conn_resp, 0, sizeof(conn_resp)); - conn_req.ep_ops.ep_tx_complete = ath10k_htc_control_tx_complete; - conn_req.ep_ops.ep_rx_complete = ath10k_htc_control_rx_complete; - conn_req.max_send_queue_depth = ATH10K_NUM_CONTROL_TX_BUFFERS; - conn_req.service_id = ATH10K_HTC_SVC_ID_RSVD_CTRL; - - /* connect fake service */ - status = ath10k_htc_connect_service(htc, &conn_req, &conn_resp); - if (status) { - ath10k_err(ar, "could not connect to htc service (%d)\n", - status); - return status; - } - return 0; }