Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp5144640pxb; Thu, 14 Oct 2021 20:48:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxLAQipHEfUq4DDYmOcolT9By5RfVjw5iobngQZWcUb378JXNwceMGA+SKxAg5mygZ2sQ2A X-Received: by 2002:a17:90a:16:: with SMTP id 22mr25469857pja.25.1634269687728; Thu, 14 Oct 2021 20:48:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634269687; cv=none; d=google.com; s=arc-20160816; b=X/vK4paOfQ5jjeZ6FAUNst7Iz3VRiHWs47xmPpajY9NEQoiH0YNmANAzLVKaFjfD8K UInnV0MCETzSd1nc8dw1W5o5vsR/uU4SzC2Niwz32q/LjJvmIeqQNiL5CoxQt2DuFSD5 5XxgDwwOGhU5wF32LlJdIEJnORZxJQjHQGDfor2zeHZ5joEGBJluqw3MunhPerSZSTDk uUFMW89W2y1t17m2ZCOoL1R6EQbBHgJQsHozlKEfegM5o5APNbbbtqSDsxSnQ1P3fLcC 2hNW0xsycATUEVJDZWH7Nc2Tizv3lFAEU0NZ3K2eyNVwG3n5e2NmcbFGObOKyMOF8sgA 6Tbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=xlL/hqKDEUK17aouQvk2QnHXILH3xXEnKb0bFHhrF+4=; b=HL7AyEuaMxv210L5bzOBMQBgJ2UleMmPV8kp8fCET9l20UnMPUyesFz3Afh6aspDXp ysXDz3Px6+sBk8eie3v82w1eM2URhoOR5mOGh3L9fArxIeJCyQtvPaCf3DpdZFtlvaGk 4ZNM/dsHem4Hbl8ApI9hNjH7SQytrS85Kmit3PneNSY/DP46NEFsTleKV5o0/mvlt8ix xVgq/MJD4WNSPgCAR4eKTGnxFBo34SHLJGaTW/EMw10kZgx7hnDzI75gaPHrK3KmrbFB mPbNkEeCFoJPxTTnkgJTNY/hkwK5b0PObrDN6JZBtoLvD0Kn7urrmFBaji+pBBjhSMTP WMgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=X67dWTvz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y15si9011609pfa.131.2021.10.14.20.47.54; Thu, 14 Oct 2021 20:48:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-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=@kernel.org header.s=k20201202 header.b=X67dWTvz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232157AbhJNV7Y (ORCPT + 99 others); Thu, 14 Oct 2021 17:59:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:45696 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229829AbhJNV7X (ORCPT ); Thu, 14 Oct 2021 17:59:23 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id CE86E6108E; Thu, 14 Oct 2021 21:57:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1634248638; bh=ZI0iCYs3qrRnNNXjtxaoxU0Yank7YLMxvVLB18/FXgs=; h=From:To:Cc:Subject:Date:From; b=X67dWTvzRThDcnjF+zIrfzM7Hs3C05/TUR/b9txQF6LQliBCun1mjS/aCTjjhwFR5 MuL1nNsdhNbM+ckVUwk6adiokWp06kVhoVn8KDAoWryQl8FGUjVNabJO/Q8jRVHEJD ffMvzE3KEWlBeA+8NwKt8y6TzYbrfFCvwSfPQqDKuNCliWThXNveMfL8kT9OYHc3wr p+WsjuG9rw73hFyDT8Z2b7zD/Nos0TOSdd526o2kQfWx0kbO8F/GC+luSJFXFCBWDM 4+QCHJjtt94NoGonEFpw0ChIUwrGiGNfjkg0it488medfjYV6Zw6QsUr0E3cU34owh 7Gn67OqqNEXlQ== From: Nathan Chancellor To: Greg Kroah-Hartman Cc: Nick Desaulniers , linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, Nathan Chancellor Subject: [PATCH] staging: wlan-ng: Avoid bitwise vs logical OR warning in hfa384x_usb_throttlefn() Date: Thu, 14 Oct 2021 14:57:03 -0700 Message-Id: <20211014215703.3705371-1-nathan@kernel.org> X-Mailer: git-send-email 2.33.1.637.gf443b226ca MIME-Version: 1.0 X-Patchwork-Bot: notify Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A new warning in clang points out a place in this file where a bitwise OR is being used with boolean expressions: In file included from drivers/staging/wlan-ng/prism2usb.c:2: drivers/staging/wlan-ng/hfa384x_usb.c:3787:7: warning: use of bitwise '|' with boolean operands [-Wbitwise-instead-of-logical] ((test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/staging/wlan-ng/hfa384x_usb.c:3787:7: note: cast one or both operands to int to silence this warning 1 warning generated. The comment explains that short circuiting here is undesirable, as the calls to test_and_{clear,set}_bit() need to happen for both sides of the expression. Clang's suggestion would work to silence the warning but the readability of the expression would suffer even more. To clean up the warning and make the block more readable, use a variable for each side of the bitwise expression. Link: https://github.com/ClangBuiltLinux/linux/issues/1478 Signed-off-by: Nathan Chancellor --- drivers/staging/wlan-ng/hfa384x_usb.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c index 59aa84d1837d..938e11a1a0b6 100644 --- a/drivers/staging/wlan-ng/hfa384x_usb.c +++ b/drivers/staging/wlan-ng/hfa384x_usb.c @@ -3778,18 +3778,18 @@ static void hfa384x_usb_throttlefn(struct timer_list *t) spin_lock_irqsave(&hw->ctlxq.lock, flags); - /* - * We need to check BOTH the RX and the TX throttle controls, - * so we use the bitwise OR instead of the logical OR. - */ pr_debug("flags=0x%lx\n", hw->usb_flags); - if (!hw->wlandev->hwremoved && - ((test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && - !test_and_set_bit(WORK_RX_RESUME, &hw->usb_flags)) | - (test_and_clear_bit(THROTTLE_TX, &hw->usb_flags) && - !test_and_set_bit(WORK_TX_RESUME, &hw->usb_flags)) - )) { - schedule_work(&hw->usb_work); + if (!hw->wlandev->hwremoved) { + bool rx_throttle = test_and_clear_bit(THROTTLE_RX, &hw->usb_flags) && + !test_and_set_bit(WORK_RX_RESUME, &hw->usb_flags); + bool tx_throttle = test_and_clear_bit(THROTTLE_TX, &hw->usb_flags) && + !test_and_set_bit(WORK_TX_RESUME, &hw->usb_flags); + /* + * We need to check BOTH the RX and the TX throttle controls, + * so we use the bitwise OR instead of the logical OR. + */ + if (rx_throttle | tx_throttle) + schedule_work(&hw->usb_work); } spin_unlock_irqrestore(&hw->ctlxq.lock, flags); base-commit: 6ac113f741a7674e4268eea3eb13972732d83571 -- 2.33.1.637.gf443b226ca