From patchwork Mon May 9 14:33:27 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arend van Spriel X-Patchwork-Id: 769422 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.3) with ESMTP id p49EZwb2000471 for ; Mon, 9 May 2011 14:36:05 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754246Ab1EIOdw (ORCPT ); Mon, 9 May 2011 10:33:52 -0400 Received: from mms1.broadcom.com ([216.31.210.17]:3418 "EHLO mms1.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754147Ab1EIOdo (ORCPT ); Mon, 9 May 2011 10:33:44 -0400 Received: from [10.9.200.131] by mms1.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.3.2)); Mon, 09 May 2011 07:37:19 -0700 X-Server-Uuid: 02CED230-5797-4B57-9875-D5D2FEE4708A Received: from mail-irva-13.broadcom.com (10.11.16.103) by IRVEXCHHUB01.corp.ad.broadcom.com (10.9.200.131) with Microsoft SMTP Server id 8.2.247.2; Mon, 9 May 2011 07:33:32 -0700 Received: from mail-sj1-12.sj.broadcom.com (mail-sj1-12.sj.broadcom.com [10.17.16.106]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 83D7274D07; Mon, 9 May 2011 07:33:32 -0700 (PDT) Received: from arend-laptop (unknown [10.176.68.140]) by mail-sj1-12.sj.broadcom.com (Postfix) with ESMTP id CB2FF20507; Mon, 9 May 2011 07:33:31 -0700 (PDT) Received: from arend by arend-laptop with local (Exim 4.74) ( envelope-from ) id 1QJRWc-0000fH-Nb; Mon, 09 May 2011 16:33:30 +0200 From: "Arend van Spriel" To: gregkh@suse.de cc: "Arend van Spriel" , devel@linuxdriverproject.org, linux-wireless@vger.kernel.org Subject: [PATCH 08/10] staging: brcm80211: make use of fls bit operation in wlc_phy_compute_dB Date: Mon, 9 May 2011 16:33:27 +0200 Message-ID: <1304951609-2493-8-git-send-email-arend@broadcom.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1304951609-2493-1-git-send-email-arend@broadcom.com> References: <1304951609-2493-1-git-send-email-arend@broadcom.com> MIME-Version: 1.0 X-WSS-ID: 61D923951IC4263549-01-01 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Mon, 09 May 2011 14:36:05 +0000 (UTC) wlc_phy_compute_dB converts absolute power value to dB implementing a fixed point calculation for 10*log10(x). It does this by determining the most significant bit for value x. This can be done using the fls() bit operation, which has arch specific and possibly more efficient implementation. Cc: devel@linuxdriverproject.org Cc: linux-wireless@vger.kernel.org Reviewed-by: Roland Vossen Reviewed-by: Henry Ptasinski Reviewed-by: Brett Rudley Signed-off-by: Arend van Spriel --- .../staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c | 19 ++++++++----------- 1 files changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c index 446dc84..6cba4df 100644 --- a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c +++ b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c @@ -18,10 +18,12 @@ #include #include -#include +#include #include #include #include + +#include #include #include #include @@ -2746,20 +2748,15 @@ s8 lcnphy_gain_index_offset_for_pkt_rssi[] = { void wlc_phy_compute_dB(u32 *cmplx_pwr, s8 *p_cmplx_pwr_dB, u8 core) { - u8 shift_ct, lsb, msb, secondmsb, i; + u8 msb, secondmsb, i; u32 tmp; for (i = 0; i < core; i++) { + secondmsb = 0; tmp = cmplx_pwr[i]; - shift_ct = msb = secondmsb = 0; - while (tmp != 0) { - tmp = tmp >> 1; - shift_ct++; - lsb = (u8) (tmp & 1); - if (lsb == 1) - msb = shift_ct; - } - secondmsb = (u8) ((cmplx_pwr[i] >> (msb - 1)) & 1); + msb = fls(tmp); + if (msb) + secondmsb = (u8) ((tmp >> (--msb - 1)) & 1); p_cmplx_pwr_dB[i] = (s8) (3 * msb + 2 * secondmsb); } }