Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp4463075ybi; Tue, 11 Jun 2019 07:06:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqwoqGUxLIu1klEFbeeH6Qv0D8cAkFf7FxUoD70f+lZ7LNp1T0gcV0Eee1MvSakQx+rPG9og X-Received: by 2002:aa7:8e46:: with SMTP id d6mr79956341pfr.91.1560261969096; Tue, 11 Jun 2019 07:06:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560261969; cv=none; d=google.com; s=arc-20160816; b=KPMrWEdvOv52uPK83pgHc8L34BzKM6dTjXiz7JIVX2N9qBYkuBgkPnY/hRFjYMN9Nc xK3eK3aAfwF7Ocyo5RuflyR+1aNbY9Q3JNle4IRFMlao+vaNvfPpAXvDMCdK8R2jEmIE zu/wqH00nT3aE79umeM4GxB/h3zYRx9Gbqt8vvqyiFjvloFu6QdjtfSPvZnhg6VahNmw 3vqoCzqNWWBIusuLyMESHVLV2gFrWKpYagMpxf/T3plf+c7+2W+itr0RuEQAF+idmhEU GhLik97w9yn375Qlwn9+ER6N0lUKyMSwaVU+8Jv3lioTtHsA4/RzXl5a/W4kbBgEwQhi FO3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter; bh=yArwEU6daWaFYRDc/nGFrc6sv1fgiX3c6YkMQ05tYNk=; b=Y5P/zhZQt3XKk490ksyVyHd/0nb0WTYga5DWCNTO/e8MO+8ema2rj0N3MOakpHPL34 lJVypasOCuipB3pE0fz16eikDK2j3m2MWyKdrsFpqK/3EZMoe020I4HTauJM7ff2s5bW hBTqyTgpMqaDloTqtLxQUpNAqiBAPoT1AfHOOu/9OCIxfLlNdXX7YORRosGkCr7EwlMp ZazzsKW0kw1qD+egPldL4uZ4plLsZd2wlvhXG7gusAgaDT9PqR2EeKTZGt1XLMQVo65u nUgyfot9M00+ag1HOj7lguIPwFESmNCacrQNVncAvDRuwlqZZUGHzOfOAuYWq5kMjF3V zH6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@neratec.com header.s=9F5C293A-195B-11E9-BBA5-B4F3B9D999CA header.b=AVvqjA1L; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=neratec.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a2si1861945pgq.298.2019.06.11.07.05.49; Tue, 11 Jun 2019 07:06:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-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=@neratec.com header.s=9F5C293A-195B-11E9-BBA5-B4F3B9D999CA header.b=AVvqjA1L; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=neratec.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2404034AbfFKNg6 (ORCPT + 99 others); Tue, 11 Jun 2019 09:36:58 -0400 Received: from mail.neratec.com ([46.140.151.2]:47108 "EHLO mail.neratec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2403885AbfFKNg6 (ORCPT ); Tue, 11 Jun 2019 09:36:58 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.neratec.com (Postfix) with ESMTP id 83704CE037C; Tue, 11 Jun 2019 15:36:56 +0200 (CEST) Received: from mail.neratec.com ([127.0.0.1]) by localhost (mail.neratec.com [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id Qj05xX-R65vF; Tue, 11 Jun 2019 15:36:56 +0200 (CEST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.neratec.com (Postfix) with ESMTP id 60FE8CE0391; Tue, 11 Jun 2019 15:36:56 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.neratec.com 60FE8CE0391 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neratec.com; s=9F5C293A-195B-11E9-BBA5-B4F3B9D999CA; t=1560260216; bh=yArwEU6daWaFYRDc/nGFrc6sv1fgiX3c6YkMQ05tYNk=; h=From:To:Date:Message-Id; b=AVvqjA1LgVlsSnyJrObFggwjiUKniFpSqRY2sr3lCz3QicAZ0VBjxomRrRYmFwgk/ 53j1hcMcWCIY2+wkpujxKKIkuxJGEt4Fk8KL2jDizw7FL+0TgRSdZEQ5WYdSLC7RP5 633Dl2x7dDFSfFtmLpbiiVsMyEkhnHL9rDk0vG5wFZRY/JfaMM82LvhJYqWyFBLGFS K74N2fXaktQRHdFxU4H6ySdp50kk4G2QaTBUTjIeP5XXtaFFgCjZzC4WYrlPKxewZx 6gt8V9Jn1w9kFmRY1iVAJK1dAHlzLtvT2Bj2T+1RQfAUdctC3x2CDV9GT8ozyx/Y3K UYoHRNiCP1L9g== X-Virus-Scanned: amavisd-new at neratec.com Received: from mail.neratec.com ([127.0.0.1]) by localhost (mail.neratec.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id e2QVJmLtjwjt; Tue, 11 Jun 2019 15:36:56 +0200 (CEST) Received: from zefir.lan.neratec.com (zefir.lan.neratec.com [172.29.101.12]) by mail.neratec.com (Postfix) with ESMTPSA id 42CEECE037C; Tue, 11 Jun 2019 15:36:56 +0200 (CEST) From: Zefir Kurtisi To: linux-wireless@vger.kernel.org Cc: kvalo@codeaurora.org, nbd@nbd.name Subject: [PATCH v2] ath9k: correctly handle short radar pulses (fixes 3c0efb745a) Date: Tue, 11 Jun 2019 15:36:56 +0200 Message-Id: <20190611133656.16964-1-zefir.kurtisi@neratec.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190611131006.29715-1-zefir.kurtisi@neratec.com> References: <20190611131006.29715-1-zefir.kurtisi@neratec.com> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Changes to v1: * typos fixed in commit-message -- In commit '3c0efb745a17 ("ath9k: discard undersized packets")' the lower bound of RX packets was set to 10 (min ACK size) to filter those that would otherwise be treated as invalid at mac80211. Alas, short radar pulses are reported as PHY_ERROR frames with length set to 3. Therefore their detection stopped working after that commit. NOTE: ath9k drivers built thereafter will not pass DFS certification. This extends the criteria for short packets to explicitly handle PHY_ERROR frames. Signed-off-by: Zefir Kurtisi --- drivers/net/wireless/ath/ath9k/recv.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 4e97f7f3b2a3..5519c144d1f1 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -815,6 +815,7 @@ static int ath9k_rx_skb_preprocess(struct ath_softc *sc, struct ath_common *common = ath9k_hw_common(ah); struct ieee80211_hdr *hdr; bool discard_current = sc->rx.discard_next; + bool is_phyerr; /* * Discard corrupt descriptors which are marked in @@ -827,8 +828,11 @@ static int ath9k_rx_skb_preprocess(struct ath_softc *sc, /* * Discard zero-length packets and packets smaller than an ACK + * which are not PHY_ERROR (short radar pulses have a length of 3) */ - if (rx_stats->rs_datalen < 10) { + is_phyerr = rx_stats->rs_status & ATH9K_RXERR_PHY; + if (!rx_stats->rs_datalen || + (rx_stats->rs_datalen < 10 && !is_phyerr)) { RX_STAT_INC(sc, rx_len_err); goto corrupt; } -- 2.17.1