Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp4299890pxb; Mon, 25 Oct 2021 01:17:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw0TMHCZPoiWE7Rwft6tF59L20J/tGAevGR0Pc9V0j3GYEuYKq8y7NRX8Gm4oj3dJH3Rx0M X-Received: by 2002:aa7:88cd:0:b0:44d:d844:4f55 with SMTP id k13-20020aa788cd000000b0044dd8444f55mr16693208pff.81.1635149874403; Mon, 25 Oct 2021 01:17:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635149874; cv=none; d=google.com; s=arc-20160816; b=gG8U/6602v0DMzoaNxk3isK3FiBIrkynpF6aTk5Se7pHDFrwp9hwFnLJ8MeEOJIXu5 1J+7jqrAtCVh8fFTyv7gAXUoTsZL+W2dJ9KOHVgwtdpsApwUfmxE8VtgjNbtvwcsIIx1 t1j+PTRi3TfKTU901OF9hPhVLvNrhGTtt47hiyONSGTWCGLQE0KieFdDsNsr9yECo6Bq KaT1pOM0rdxhjWv0xv+Zbme+mlGFB/fxy+VkBhwkAXWkmxAr0HZ4u7XjPg/kHziSC1zh pXihlRNHQBG8JCGI1d7AsrLS7d+bsJiQgv2SnMWG6wf9Q/VIyO7CRtHhX3tj18OoPEjQ l9Aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=/ONHwovzGtX6c4QtNm3dsEQglHqM8sqBpiVTMmVOH/E=; b=HRTzqzQ/0n1qeXTXZH+CT0dKXMGFynkhKeinzJPtU4fgerW5IYsVpUfPqEkcDDviRX BF+IMDTQs0CtNKNQz5IlzbgH/izkHy4iListX2h9PcPNicSJyRYu1M2tczy4RSUHfEdV oWaFWuxYBkXm12HwzTmqHXHzKl2ubmvj0avrYwaVyOJzcf8SY1ASWblJvjILGCLN9HIM 8tSiGLa6aQTLOmT3WgQ7ehFMc8StKdcRcwnPMf10sfIjJe/2E+ecDzoQ6X/9Y1v4u96k MBr8Oo5uMlN5X0eKcSjg33BpYl1bOL0np/0vJX09p80l5arZrWEBnYUfL3DG5gvBXn7T wxbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iSk33Ikv; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id oo9si27577787pjb.169.2021.10.25.01.17.45; Mon, 25 Oct 2021 01:17:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iSk33Ikv; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231251AbhJYITN (ORCPT + 65 others); Mon, 25 Oct 2021 04:19:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230338AbhJYITN (ORCPT ); Mon, 25 Oct 2021 04:19:13 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C7D9C061745 for ; Mon, 25 Oct 2021 01:16:51 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id d3so7103036wrh.8 for ; Mon, 25 Oct 2021 01:16:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=/ONHwovzGtX6c4QtNm3dsEQglHqM8sqBpiVTMmVOH/E=; b=iSk33Ikv4ZsQOw+/PcaHGspL+SDokjPfkC0ZtGZIpGxaQyk4Sn3FNO7KwZ1IkeAY6C Oqo1WlySWRS3Xx33kaIVxgE3PB00n8WCJSU4HWzsjkgcN5sGCnzdq7/UTff1oSEsntrc pHViH+xb7/mUccTwDjtOK7bE/Op+TFLCyNn42OB2nTHFNqd3v2bTZBLK+Dp6gBLhpxmQ kHRsoWXHZACOjz4KHFUEqlXG/yMKzB6M3BuFGlANcq1KIeJa0fHxRo64GYTdG3SSXv3N iWCi3ZgJ90cTSBn0JlXCmf+5tOkvh3hAexJVP9iY0UFMUWimO3ihY0JcIGhGmgsOf/xl MqKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=/ONHwovzGtX6c4QtNm3dsEQglHqM8sqBpiVTMmVOH/E=; b=f36sCNKtPhgowvflYJaeXTC/bdEfX+Ch3xfi2ogcqjrqCtr3ZvpIIhng/7kim59528 gdpQLdTK11CyIPKnVqfCs/ThtC5yTQlT32WlIVimQxU5mHbS3zMLZeeKcrdmKtpBqKG8 PiFr0/QQrbIJfsFGRj6uwTuCoAlwWr6aTdtWKfNL987ZBQCO3cQoljVaMLAeIFj/WwD/ FQbyDMFKf3wvEH/7km9paftuc4P4nozzbe6MXRj6s2jqZz7byQhubtqDrMJbdm2FEfX3 c2k3iWQOTbsu9Aqano4S/Pe532TO9zVdgXK7r3y2fDDqLMYFG3lxz/7T0UlijyEGj8Ja 23OQ== X-Gm-Message-State: AOAM531lqK4aEaC0Yf4SkywSGuzKWJwKxovmSEOX5r5A/lzowJQ0rj6w wgpr1kSsFkeS3qUmKqyKNW1P1w== X-Received: by 2002:adf:e0c1:: with SMTP id m1mr21987545wri.241.1635149809805; Mon, 25 Oct 2021 01:16:49 -0700 (PDT) Received: from localhost.localdomain ([88.160.176.23]) by smtp.gmail.com with ESMTPSA id 12sm6409449wmk.34.2021.10.25.01.16.48 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Oct 2021 01:16:49 -0700 (PDT) From: Loic Poulain To: kvalo@codeaurora.org Cc: wcn36xx@lists.infradead.org, linux-wireless@vger.kernel.org, bryan.odonoghue@linaro.org, Loic Poulain Subject: [PATCH] wcn36xx: Fix packet drop on resume Date: Mon, 25 Oct 2021 10:28:16 +0200 Message-Id: <1635150496-19290-1-git-send-email-loic.poulain@linaro.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org If the system is resumed because of an incoming packet, the wcn36xx RX interrupts is fired before actual resuming of the wireless/mac80211 stack, causing any received packets to be simply dropped. E.g. a ping request causes a system resume, but is dropped and so never forwarded to the IP stack. This change fixes that, disabling DMA interrupts on suspend to no pass packets until mac80211 is resumed and ready to handle them. Note that it's not incompatible with RX irq wake. Signed-off-by: Loic Poulain --- drivers/net/wireless/ath/wcn36xx/main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c index a42eae6..a650b9e 100644 --- a/drivers/net/wireless/ath/wcn36xx/main.c +++ b/drivers/net/wireless/ath/wcn36xx/main.c @@ -1137,6 +1137,13 @@ static int wcn36xx_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wow) goto out; ret = wcn36xx_smd_wlan_host_suspend_ind(wcn); } + + /* Disable IRQ, we don't want to handle any packet before mac80211 is + * resumed and ready to receive packets. + */ + disable_irq(wcn->tx_irq); + disable_irq(wcn->rx_irq); + out: mutex_unlock(&wcn->conf_mutex); return ret; @@ -1159,6 +1166,10 @@ static int wcn36xx_resume(struct ieee80211_hw *hw) wcn36xx_smd_ipv6_ns_offload(wcn, vif, false); wcn36xx_smd_arp_offload(wcn, vif, false); } + + enable_irq(wcn->tx_irq); + enable_irq(wcn->rx_irq); + mutex_unlock(&wcn->conf_mutex); return 0; -- 2.7.4