Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1078062ybl; Wed, 14 Aug 2019 10:20:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqzFXDIQEiKVUn6ro5YxEzVBJ9i0jQCSpphKyXsOhDsiel7tXqDYhFxw2OHZ9p+iwPAJRZQt X-Received: by 2002:a62:1941:: with SMTP id 62mr1047389pfz.188.1565803209573; Wed, 14 Aug 2019 10:20:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565803209; cv=none; d=google.com; s=arc-20160816; b=ZSktLohp2pY6pEgl8trKkkl7NGV9zjwGdgh8STWNRykjHc3RAXWSXmuWDCd2vc8Lq8 D9c9aqNM0uajdJsV7QdG4upHKBLmHNl+bVpsp7NrMgAN68naUVUrm8ojASZwD1KdhLlu 6lvawGVzUals6ZIGwP+v+N/Z+bwkg/LZ2D+Ds8QQQM2IgzyYQuWntYNuvhbrwNqMWONK mse9sgz/X95ElzAI/gGX5YUzB/WuLEaBbm4Yf1dERPyJtvqWYYYKSvbu63cYu5iF1epP fRM7H/XP5ZXXCusI09uFVUR3yJ26+0K3c0hRwG0oe0HQORI5L7HOvY4Q+AYn2DukWnJ3 dFmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=1jZwdkr1NVV01UjtoI+x6LcwM0HmlM/fnqNe3S/hR6M=; b=dhFSR1sNXLpanypJ3NQitCvMezH5bV0PPgMUNUPi+eYcKlbHwQ5ACuMch9NwJMljoH 6rKkksP7EgTDctxJjnTgRxonuPE2rM0Hd4UixcNNJdn0KHgMcooiOdDvPFnWNWBOMnGS bQqbPyPr0RMk0X1BC04APiwu0w4KqLy60XrDtF7ouwPyJJel7CeAOhExMmkUCvLF7h2k xguE9ByB+QJyVG4HkFuBy65QHnS9Wx+fcdGBoHusDqTzR738uIGRHnjHGIRK1dQgVDBw VYJI1zx2/VeNeO/oeOYqdXh2E5a9c/YbMU+gZYGL8JfabfD90jCak6BKz7Jxs9nLMTUM ml2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=FcTP8y2w; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b6si85307pfd.29.2019.08.14.10.19.53; Wed, 14 Aug 2019 10:20:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=FcTP8y2w; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730252AbfHNRMA (ORCPT + 99 others); Wed, 14 Aug 2019 13:12:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:35536 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730239AbfHNRL7 (ORCPT ); Wed, 14 Aug 2019 13:11:59 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C6F3E2063F; Wed, 14 Aug 2019 17:11:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565802718; bh=5KpzJcO9s1No6VYp64ZStfAjB04V+ezPbwatG7aZ2rs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FcTP8y2wsFsB1hDoi7V59ldphcEA7mViYe8RulWywuHTJTgdBYgyFmWHzlYJWw0nW LBb8R23AzJC3ViK5WtcAR3wnuSJEs/7LtZQl+2O0fWwKc5GPAZ2vlMKXvtHJQcrQba VzidnahqCSpnoWJWaJ4pWE5d/d7UY99ZNFUS/8YA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Luca Coelho , Johannes Berg Subject: [PATCH 4.19 90/91] iwlwifi: mvm: dont send GEO_TX_POWER_LIMIT on version < 41 Date: Wed, 14 Aug 2019 19:01:53 +0200 Message-Id: <20190814165754.073170009@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190814165748.991235624@linuxfoundation.org> References: <20190814165748.991235624@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Luca Coelho commit 39bd984c203e86f3109b49c2a2e20677c4d3ab65 upstream. Firmware versions before 41 don't support the GEO_TX_POWER_LIMIT command, and sending it to the firmware will cause a firmware crash. We allow this via debugfs, so we need to return an error value in case it's not supported. This had already been fixed during init, when we send the command if the ACPI WGDS table is present. Fix it also for the other, userspace-triggered case. Cc: stable@vger.kernel.org Fixes: 7fe90e0e3d60 ("iwlwifi: mvm: refactor geo init") Signed-off-by: Luca Coelho Signed-off-by: Johannes Berg Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c @@ -836,6 +836,17 @@ int iwl_mvm_sar_select_profile(struct iw return iwl_mvm_send_cmd_pdu(mvm, REDUCE_TX_POWER_CMD, 0, len, &cmd); } +static bool iwl_mvm_sar_geo_support(struct iwl_mvm *mvm) +{ + /* + * The GEO_TX_POWER_LIMIT command is not supported on earlier + * firmware versions. Unfortunately, we don't have a TLV API + * flag to rely on, so rely on the major version which is in + * the first byte of ucode_ver. + */ + return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 41; +} + int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm) { struct iwl_geo_tx_power_profiles_resp *resp; @@ -851,6 +862,9 @@ int iwl_mvm_get_sar_geo_profile(struct i .data = { &geo_cmd }, }; + if (!iwl_mvm_sar_geo_support(mvm)) + return -EOPNOTSUPP; + ret = iwl_mvm_send_cmd(mvm, &cmd); if (ret) { IWL_ERR(mvm, "Failed to get geographic profile info %d\n", ret); @@ -876,13 +890,7 @@ static int iwl_mvm_sar_geo_init(struct i int ret, i, j; u16 cmd_wide_id = WIDE_ID(PHY_OPS_GROUP, GEO_TX_POWER_LIMIT); - /* - * This command is not supported on earlier firmware versions. - * Unfortunately, we don't have a TLV API flag to rely on, so - * rely on the major version which is in the first byte of - * ucode_ver. - */ - if (IWL_UCODE_SERIAL(mvm->fw->ucode_ver) < 41) + if (!iwl_mvm_sar_geo_support(mvm)) return 0; ret = iwl_mvm_sar_get_wgds_table(mvm);