From: "Henry Ptasinski" <henryp@broadcom.com>
To: "Greg Dietsche" <gregory.dietsche@cuw.edu>
Cc: "gregkh@suse.de" <gregkh@suse.de>,
"Brett Rudley" <brudley@broadcom.com>,
"Dowan Kim" <dowan@broadcom.com>,
"Roland Vossen" <rvossen@broadcom.com>,
"Arend Van Spriel" <arend@broadcom.com>,
"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
"devel@driverdev.osuosl.org" <devel@driverdev.osuosl.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Henry Ptasinski" <henryp@broadcom.com>
Subject: Re: [PATCH] staging: brcm80211: return false if not a broadcom board
Date: Thu, 16 Jun 2011 16:37:36 -0700 [thread overview]
Message-ID: <20110616233736.GA2344@broadcom.com> (raw)
In-Reply-To: <4DF96F22.5070508@cuw.edu>
On Wed, Jun 15, 2011 at 07:49:06PM -0700, Greg Dietsche wrote:
>
>
> On 06/15/2011 08:36 PM, Henry Ptasinski wrote:
> > On Wed, Jun 15, 2011 at 03:25:09PM -0700, Greg Dietsche wrote:
> >
> >> This code looks wrong to me. I think it meant to return false
> >> if the board's vendor id isn't Broadcom's.
> >>
> >> Compile tested only.
> >>
> >> Signed-off-by: Greg Dietsche<Gregory.Dietsche@cuw.edu>
> >> ---
> >> drivers/staging/brcm80211/brcmsmac/wlc_bmac.c | 2 +-
> >> 1 files changed, 1 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c b/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c
> >> index 4534926..ee13238 100644
> >> --- a/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c
> >> +++ b/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c
> >> @@ -1943,7 +1943,7 @@ static bool wlc_validboardtype(struct wlc_hw_info *wlc_hw)
> >> }
> >>
> >> if (wlc_hw->sih->boardvendor != PCI_VENDOR_ID_BROADCOM)
> >> - return goodboard;
> >> + goodboard = false;
> >>
> >> return goodboard;
> >> }
> >>
> > Actually, the original code is correct.
> >
> > For boards with the Broadcom ID, this function checks that the boardrev is
> > sane. Dev boards that aren't properly configured may have invalid info, so this
> > check is mainly to catch that problem.
> >
> > For boards with any other vendor, we don't have any sanity checks that we know
> > should be done, so the board info is always considered good.
> >
> > The device ID is of course always checked.
> >
> > - Henry
> >
> >
> Hi Henry,
> Thanks for the explanation - I'm still a little confused on this...
> probably more because of how the code reads. Let me explain:
>
> The part that threw me off in this code when I originally read it is
> that it always returns goodboard. It doesn't actually matter what the
> vendor id is. So my first thought was "what did they really mean to code
> here...?" That's why I sent the patch. So if the patch isn't necessary,
> then great! :) But it seems like we could/should just drop the check for
> vendor id?
How's this for a somewhat clearer implementation:
static bool brcms_c_validboardtype(struct brcms_c_hw_info *wlc_hw)
{
bool goodboard = true;
uint boardrev = wlc_hw->boardrev;
if (wlc_hw->sih->boardvendor == PCI_VENDOR_ID_BROADCOM) {
/* validate boardrev */
if (boardrev == 0)
goodboard = false;
else if (boardrev > 0xff) {
/* 4 bits each for board type, major, minor, and tiny
version numbers */
uint brt = (boardrev & 0xf000) >> 12;
uint b0 = (boardrev & 0xf00) >> 8;
uint b1 = (boardrev & 0xf0) >> 4;
uint b2 = boardrev & 0xf;
if ((brt > 2) || (brt == 0) || (b0 > 9) || (b0 == 0)
|| (b1 > 9) || (b2 > 9))
goodboard = false;
}
}
return goodboard;
}
If that's agreeable, I'll add it to a series of cleanup patches that I've got
in progress.
- Henry
next prev parent reply other threads:[~2011-06-16 23:37 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-15 22:25 [PATCH] staging: brcm80211: return false if not a broadcom board Greg Dietsche
2011-06-16 1:36 ` Henry Ptasinski
2011-06-16 2:49 ` Greg Dietsche
2011-06-16 23:37 ` Henry Ptasinski [this message]
2011-06-16 23:45 ` Julian Calaby
2011-06-17 22:01 ` Henry Ptasinski
2011-06-18 15:52 ` Greg Dietsche
2011-06-16 5:14 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110616233736.GA2344@broadcom.com \
--to=henryp@broadcom.com \
--cc=arend@broadcom.com \
--cc=brudley@broadcom.com \
--cc=devel@driverdev.osuosl.org \
--cc=dowan@broadcom.com \
--cc=gregkh@suse.de \
--cc=gregory.dietsche@cuw.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=rvossen@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.