From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B88141DEFC1; Tue, 3 Sep 2024 20:42:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1725396177; cv=none; b=Nxh65QGUr+eP6RPjPOW4ipj2Y4tlWMvo8qJPbttVHoFGAHTOqqu/nKD2woVjQXqhbKTbznoZgRdgz5A4H5kDAXC/M+zjnTzpJfU7T3OJYKNBRGBzfKWaD57X2vVsHutATlhUdWkuWz5zTBKhJUcx/IsPi2TkKMTPax9Sb6gyW0g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1725396177; c=relaxed/simple; bh=NC0RD9xL56A/MqyBEqX/6EJmzNUsauOsFsoC6gOZo+k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D6t9oaQ5p8yIEryYO2LVRZcTND4P12TY1ambbhYqDk0XTr/r35LdJq6K41uahV/6nk2JlFgGuP/299fTyxe/gj5Ytn5/k0k+AolFAp/KQxMTGpMKHIHYj6XdfS8s96mhie1jcMhhdjNLymi3xl/OS0s0TFyAUvfvSCnGwgvAZts= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GzZt+kYs; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GzZt+kYs" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE2BDC4CEC8; Tue, 3 Sep 2024 20:42:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1725396177; bh=NC0RD9xL56A/MqyBEqX/6EJmzNUsauOsFsoC6gOZo+k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GzZt+kYsGJ3YuAUIqGS2ZQO/gn+7vb05A2OQIqeIOMg7ppymken7JPRN+dWghowwg nFhblKJs5bEcbdN3qnhCqyKtSg8SAB+AgfL2gs8vSMfqUt3QHaKRODRh50nuS2iAHe 0RXNOPLXPtsIVTBHEVswKrocyOgOhU8we+VQGPFPfOaE5fwhdFjDa4AFlXFmf4JJ/2 dOK72Tu7S9Ny9iJHtuCd9A6rKDctp0u9U1skFnGwP56rGCt3o9YMG+qx+FYzoiO2ZN Mz4jupXaV0Wh3cNpzYo56Qt+M8tus3LO4BL0jIXTvAe9Kcl2hoi/mDDZSVL+rUZuin ogFu8+CMPxBpg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Emmanuel Grumbach , Miri Korenblit , Johannes Berg , Sasha Levin , kvalo@kernel.org, gregory.greenman@intel.com, ilan.peer@intel.com, shaul.triebitz@intel.com, benjamin.berg@intel.com, linux-wireless@vger.kernel.org Subject: [PATCH AUTOSEL 6.10 20/22] wifi: iwlwifi: mvm: don't wait for tx queues if firmware is dead Date: Tue, 3 Sep 2024 15:22:07 -0400 Message-ID: <20240903192243.1107016-20-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240903192243.1107016-1-sashal@kernel.org> References: <20240903192243.1107016-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.10.7 Content-Transfer-Encoding: 8bit From: Emmanuel Grumbach [ Upstream commit 3a84454f5204718ca5b4ad2c1f0bf2031e2403d1 ] There is a WARNING in iwl_trans_wait_tx_queues_empty() (that was recently converted from just a message), that can be hit if we wait for TX queues to become empty after firmware died. Clearly, we can't expect anything from the firmware after it's declared dead. Don't call iwl_trans_wait_tx_queues_empty() in this case. While it could be a good idea to stop the flow earlier, the flush functions do some maintenance work that is not related to the firmware, so keep that part of the code running even when the firmware is not running. Signed-off-by: Emmanuel Grumbach Signed-off-by: Miri Korenblit Link: https://patch.msgid.link/20240825191257.a7cbd794cee9.I44a739fbd4ffcc46b83844dd1c7b2eb0c7b270f6@changeid [edit commit message] Signed-off-by: Johannes Berg Signed-off-by: Sasha Levin --- drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c index 259afecd1a98d..83551d962a46c 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c @@ -5819,6 +5819,10 @@ static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop) int i; if (!iwl_mvm_has_new_tx_api(mvm)) { + /* we can't ask the firmware anything if it is dead */ + if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, + &mvm->status)) + return; if (drop) { mutex_lock(&mvm->mutex); iwl_mvm_flush_tx_path(mvm, @@ -5914,8 +5918,11 @@ void iwl_mvm_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, /* this can take a while, and we may need/want other operations * to succeed while doing this, so do it without the mutex held + * If the firmware is dead, this can't work... */ - if (!drop && !iwl_mvm_has_new_tx_api(mvm)) + if (!drop && !iwl_mvm_has_new_tx_api(mvm) && + !test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, + &mvm->status)) iwl_trans_wait_tx_queues_empty(mvm->trans, msk); } -- 2.43.0