Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp4459482ybi; Tue, 11 Jun 2019 07:03:27 -0700 (PDT) X-Google-Smtp-Source: APXvYqwx3so/Hvevr8PtX316QCRAifCJ9QCfj8152H1bOSckODnNRufso4YA/B7fCPeTBmd5kJjP X-Received: by 2002:a65:620d:: with SMTP id d13mr20887963pgv.109.1560261807092; Tue, 11 Jun 2019 07:03:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560261807; cv=none; d=google.com; s=arc-20160816; b=H5EV90SUueswkOIOdZqJXiNrKipI0MIrLdbKk7BhQx8GHUU/AoJDv/gT6v7mr3CR2q /20WedX1BMgOBMxh2oXxLatBd8mMWDdtYhMF/ZQv/cbUaPAL4ngYQQQb6NsTm1ZQO/MJ GHYyJdZmxuFSw+krXet35jtztISp7H31TVePogEjGk3r044E5si4Qumv+Km/R4n15aqv QI4kVKe/kTKvl1h2ArVa6rwSCOO50wrbBASb/8AAf321QsBqk6Rd17foLthyExFuJqTt XQmK9joiMFRlZFy4NDG0whEUoM9oYPDbQwe4tF6VBpaPjODXah3AY6RaZ/hSyXCIPkfk c16w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=cR0VlKJmTQ98hSkbaKiEpGPhdOfGFhHJyWmYjhCNvSE=; b=0GubHhkljxglpwJpNSZx9xRotZSBSTI2d68OnhlQBmS9lhZM09jvc4HHocJpWEAdku t9dCPY/oZyka3FJhG1j4e67FJPBWxw1dRvsdTWUwi4VFzibNcPguoeYld3iqUaV2DmHr 1mY2W0Jq0WuFj+RdSo2Zx2YJQfs6qupPSekqwJhIK/EyQlJ4yg6oxpfkwf0w0M5URAiq mvnHUs4BtVSq1p4ukReLhy5Q7/sp/cvl1Yn6sO5cq6laV2rpnRzd/UBtR1VLpiTuvgza y8wC6tuQrG0Qo3XqwsKsa+fgFzMnCwVBVk2i0fSeMA47AvEjDYNHNLxluLtQaulPyTlE 33vg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@neratec.com header.s=9F5C293A-195B-11E9-BBA5-B4F3B9D999CA header.b=ws9zhLdv; 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 o3si12349028plk.167.2019.06.11.07.02.55; Tue, 11 Jun 2019 07:03:26 -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=ws9zhLdv; 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 S2390371AbfFKNTG (ORCPT + 99 others); Tue, 11 Jun 2019 09:19:06 -0400 Received: from mail.neratec.com ([46.140.151.2]:58664 "EHLO mail.neratec.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387578AbfFKNTG (ORCPT ); Tue, 11 Jun 2019 09:19:06 -0400 X-Greylist: delayed 530 seconds by postgrey-1.27 at vger.kernel.org; Tue, 11 Jun 2019 09:19:05 EDT Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.neratec.com (Postfix) with ESMTP id 675BFCE0389; Tue, 11 Jun 2019 15:10:14 +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 cQEEc7J5YASq; Tue, 11 Jun 2019 15:10:14 +0200 (CEST) Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.neratec.com (Postfix) with ESMTP id 46436CE038F; Tue, 11 Jun 2019 15:10:14 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.neratec.com 46436CE038F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=neratec.com; s=9F5C293A-195B-11E9-BBA5-B4F3B9D999CA; t=1560258614; bh=cR0VlKJmTQ98hSkbaKiEpGPhdOfGFhHJyWmYjhCNvSE=; h=From:To:Date:Message-Id; b=ws9zhLdvAnnp4m8cxjHvRddzSghVpn7V+QVlB7OUpDZFFvMZHgvMiHQk3E11QBJ7u Ctq9gWeicdmX2E5Uf0AKgwLr4EbbYfSztGqF++jZwbKYYY0oO8n7Xx87irEPjmIpzb TzozRtVj+tZf6I8iuSS0kK2LsypAn2l3J4XUqurDHClCDpPP7stAcUB7IjuUvyOYnH GaOyQSQX4AZSggcNH5fxTMKr4V+fstmQAtiVi/VxaY1VwLP4MxIDO/PGB6r3UFZRO/ YEA4c2pGT55lS17+6ea4yNErYrVJzbqYSgZXiR0eZY4ZbcnaeEDGA3gxXu6HkKKbEN T+sms8Ec/M7tQ== 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 JVccTLw_57Vi; Tue, 11 Jun 2019 15:10:14 +0200 (CEST) Received: from zefir.lan.neratec.com (zefir.lan.neratec.com [172.29.101.12]) by mail.neratec.com (Postfix) with ESMTPSA id 2AE1ECE0389; Tue, 11 Jun 2019 15:10:14 +0200 (CEST) From: Zefir Kurtisi To: linux-wireless@vger.kernel.org Cc: kvalo@codeaurora.org, nbd@nbd.name Subject: [PATCH] ath9k: corrctly handle short radar pulses (fixes 3c0efb745a) Date: Tue, 11 Jun 2019 15:10:06 +0200 Message-Id: <20190611131006.29715-1-zefir.kurtisi@neratec.com> X-Mailer: git-send-email 2.17.1 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org 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 packages 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