From patchwork Tue Feb 21 16:15:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Erik Stromdahl X-Patchwork-Id: 9585099 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 DD564600CA for ; Tue, 21 Feb 2017 16:23:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CC04D285A3 for ; Tue, 21 Feb 2017 16:23:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BFAE1285B8; Tue, 21 Feb 2017 16:23:46 +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=-1.9 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM 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 67782285A3 for ; Tue, 21 Feb 2017 16:23:46 +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=3NrVNdNvefos/5KgRU9BXsQws4A9QgsU037QG19Ue3k=; b=maeS+tkwoBQrkIp6Fpgwqui1Ta Qv0lnGb9enEMy7HcOBzulZF/xt169bWDKI6w+KWSSvJ/ta7UVi1iccX/8ONb7Jc4cFMK7IKN3+mby L7dndlckG7jUpPlLpkf4MPxgJti0XK/OG8cUsWmnWF2luLi41F5oMdl9gIU/G2kOJj0s41bcy9wsz 0PYNoxomnViszArxCGCI0z15AUjrjgKmRkEDVNSDRLmqarQ8oYCHFEyvPmXeTHAOlELtJJT+LTvwZ cuecRq8Kp20t0teqa6UiQJfV4KdPp1mXPSkZib32FyQZXouroOokSviFWHQtJQH3y+o25KBdndpE4 RpGzxhVA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cgDE4-0004wj-H4; Tue, 21 Feb 2017 16:23:40 +0000 Received: from casper.infradead.org ([2001:770:15f::2]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cgDD2-0003di-OA for ath10k@bombadil.infradead.org; Tue, 21 Feb 2017 16:22:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=h+fsgDgH4lARBMjCCDUkSg0hr7okw7I/sujtnjdctFE=; b=tt6M8FvhTIqYQwggtxC31RLvA tog6UQSrdBNSCyXPrKz+YmeF/0BkA6FoacxMY1m+Xf2PRuZFtb83die+mX2dwLI1RGre3TTAvKInh btDr/5FoQCWBAC6VhPVYmIb6hEElIQk2yfx0zPzho/ZfWFUZ5fSyc4FA3iVPXZY7WVTBaafgb12ZC Of0r2ZksLZscq3qXrpd5B3LDs+Hs5YDmc7/WYT0vPSMwQhHYwdlcU97agM3QBq8+QMAxFrWPtALtE PV5mT2sKagvQ/HuMgni+MfPdNLIwYSPAs92HCovARFDmMDPcgbinZAw4Yjhs1Tf1ObCt0sAncRFie rOgLEQ7lg==; Received: from mail-lf0-x244.google.com ([2a00:1450:4010:c07::244]) by casper.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cgD7K-0006gq-SF for ath10k@lists.infradead.org; Tue, 21 Feb 2017 16:16:44 +0000 Received: by mail-lf0-x244.google.com with SMTP id h67so3752107lfg.1 for ; Tue, 21 Feb 2017 08:16:22 -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=h+fsgDgH4lARBMjCCDUkSg0hr7okw7I/sujtnjdctFE=; b=DTrb+6wc6k5zJFydyKmY9DfNoafwZg/cS5QvL+oKzTbUL9pxn8WNKGcT0sSJQsT4i2 gQI+KKNqdOQEAIwLsWIDu2+n9ok7uz84epS+x5bOBkm0GVl5sAHkYti18f0IysakOpDb /kkyebPAr4ZFaLrCOqB24MQh+vsthYkNqfPstpPDmLkMh5m98PIsaFqwio5x9Cew7hXH dP+eH73uU9dvZZMxR6n7kIdhzWKY+DvvrbOOxuE3KEXkurLDU77KePWNmJBRZeug4WEF o0sy5qKFATonJ+BPjW/Umtb409N/Y+H9wQQIOeFkH/ElupMAOBvenAQyhJS5pnx38H0S wDCg== 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=h+fsgDgH4lARBMjCCDUkSg0hr7okw7I/sujtnjdctFE=; b=OeqDCQCoruZTOmme9oFHlvohYFdlpcoPNz0fW5hzGxc4VO/Zk0Vnweg1K31gyINF0I FnEDHAl61TSnOkgs3tHJWMV+O3x3L4v2tJhlwQ7jOwl0HQ/LwQpSf0mZptPwhcuKnp4L NzqaJxXc5CXmw1TN6zbrivORAzBUgKBzfaCflf5Yw61lsjaoqEk0HZlzjiuenqixh1Kz yhBRfBLsi/caDvq316genRmZPQVwD+QqhBdzRDvEycJAsJNTx+aZgnTRe2Mahx87U5di 2oaOypnnC4haPK/eFnp6vyUk5m+88ZUDHAwkRRjZyUGMLyse4a7CV96bHUhw4CSony86 8WBQ== X-Gm-Message-State: AMke39luRn39Yn7co5HBUBEKvmdzUdyRmF+MklRIHVt21KExnhC0t0aRwaxiE1ru9HNuhw== X-Received: by 10.46.77.147 with SMTP id c19mr6559528ljd.105.1487693780849; Tue, 21 Feb 2017 08:16:20 -0800 (PST) Received: from erik-mate-1604.lan (90-227-62-61-no75.tbcn.telia.com. [90.227.62.61]) by smtp.gmail.com with ESMTPSA id t29sm6336069ljd.39.2017.02.21.08.16.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 21 Feb 2017 08:16:20 -0800 (PST) From: Erik Stromdahl To: kvalo@qca.qualcomm.com, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org Subject: [RFC v4 09/21] ath10k: htc: ready_ext msg support Date: Tue, 21 Feb 2017 17:15:29 +0100 Message-Id: <1487693741-10042-10-git-send-email-erik.stromdahl@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1487693741-10042-1-git-send-email-erik.stromdahl@gmail.com> References: <1487693741-10042-1-git-send-email-erik.stromdahl@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170221_161642_967547_E0079247 X-CRM114-Status: GOOD ( 13.59 ) 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 Added support for extended ready message. The extended ready message contains the maximum bundle count supported by SDIO chipsets. It is transmitted by SDIO chipset only and replaces the "standard" ready message in this case. Signed-off-by: Erik Stromdahl --- drivers/net/wireless/ath/ath10k/htc.c | 28 ++++++++++++++++++++++------ drivers/net/wireless/ath/ath10k/htc.h | 5 +++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/htc.c b/drivers/net/wireless/ath/ath10k/htc.c index eb036b3..3eaa9a8 100644 --- a/drivers/net/wireless/ath/ath10k/htc.c +++ b/drivers/net/wireless/ath/ath10k/htc.c @@ -581,8 +581,6 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc) unsigned long time_left; struct ath10k_htc_msg *msg; u16 message_id; - u16 credit_count; - u16 credit_size; time_left = wait_for_completion_timeout(&htc->ctl_resp, ATH10K_HTC_WAIT_TIMEOUT_HZ); @@ -619,16 +617,14 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc) msg = (struct ath10k_htc_msg *)htc->control_resp_buffer; message_id = __le16_to_cpu(msg->hdr.message_id); - credit_count = __le16_to_cpu(msg->ready.credit_count); - credit_size = __le16_to_cpu(msg->ready.credit_size); if (message_id != ATH10K_HTC_MSG_READY_ID) { ath10k_err(ar, "Invalid HTC ready msg: 0x%x\n", message_id); return -ECOMM; } - htc->total_transmit_credits = credit_count; - htc->target_credit_size = credit_size; + htc->total_transmit_credits = __le16_to_cpu(msg->ready.credit_count); + htc->target_credit_size = __le16_to_cpu(msg->ready.credit_size); ath10k_dbg(ar, ATH10K_DBG_HTC, "Target ready! transmit resources: %d size:%d\n", @@ -641,6 +637,19 @@ int ath10k_htc_wait_target(struct ath10k_htc *htc) return -ECOMM; } + /* The only way to determine if the ready message is an extended + * message is from the size. + */ + if (htc->control_resp_len >= + sizeof(msg->hdr) + sizeof(msg->ready_ext)) { + htc->max_msgs_per_htc_bundle = + min_t(u8, msg->ready_ext.max_msgs_per_htc_bundle, + HTC_HOST_MAX_MSG_PER_BUNDLE); + ath10k_dbg(ar, ATH10K_DBG_HTC, + "Extended ready message. RX bundle size: %d\n", + htc->max_msgs_per_htc_bundle); + } + return 0; } @@ -836,6 +845,13 @@ int ath10k_htc_start(struct ath10k_htc *htc) msg->hdr.message_id = __cpu_to_le16(ATH10K_HTC_MSG_SETUP_COMPLETE_EX_ID); + if (ar->hif.bus == ATH10K_BUS_SDIO) { + /* Extra setup params used by SDIO */ + msg->setup_complete_ext.flags = + __cpu_to_le32(ATH10K_HTC_SETUP_COMPLETE_FLAGS_RX_BNDL_EN); + msg->setup_complete_ext.max_msgs_per_bundled_recv = + htc->max_msgs_per_htc_bundle; + } ath10k_dbg(ar, ATH10K_DBG_HTC, "HTC is using TX credit flow control\n"); status = ath10k_htc_send(htc, ATH10K_HTC_EP_0, skb); diff --git a/drivers/net/wireless/ath/ath10k/htc.h b/drivers/net/wireless/ath/ath10k/htc.h index 9a1db90..566e437 100644 --- a/drivers/net/wireless/ath/ath10k/htc.h +++ b/drivers/net/wireless/ath/ath10k/htc.h @@ -112,6 +112,10 @@ enum ath10k_htc_conn_svc_status { ATH10K_HTC_CONN_SVC_STATUS_NO_MORE_EP = 4 }; +enum ath10k_htc_setup_complete_flags { + ATH10K_HTC_SETUP_COMPLETE_FLAGS_RX_BNDL_EN = 1 +}; + struct ath10k_ath10k_htc_msg_hdr { __le16 message_id; /* @enum htc_message_id */ } __packed; @@ -360,6 +364,7 @@ struct ath10k_htc { int total_transmit_credits; int target_credit_size; + u8 max_msgs_per_htc_bundle; }; int ath10k_htc_init(struct ath10k *ar);