From patchwork Tue Aug 22 15:54:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Antipov X-Patchwork-Id: 13361116 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 049BEEE4993 for ; Tue, 22 Aug 2023 15:56:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237441AbjHVP4i (ORCPT ); Tue, 22 Aug 2023 11:56:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232272AbjHVP4h (ORCPT ); Tue, 22 Aug 2023 11:56:37 -0400 Received: from forward102c.mail.yandex.net (forward102c.mail.yandex.net [178.154.239.213]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 506F1E4F for ; Tue, 22 Aug 2023 08:56:10 -0700 (PDT) Received: from mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net [IPv6:2a02:6b8:c12:1d9d:0:640:49d1:0]) by forward102c.mail.yandex.net (Yandex) with ESMTP id 1ADC56003E; Tue, 22 Aug 2023 18:56:06 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 4uL3vjKWqKo0-fmblPye8; Tue, 22 Aug 2023 18:56:05 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1692719765; bh=cojbDnJhgQSIbg/drYDC8Dnm0AV1m+AEuwveaeehzxU=; h=Message-ID:Date:Cc:Subject:To:From; b=EOWl7sBvGRlRLvssG4EDAevBOly6RHilmJOY09dmtbHm1oMpg0uBqew4gAcyrk2ff ntCGdCLopiNC/pu8YZA1Y5xvBsCvgPzlBVUPyZDg8EQW3NvpwugD9nl2EV7yErp4hh TacF2fmqWCvhjTmR1vA8RD6nz9HQdyw0MISDfqxs= Authentication-Results: mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net; dkim=pass header.i=@yandex.ru From: Dmitry Antipov To: Jeff Johnson Cc: Kalle Valo , ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, lvc-project@linuxtesting.org, Dmitry Antipov Subject: [PATCH 1/3] wifi: ath10k: cleanup CE initialization Date: Tue, 22 Aug 2023 18:54:24 +0300 Message-ID: <20230822155532.95983-1-dmantipov@yandex.ru> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Commit 25d0dbcbd5c7 ("ath10k: split ce initialization and allocation") changes 'ath10k_ce_init_src_ring()' and 'ath10k_ce_init_dest_ring()' so these functions can't return -ENOMEM but always returns 0. This way both of the above may be converted to 'void' and related code may be simplified as well. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Dmitry Antipov --- drivers/net/wireless/ath/ath10k/ahb.c | 6 +--- drivers/net/wireless/ath/ath10k/ce.c | 44 +++++++------------------- drivers/net/wireless/ath/ath10k/ce.h | 4 +-- drivers/net/wireless/ath/ath10k/pci.c | 29 ++++------------- drivers/net/wireless/ath/ath10k/pci.h | 2 +- drivers/net/wireless/ath/ath10k/snoc.c | 22 +++---------- 6 files changed, 27 insertions(+), 80 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/ahb.c b/drivers/net/wireless/ath/ath10k/ahb.c index 76efea2f1138..c3a2eeb5542d 100644 --- a/drivers/net/wireless/ath/ath10k/ahb.c +++ b/drivers/net/wireless/ath/ath10k/ahb.c @@ -655,11 +655,7 @@ static int ath10k_ahb_hif_power_up(struct ath10k *ar, goto out; } - ret = ath10k_pci_init_pipes(ar); - if (ret) { - ath10k_err(ar, "failed to initialize CE: %d\n", ret); - goto out; - } + ath10k_pci_init_pipes(ar); ret = ath10k_pci_init_config(ar); if (ret) { diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c index c27b8204718a..73aa3632b23c 100644 --- a/drivers/net/wireless/ath/ath10k/ce.c +++ b/drivers/net/wireless/ath/ath10k/ce.c @@ -1352,9 +1352,9 @@ void ath10k_ce_enable_interrupts(struct ath10k *ar) } EXPORT_SYMBOL(ath10k_ce_enable_interrupts); -static int ath10k_ce_init_src_ring(struct ath10k *ar, - unsigned int ce_id, - const struct ce_attr *attr) +static void ath10k_ce_init_src_ring(struct ath10k *ar, + unsigned int ce_id, + const struct ce_attr *attr) { struct ath10k_ce *ce = ath10k_ce_priv(ar); struct ath10k_ce_pipe *ce_state = &ce->ce_states[ce_id]; @@ -1389,13 +1389,11 @@ static int ath10k_ce_init_src_ring(struct ath10k *ar, ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot init ce src ring id %d entries %d base_addr %pK\n", ce_id, nentries, src_ring->base_addr_owner_space); - - return 0; } -static int ath10k_ce_init_dest_ring(struct ath10k *ar, - unsigned int ce_id, - const struct ce_attr *attr) +static void ath10k_ce_init_dest_ring(struct ath10k *ar, + unsigned int ce_id, + const struct ce_attr *attr) { struct ath10k_ce *ce = ath10k_ce_priv(ar); struct ath10k_ce_pipe *ce_state = &ce->ce_states[ce_id]; @@ -1427,8 +1425,6 @@ static int ath10k_ce_init_dest_ring(struct ath10k *ar, ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot ce dest ring id %d entries %d base_addr %pK\n", ce_id, nentries, dest_ring->base_addr_owner_space); - - return 0; } static int ath10k_ce_alloc_shadow_base(struct ath10k *ar, @@ -1659,30 +1655,14 @@ ath10k_ce_alloc_dest_ring_64(struct ath10k *ar, unsigned int ce_id, * initialization. It may be that only one side or the other is * initialized by software/firmware. */ -int ath10k_ce_init_pipe(struct ath10k *ar, unsigned int ce_id, - const struct ce_attr *attr) +void ath10k_ce_init_pipe(struct ath10k *ar, unsigned int ce_id, + const struct ce_attr *attr) { - int ret; - - if (attr->src_nentries) { - ret = ath10k_ce_init_src_ring(ar, ce_id, attr); - if (ret) { - ath10k_err(ar, "Failed to initialize CE src ring for ID: %d (%d)\n", - ce_id, ret); - return ret; - } - } - - if (attr->dest_nentries) { - ret = ath10k_ce_init_dest_ring(ar, ce_id, attr); - if (ret) { - ath10k_err(ar, "Failed to initialize CE dest ring for ID: %d (%d)\n", - ce_id, ret); - return ret; - } - } + if (attr->src_nentries) + ath10k_ce_init_src_ring(ar, ce_id, attr); - return 0; + if (attr->dest_nentries) + ath10k_ce_init_dest_ring(ar, ce_id, attr); } EXPORT_SYMBOL(ath10k_ce_init_pipe); diff --git a/drivers/net/wireless/ath/ath10k/ce.h b/drivers/net/wireless/ath/ath10k/ce.h index 666ce384a1d8..a0b408176f7f 100644 --- a/drivers/net/wireless/ath/ath10k/ce.h +++ b/drivers/net/wireless/ath/ath10k/ce.h @@ -220,8 +220,8 @@ int ath10k_ce_completed_send_next_nolock(struct ath10k_ce_pipe *ce_state, /*==================CE Engine Initialization=======================*/ -int ath10k_ce_init_pipe(struct ath10k *ar, unsigned int ce_id, - const struct ce_attr *attr); +void ath10k_ce_init_pipe(struct ath10k *ar, unsigned int ce_id, + const struct ce_attr *attr); void ath10k_ce_deinit_pipe(struct ath10k *ar, unsigned int ce_id); int ath10k_ce_alloc_pipe(struct ath10k *ar, int ce_id, const struct ce_attr *attr); diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c index a7f44f6335fb..f6988075cd83 100644 --- a/drivers/net/wireless/ath/ath10k/pci.c +++ b/drivers/net/wireless/ath/ath10k/pci.c @@ -2524,21 +2524,13 @@ void ath10k_pci_free_pipes(struct ath10k *ar) ath10k_ce_free_pipe(ar, i); } -int ath10k_pci_init_pipes(struct ath10k *ar) +void ath10k_pci_init_pipes(struct ath10k *ar) { struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); - int i, ret; - - for (i = 0; i < CE_COUNT; i++) { - ret = ath10k_ce_init_pipe(ar, i, &ar_pci->attr[i]); - if (ret) { - ath10k_err(ar, "failed to initialize copy engine pipe %d: %d\n", - i, ret); - return ret; - } - } + int i; - return 0; + for (i = 0; i < CE_COUNT; i++) + ath10k_ce_init_pipe(ar, i, &ar_pci->attr[i]); } static bool ath10k_pci_has_fw_crashed(struct ath10k *ar) @@ -2703,12 +2695,7 @@ static int ath10k_pci_qca988x_chip_reset(struct ath10k *ar) * sufficient to verify if device is capable of booting * firmware blob. */ - ret = ath10k_pci_init_pipes(ar); - if (ret) { - ath10k_warn(ar, "failed to init copy engine: %d\n", - ret); - continue; - } + ath10k_pci_init_pipes(ar); ret = ath10k_pci_diag_read32(ar, QCA988X_HOST_INTEREST_ADDRESS, &val); @@ -2846,11 +2833,7 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar, goto err_sleep; } - ret = ath10k_pci_init_pipes(ar); - if (ret) { - ath10k_err(ar, "failed to initialize CE: %d\n", ret); - goto err_sleep; - } + ath10k_pci_init_pipes(ar); ret = ath10k_pci_init_config(ar); if (ret) { diff --git a/drivers/net/wireless/ath/ath10k/pci.h b/drivers/net/wireless/ath/ath10k/pci.h index 480cd97ab739..3b3ded87aef9 100644 --- a/drivers/net/wireless/ath/ath10k/pci.h +++ b/drivers/net/wireless/ath/ath10k/pci.h @@ -238,7 +238,7 @@ void ath10k_pci_free_pipes(struct ath10k *ar); void ath10k_pci_rx_replenish_retry(struct timer_list *t); void ath10k_pci_ce_deinit(struct ath10k *ar); void ath10k_pci_init_napi(struct ath10k *ar); -int ath10k_pci_init_pipes(struct ath10k *ar); +void ath10k_pci_init_pipes(struct ath10k *ar); int ath10k_pci_init_config(struct ath10k *ar); void ath10k_pci_rx_post(struct ath10k *ar); void ath10k_pci_flush(struct ath10k *ar); diff --git a/drivers/net/wireless/ath/ath10k/snoc.c b/drivers/net/wireless/ath/ath10k/snoc.c index 26214c00cd0d..ff902413ede2 100644 --- a/drivers/net/wireless/ath/ath10k/snoc.c +++ b/drivers/net/wireless/ath/ath10k/snoc.c @@ -939,20 +939,12 @@ static int ath10k_snoc_hif_start(struct ath10k *ar) return 0; } -static int ath10k_snoc_init_pipes(struct ath10k *ar) +static void ath10k_snoc_init_pipes(struct ath10k *ar) { - int i, ret; - - for (i = 0; i < CE_COUNT; i++) { - ret = ath10k_ce_init_pipe(ar, i, &host_ce_config_wlan[i]); - if (ret) { - ath10k_err(ar, "failed to initialize copy engine pipe %d: %d\n", - i, ret); - return ret; - } - } + int i; - return 0; + for (i = 0; i < CE_COUNT; i++) + ath10k_ce_init_pipe(ar, i, &host_ce_config_wlan[i]); } static int ath10k_snoc_wlan_enable(struct ath10k *ar, @@ -1084,11 +1076,7 @@ static int ath10k_snoc_hif_power_up(struct ath10k *ar, ath10k_ce_alloc_rri(ar); - ret = ath10k_snoc_init_pipes(ar); - if (ret) { - ath10k_err(ar, "failed to initialize CE: %d\n", ret); - goto err_free_rri; - } + ath10k_snoc_init_pipes(ar); return 0; From patchwork Tue Aug 22 15:54:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Antipov X-Patchwork-Id: 13361118 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 054C5EE4996 for ; Tue, 22 Aug 2023 15:57:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237434AbjHVP5B (ORCPT ); Tue, 22 Aug 2023 11:57:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51560 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237442AbjHVP5A (ORCPT ); Tue, 22 Aug 2023 11:57:00 -0400 Received: from forward103c.mail.yandex.net (forward103c.mail.yandex.net [178.154.239.214]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEBAFCDF for ; Tue, 22 Aug 2023 08:56:41 -0700 (PDT) Received: from mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net [IPv6:2a02:6b8:c12:1d9d:0:640:49d1:0]) by forward103c.mail.yandex.net (Yandex) with ESMTP id 2CE2F60089; Tue, 22 Aug 2023 18:56:08 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 4uL3vjKWqKo0-czQgZIdE; Tue, 22 Aug 2023 18:56:07 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1692719767; bh=QopfTMY6oIByo/1txuoicCgv2X2OIIw12H4G6BeLezs=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=gpnW/kTT5ZfRVYVCIcU/aTFAxfQ3GrvoGndLWnQ3TKXmzeHMa6pl2E1jCxjc7X+Do uuGGXL46fi6atUuF4bCYu/w1u0rrhyplbD4PYDi4aIVTRnuUbGJXaeioPLVb3AZcdR GDY/4MQYK2dP1zPmrke1cfG7YVu7hKKUl9d/z9gs= Authentication-Results: mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net; dkim=pass header.i=@yandex.ru From: Dmitry Antipov To: Jeff Johnson Cc: Kalle Valo , ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, lvc-project@linuxtesting.org, Dmitry Antipov Subject: [PATCH 2/3] wifi: ath10k: simplify ath10k_peer_assoc_h_vht() Date: Tue, 22 Aug 2023 18:54:25 +0300 Message-ID: <20230822155532.95983-2-dmantipov@yandex.ru> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230822155532.95983-1-dmantipov@yandex.ru> References: <20230822155532.95983-1-dmantipov@yandex.ru> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Commit 3db24065c2c8 ("ath10k: enable VHT160 and VHT80+80 modes") introduces 'get_160mhz_nss_from_maxrate()' which never returns 0, which means that 'ath10k_peer_assoc_h_vht()' may be simplified. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Dmitry Antipov --- drivers/net/wireless/ath/ath10k/mac.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index 03e7bc5b6c0b..148d0fab4418 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -2631,12 +2631,8 @@ static void ath10k_peer_assoc_h_vht(struct ath10k *ar, u32 max_rate; max_rate = arg->peer_vht_rates.rx_max_rate; - rx_nss = get_160mhz_nss_from_maxrate(max_rate); - - if (rx_nss == 0) - rx_nss = arg->peer_num_spatial_streams; - else - rx_nss = min(arg->peer_num_spatial_streams, rx_nss); + rx_nss = min(arg->peer_num_spatial_streams, + get_160mhz_nss_from_maxrate(max_rate)); max_rate = hw->vht160_mcs_tx_highest; rx_nss = min(rx_nss, get_160mhz_nss_from_maxrate(max_rate)); From patchwork Tue Aug 22 15:54:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Antipov X-Patchwork-Id: 13361117 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1E99EE4996 for ; Tue, 22 Aug 2023 15:56:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232272AbjHVP4l (ORCPT ); Tue, 22 Aug 2023 11:56:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237442AbjHVP4k (ORCPT ); Tue, 22 Aug 2023 11:56:40 -0400 Received: from forward101c.mail.yandex.net (forward101c.mail.yandex.net [178.154.239.212]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8B48CE6 for ; Tue, 22 Aug 2023 08:56:17 -0700 (PDT) Received: from mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net [IPv6:2a02:6b8:c12:1d9d:0:640:49d1:0]) by forward101c.mail.yandex.net (Yandex) with ESMTP id 8141860080; Tue, 22 Aug 2023 18:56:09 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 4uL3vjKWqKo0-Nx2X9gnO; Tue, 22 Aug 2023 18:56:08 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1692719768; bh=rVXkd8OYRs+EPlwMCcIMTR9cyotrLl0sPBMwsp7sYvw=; h=Message-ID:Date:In-Reply-To:Cc:Subject:References:To:From; b=Vhr0MN4ORiARkkPlP3ddijC7m5TutfSgd62hj+OYfuNxXZclSBY3+uWuT1+L+zsLn 2SfR+cKU46I138UqwwujEfe+qihRfF550mZCHc/mCogrU/rikNY0js3b89G55TiHw2 gf9OsXPHRArNZW3YlVd7nSK2tHq2uGZDRjJbNz8Q= Authentication-Results: mail-nwsmtp-smtp-production-main-91.myt.yp-c.yandex.net; dkim=pass header.i=@yandex.ru From: Dmitry Antipov To: Jeff Johnson Cc: Kalle Valo , ath10k@lists.infradead.org, linux-wireless@vger.kernel.org, lvc-project@linuxtesting.org, Dmitry Antipov Subject: [PATCH 3/3] wifi: ath10k: simplify ath10k_pci_pm_suspend() Date: Tue, 22 Aug 2023 18:54:26 +0300 Message-ID: <20230822155532.95983-3-dmantipov@yandex.ru> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230822155532.95983-1-dmantipov@yandex.ru> References: <20230822155532.95983-1-dmantipov@yandex.ru> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Since 'ath10k_pci_suspend()' always returns 0, it may be converted to 'void' and 'ath10k_pci_pm_suspend()' may be simplified accordingly. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Dmitry Antipov --- drivers/net/wireless/ath/ath10k/pci.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c index f6988075cd83..16037e77264b 100644 --- a/drivers/net/wireless/ath/ath10k/pci.c +++ b/drivers/net/wireless/ath/ath10k/pci.c @@ -2871,7 +2871,7 @@ static int ath10k_pci_hif_suspend(struct ath10k *ar) return 0; } -static int ath10k_pci_suspend(struct ath10k *ar) +static void ath10k_pci_suspend(struct ath10k *ar) { /* The grace timer can still be counting down and ar->ps_awake be true. * It is known that the device may be asleep after resuming regardless @@ -2879,8 +2879,6 @@ static int ath10k_pci_suspend(struct ath10k *ar) * device is asleep before proceeding. */ ath10k_pci_sleep_sync(ar); - - return 0; } static int ath10k_pci_hif_resume(struct ath10k *ar) @@ -3734,13 +3732,9 @@ MODULE_DEVICE_TABLE(pci, ath10k_pci_id_table); static __maybe_unused int ath10k_pci_pm_suspend(struct device *dev) { struct ath10k *ar = dev_get_drvdata(dev); - int ret; - ret = ath10k_pci_suspend(ar); - if (ret) - ath10k_warn(ar, "failed to suspend hif: %d\n", ret); - - return ret; + ath10k_pci_suspend(ar); + return 0; } static __maybe_unused int ath10k_pci_pm_resume(struct device *dev)