From patchwork Fri Jun 13 23:14:56 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathy Vanhoef X-Patchwork-Id: 4351961 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 514529F333 for ; Fri, 13 Jun 2014 23:15:05 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5656120320 for ; Fri, 13 Jun 2014 23:15:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6DF28202FF for ; Fri, 13 Jun 2014 23:15:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753923AbaFMXPA (ORCPT ); Fri, 13 Jun 2014 19:15:00 -0400 Received: from mail-we0-f169.google.com ([74.125.82.169]:39679 "EHLO mail-we0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753132AbaFMXPA (ORCPT ); Fri, 13 Jun 2014 19:15:00 -0400 Received: by mail-we0-f169.google.com with SMTP id t60so3501097wes.14 for ; Fri, 13 Jun 2014 16:14:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=rroIcneXqCe2BHzaCihpBPJI3c5lxj3LNqtWr4u6YIs=; b=w3FH69jPC5+x0UK6Rc0sHGN6Zi2BGAKHDvEoCPeACyHFm4G2gyipKjXbjhMbUtw56K FjELocoBdInz8pb1Bc8FxMbZ72sFemCLXE+x5N5q/iKP2Zc2li4bLP1aukgA3REU49Lp l7XmjWJN0bdBnOQwbiWxyCNSTPI5J9GsbDW+w2kyIsMySsPxSZkPUSF2d2LYXY5utIwW eFN+G/0bwAxKi5wFb5MHKFbCuy3fR3pLdKGqFPZ/8totp4Tz2Wta2UCXoSuRsDOex7wV GePwxj6BhmoNsoUtNxSFoFiE6U0g7R0vBj/UdNu8DbBlhdQ73m8LsWdfM1hmqvO7Lq6h jknA== X-Received: by 10.180.160.205 with SMTP id xm13mr8597668wib.13.1402701298956; Fri, 13 Jun 2014 16:14:58 -0700 (PDT) Received: from ?IPv6:2a02:2c40:100:a000:71d3:36df:1e48:f164? ([2a02:2c40:100:a000:71d3:36df:1e48:f164]) by mx.google.com with ESMTPSA id do5sm4937045wib.16.2014.06.13.16.14.57 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 13 Jun 2014 16:14:58 -0700 (PDT) Message-ID: <539B85F0.3090004@gmail.com> Date: Sat, 14 Jun 2014 01:14:56 +0200 From: Mathy Vanhoef User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130801 Thunderbird/17.0.8 MIME-Version: 1.0 To: Felix Fietkau , "John W. Linville" CC: linux-wireless@vger.kernel.org, Jiri Slaby , Nick Kossifidis , "Luis R. Rodriguez" , ath5k-devel@lists.ath5k.org Subject: Re: [PATCH 2/2] ath5k: capture CCK and OFDM restarts References: <539B7019.1050801@gmail.com> <539B7639.30104@openwrt.org> In-Reply-To: <539B7639.30104@openwrt.org> Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On 14/06/2014 0:07, Felix Fietkau wrote: > On 2014-06-13 23:41, Mathy Vanhoef wrote: >> Hi all, >> >> This patch allows users to see CCK and OFDM restarts when FIF_FCSFAIL is set. >> Without this patch only the stronger frame (causing the restart) would be >> visible. >> >> The patch has been tested using our reactive jammer. The prefix of the weaker >> frame is being correctly passed on as a frame with bad CRC! >> -- >> From: "Mathy Vanhoef" >> >> Treat frames that underwent a CCK or OFDM restart as frames with an invalid CRC. >> >> Signed-off-by: Mathy Vanhoef >> --- >> drivers/net/wireless/ath/ath5k/base.c | 14 +++++++++++++- >> 1 file changed, 13 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c >> index 39ba642..1bbc850 100644 >> --- a/drivers/net/wireless/ath/ath5k/base.c >> +++ b/drivers/net/wireless/ath/ath5k/base.c >> @@ -1462,7 +1462,19 @@ ath5k_receive_frame_ok(struct ath5k_hw *ah, struct ath5k_rx_status *rs) >> ah->stats.rxerr_phy++; >> if (rs->rs_phyerr > 0 && rs->rs_phyerr < 32) >> ah->stats.rxerr_phy_code[rs->rs_phyerr]++; >> - return false; >> + >> + /* >> + * Threat packets that underwent a CCK of OFDM reset as having a bad CRC. >> + * These restarts happen when the radio resynchronizes to a stronger frame >> + * while receiving a weaker frame. Here we receive the prefix of the weak >> + * frame. Since these are incomplete packets, mark their CRC as invalid. >> + */ >> + if (rs->rs_phyerr == AR5K_RX_PHY_ERROR_OFDM_RESTART || >> + rs->rs_phyerr == AR5K_RX_PHY_ERROR_CCK_RESTART) { >> + rs->rs_status |= AR5K_RXERR_CRC; >> + rs->rs_status &= (~AR5K_RXERR_PHY); > Unnecessary braces > >> + } > What about the return statement you removed, shouldn't you add that back > for the 'else' case? > > - Felix > Just saw a spelling mistake in the comment, s/Threat/Treat. The parenthesis around `(~AR5K_RXERR_PHY)` can indeed be removed. I suppose it's best to keep the return statement (I don't know precisely why it appears so early in the function, but it likely has a good reason). Updated patch is included below. --- From: "Mathy Vanhoef" Treat frames that underwent a CCK or OFDM restart as frames with an invalid CRC. Signed-off-by: Mathy Vanhoef --- drivers/net/wireless/ath/ath5k/base.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 4b18434..6e7c636 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c @@ -1457,7 +1457,20 @@ ath5k_receive_frame_ok(struct ath5k_hw *ah, struct ath5k_rx_status *rs) ah->stats.rxerr_phy++; if (rs->rs_phyerr > 0 && rs->rs_phyerr < 32) ah->stats.rxerr_phy_code[rs->rs_phyerr]++; - return false; + + /* + * Treat packets that underwent a CCK of OFDM reset as having a bad CRC. + * These restarts happen when the radio resynchronizes to a stronger frame + * while receiving a weaker frame. Here we receive the prefix of the weak + * frame. Since these are incomplete packets, mark their CRC as invalid. + */ + if (rs->rs_phyerr == AR5K_RX_PHY_ERROR_OFDM_RESTART || + rs->rs_phyerr == AR5K_RX_PHY_ERROR_CCK_RESTART) { + rs->rs_status |= AR5K_RXERR_CRC; + rs->rs_status &= ~AR5K_RXERR_PHY; + } else { + return false; + } } if (rs->rs_status & AR5K_RXERR_DECRYPT) { /*