2015-06-13 10:40:02

by Nicholas Mc Guire

[permalink] [raw]
Subject: [BUG ?] staging: rtl8723au: condition with no effect

scanning for trivial bug-patters with coccinelle spatches returned:
./drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c:1395
WARNING: condition with no effect (if branch == else)

drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c - line numbers from 4.1-rc7
1395 if (bWithoutHWSM) {
1396 /* value16 |= (APDM_HOST | FSM_HSUS |/PFM_ALDN); */
1397 /* 2010/08/31 According to Filen description, we need to
1398 use HW to shut down 8051 automatically. */
1399 /* Because suspend operation need the asistance of 8051
1400 to wait for 3ms. */
1401 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
1402 } else {
1403 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
1404 }
1405
1406 rtl8723au_write16(padapter, REG_APS_FSMCO, value16); /* 0x4802 */

Not clear what the intent is but this looks like a typo/bug in the assigment
of value16 as the condition here has no effect.

thx!
hofrat


2015-06-13 21:48:03

by Jes Sorensen

[permalink] [raw]
Subject: Re: [BUG ?] staging: rtl8723au: condition with no effect

Nicholas Mc Guire <[email protected]> writes:
> scanning for trivial bug-patters with coccinelle spatches returned:
> ./drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c:1395
> WARNING: condition with no effect (if branch == else)
>
> drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c - line numbers from 4.1-rc7
> 1395 if (bWithoutHWSM) {
> 1396 /* value16 |= (APDM_HOST | FSM_HSUS |/PFM_ALDN); */
> 1397 /* 2010/08/31 According to Filen description, we need to
> 1398 use HW to shut down 8051 automatically. */
> 1399 /* Because suspend operation need the asistance of 8051
> 1400 to wait for 3ms. */
> 1401 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
> 1402 } else {
> 1403 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
> 1404 }
> 1405
> 1406 rtl8723au_write16(padapter, REG_APS_FSMCO, value16); /* 0x4802 */
>
> Not clear what the intent is but this looks like a typo/bug in the assigment
> of value16 as the condition here has no effect.

Doesn't look like a typo, looks like someone at some point had commented
out PFM_ALDN in the bWithoutHWSM case. Why they did that and then later
overrode it, I have no idea.

Jes



2015-06-14 06:19:44

by Nicholas Mc Guire

[permalink] [raw]
Subject: Re: [BUG ?] staging: rtl8723au: condition with no effect

On Sat, 13 Jun 2015, Jes Sorensen wrote:

> Nicholas Mc Guire <[email protected]> writes:
> > scanning for trivial bug-patters with coccinelle spatches returned:
> > ./drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c:1395
> > WARNING: condition with no effect (if branch == else)
> >
> > drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c - line numbers from 4.1-rc7
> > 1395 if (bWithoutHWSM) {
> > 1396 /* value16 |= (APDM_HOST | FSM_HSUS |/PFM_ALDN); */
> > 1397 /* 2010/08/31 According to Filen description, we need to
> > 1398 use HW to shut down 8051 automatically. */
> > 1399 /* Because suspend operation need the asistance of 8051
> > 1400 to wait for 3ms. */
> > 1401 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
> > 1402 } else {
> > 1403 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
> > 1404 }
> > 1405
> > 1406 rtl8723au_write16(padapter, REG_APS_FSMCO, value16); /* 0x4802 */
> >
> > Not clear what the intent is but this looks like a typo/bug in the assigment
> > of value16 as the condition here has no effect.
>
> Doesn't look like a typo, looks like someone at some point had commented
> out PFM_ALDN in the bWithoutHWSM case. Why they did that and then later
> overrode it, I have no idea.
>
as far as its traceable in git log if == else was in there from the
very beginning (including that comment) - both the if and else were
updated in commit cffca68d7b2f ("staging: rtl8723au: _DisableAnalog(): Avoid
zero-init variables unnecessaril") but without changing PFM_ALDN - as there
are no comments to the meaning of these bits in the header file there is
no way to really come up with a resonable patch. anyway its either wrong
settings or the condition should be removed.

thx!
hofrat

2015-06-14 14:51:50

by Jes Sorensen

[permalink] [raw]
Subject: Re: [BUG ?] staging: rtl8723au: condition with no effect

Nicholas Mc Guire <[email protected]> writes:
> On Sat, 13 Jun 2015, Jes Sorensen wrote:
>
>> Nicholas Mc Guire <[email protected]> writes:
>> > scanning for trivial bug-patters with coccinelle spatches returned:
>> > ./drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c:1395
>> > WARNING: condition with no effect (if branch == else)
>> >
>> > drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c - line numbers
>> > from 4.1-rc7
>> > 1395 if (bWithoutHWSM) {
>> > 1396 /* value16 |= (APDM_HOST | FSM_HSUS |/PFM_ALDN); */
>> > 1397 /* 2010/08/31 According to Filen description, we need to
>> > 1398 use HW to shut down 8051 automatically. */
>> > 1399 /* Because suspend operation need the asistance of 8051
>> > 1400 to wait for 3ms. */
>> > 1401 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
>> > 1402 } else {
>> > 1403 value16 = APDM_HOST | AFSM_HSUS | PFM_ALDN;
>> > 1404 }
>> > 1405
>> > 1406 rtl8723au_write16(padapter, REG_APS_FSMCO, value16); /* 0x4802 */
>> >
>> > Not clear what the intent is but this looks like a typo/bug in the assigment
>> > of value16 as the condition here has no effect.
>>
>> Doesn't look like a typo, looks like someone at some point had commented
>> out PFM_ALDN in the bWithoutHWSM case. Why they did that and then later
>> overrode it, I have no idea.
>>
> as far as its traceable in git log if == else was in there from the
> very beginning (including that comment) - both the if and else were
> updated in commit cffca68d7b2f ("staging: rtl8723au: _DisableAnalog(): Avoid
> zero-init variables unnecessaril") but without changing PFM_ALDN - as there
> are no comments to the meaning of these bits in the header file there is
> no way to really come up with a resonable patch. anyway its either wrong
> settings or the condition should be removed.

There's a much longer history of this code going back to the vendor
origin - it shouldn't be removed unless we can get clarification from
them why that was.

Jes