linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* staging: pi433: Possible bug in rf69.c
@ 2017-11-10 17:23 Marcus Wolf
  2017-11-10 19:32 ` Dan Carpenter
  2017-11-11 16:02 ` Joe Perches
  0 siblings, 2 replies; 14+ messages in thread
From: Marcus Wolf @ 2017-11-10 17:23 UTC (permalink / raw)
  To: Greg Kroah-Hartman, devel, linux-kernel, dan.carpenter

Hi everybody!

Just comparing the master of Gregs statging of pi433 with my local SVN
to review all changes, that were done the last monthes.

I am not sure, but maybe we imported a bug in rf69.c lines 378 and
following:

Gregs repo:
	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) & LNA_GAIN_AUTO) );
	case max:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) & LNA_GAIN_MAX) );
	case maxMinus6:  return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_6) );
	case maxMinus12: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_12) );
	case maxMinus24: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_24) );
	case maxMinus36: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_36) );
	case maxMinus48: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_48) );

my repo:
	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) | LNA_GAIN_AUTO) );
	case max:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) | LNA_GAIN_MAX) );
	case maxMinus6:  return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_6) );
	case maxMinus12: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_12) );
	case maxMinus24: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_24) );
	case maxMinus36: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_36) );
	case maxMinus48: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_48) );

Up to my opinion, my (old) version is better then Gregs (new) version.
If you agree, I'll prepare a patch, to revert the modification.

Thanks,

Marcus

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-10 17:23 staging: pi433: Possible bug in rf69.c Marcus Wolf
@ 2017-11-10 19:32 ` Dan Carpenter
  2017-11-11  7:55   ` Marcus Wolf
  2017-11-11 16:02 ` Joe Perches
  1 sibling, 1 reply; 14+ messages in thread
From: Dan Carpenter @ 2017-11-10 19:32 UTC (permalink / raw)
  To: Marcus Wolf; +Cc: Greg Kroah-Hartman, devel, linux-kernel

On Fri, Nov 10, 2017 at 06:23:32PM +0100, Marcus Wolf wrote:
> Hi everybody!
> 
> Just comparing the master of Gregs statging of pi433 with my local SVN
> to review all changes, that were done the last monthes.
> 
> I am not sure, but maybe we imported a bug in rf69.c lines 378 and
> following:
> 
> Gregs repo:
> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) & ~MASK_LNA_GAIN) & LNA_GAIN_AUTO) );
> my repo:
> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) & ~MASK_LNA_GAIN) | LNA_GAIN_AUTO) );

I edited the lines for clarity.  The difference is that your repo does
a bitwise OR "| LNA_GAIN_AUTO" and the kernel.org code does a bitwise
"& LNA_GAIN_AUTO".

The kernel repo hasn't changed since you sent us the driver in commit
874bcba65f9a ('staging: pi433: New driver').  I agree that & doesn't
seem to make sense and I'm disapointed that it doesn't cause a Smatch
warning.

But LNA_GAIN_AUTO is zero so maybe | BIT(LNA_GAIN_AUTO) was intended
instead of | LNA_GAIN_AUTO.  I don't know...  No one on this list knows
the answer probably.  :/

regards,
dan caprenter

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-10 19:32 ` Dan Carpenter
@ 2017-11-11  7:55   ` Marcus Wolf
  2017-11-11  8:40     ` Dan Carpenter
  2017-11-11  8:45     ` Dan Carpenter
  0 siblings, 2 replies; 14+ messages in thread
From: Marcus Wolf @ 2017-11-11  7:55 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: Greg Kroah-Hartman, devel, linux-kernel

Hi Dan,

I checked it on my local SVN. You are right. I submitted the code with '&'.
Accodring to a check-in message on my SVN, there was a bugreport end of
July and most probably a patch - either from me, you, Joseph Wright,
Colin King or Julia Lawall, changing '&' to '|'. I guess the patch for
some reason wasn't accepted, but fortunatley I introduced the change to
my SVN.

So from my point of view, we need a change from '&' to '|'.

I could prepare such a patch, but I am still unsure, which repo to use.

Shortly befor I fell ill, you proposed me to use Gregs staging for my
further development. But Colin yesterday was working on a repo, called
linux-next.

Can you (or anyone else) please tell me, when (or for which kind of
patches) to use the Gregs staging and wehen (or for which kind of
patches) to use the linux-next? Sorry for not being familiar with that
stuff!

Thanks a lot,

Marcus



Am 10.11.2017 um 20:32 schrieb Dan Carpenter:
> On Fri, Nov 10, 2017 at 06:23:32PM +0100, Marcus Wolf wrote:
>> Hi everybody!
>>
>> Just comparing the master of Gregs statging of pi433 with my local SVN
>> to review all changes, that were done the last monthes.
>>
>> I am not sure, but maybe we imported a bug in rf69.c lines 378 and
>> following:
>>
>> Gregs repo:
>> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) & ~MASK_LNA_GAIN) & LNA_GAIN_AUTO) );
>> my repo:
>> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) & ~MASK_LNA_GAIN) | LNA_GAIN_AUTO) );
> 
> I edited the lines for clarity.  The difference is that your repo does
> a bitwise OR "| LNA_GAIN_AUTO" and the kernel.org code does a bitwise
> "& LNA_GAIN_AUTO".
> 
> The kernel repo hasn't changed since you sent us the driver in commit
> 874bcba65f9a ('staging: pi433: New driver').  I agree that & doesn't
> seem to make sense and I'm disapointed that it doesn't cause a Smatch
> warning.
> 
> But LNA_GAIN_AUTO is zero so maybe | BIT(LNA_GAIN_AUTO) was intended
> instead of | LNA_GAIN_AUTO.  I don't know...  No one on this list knows
> the answer probably.  :/
> 
> regards,
> dan caprenter
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11  7:55   ` Marcus Wolf
@ 2017-11-11  8:40     ` Dan Carpenter
  2017-11-11  8:45     ` Dan Carpenter
  1 sibling, 0 replies; 14+ messages in thread
From: Dan Carpenter @ 2017-11-11  8:40 UTC (permalink / raw)
  To: Marcus Wolf; +Cc: devel, Greg Kroah-Hartman, linux-kernel

On Sat, Nov 11, 2017 at 08:55:30AM +0100, Marcus Wolf wrote:
> Shortly befor I fell ill, you proposed me to use Gregs staging for my
> further development. But Colin yesterday was working on a repo, called
> linux-next.
> 
> Can you (or anyone else) please tell me, when (or for which kind of
> patches) to use the Gregs staging and wehen (or for which kind of
> patches) to use the linux-next? Sorry for not being familiar with that
> stuff!
> 

linux-next is a collection of staging-next and slightly over 100 other
devel trees.  You can either using staging-next or linux-next, it's the
same thing basically.

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11  7:55   ` Marcus Wolf
  2017-11-11  8:40     ` Dan Carpenter
@ 2017-11-11  8:45     ` Dan Carpenter
  2017-11-11  9:42       ` Marcus Wolf
  1 sibling, 1 reply; 14+ messages in thread
From: Dan Carpenter @ 2017-11-11  8:45 UTC (permalink / raw)
  To: Marcus Wolf; +Cc: devel, Greg Kroah-Hartman, linux-kernel

On Sat, Nov 11, 2017 at 08:55:30AM +0100, Marcus Wolf wrote:
> Hi Dan,
> 
> I checked it on my local SVN. You are right. I submitted the code with '&'.
> Accodring to a check-in message on my SVN, there was a bugreport end of
> July and most probably a patch - either from me, you, Joseph Wright,
> Colin King or Julia Lawall, changing '&' to '|'. I guess the patch for
> some reason wasn't accepted, but fortunatley I introduced the change to
> my SVN.

You sent the patch, but then talked about sending a new version so
that's why it wasn't merged.  Greg probably would have merged it as-is
if it hadn't sounded like you were going to redo it.

http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/2017-July/108821.html

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11  8:45     ` Dan Carpenter
@ 2017-11-11  9:42       ` Marcus Wolf
  2017-11-11 11:18         ` Greg Kroah-Hartman
  2017-11-11 12:10         ` Dan Carpenter
  0 siblings, 2 replies; 14+ messages in thread
From: Marcus Wolf @ 2017-11-11  9:42 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: devel, Greg Kroah-Hartman, linux-kernel

Hi Dan,

thanks fot the link. I can't remeber, why and what I wanted to redo. 
Maybe there was a complaint about the format of the patch...

In that patch, we also have the topic with the '>> 3', we were 
discussing a few days ago!

I'd suggest, not to invest the history any more. I'm ok with preparing a 
new patch/new patches, so we can import the fixes.

I also have several improvements for the rf69.c, I'd like to offer.

But I still need to know when to use staging and when to use linux-next.
I don't want to prepare patches for the wrong tree.

Cheers,

Marcus


Am 11.11.2017 um 10:45 schrieb Dan Carpenter:
> On Sat, Nov 11, 2017 at 08:55:30AM +0100, Marcus Wolf wrote:
>> Hi Dan,
>>
>> I checked it on my local SVN. You are right. I submitted the code with '&'.
>> Accodring to a check-in message on my SVN, there was a bugreport end of
>> July and most probably a patch - either from me, you, Joseph Wright,
>> Colin King or Julia Lawall, changing '&' to '|'. I guess the patch for
>> some reason wasn't accepted, but fortunatley I introduced the change to
>> my SVN.
> 
> You sent the patch, but then talked about sending a new version so
> that's why it wasn't merged.  Greg probably would have merged it as-is
> if it hadn't sounded like you were going to redo it.
> 
> http://driverdev.linuxdriverproject.org/pipermail/driverdev-devel/2017-July/108821.html
> 
> regards,
> dan carpenter
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11  9:42       ` Marcus Wolf
@ 2017-11-11 11:18         ` Greg Kroah-Hartman
  2017-11-11 11:42           ` Marcus Wolf
  2017-11-11 12:10         ` Dan Carpenter
  1 sibling, 1 reply; 14+ messages in thread
From: Greg Kroah-Hartman @ 2017-11-11 11:18 UTC (permalink / raw)
  To: Marcus Wolf; +Cc: Dan Carpenter, devel, linux-kernel

On Sat, Nov 11, 2017 at 11:42:09AM +0200, Marcus Wolf wrote:
> Hi Dan,
> 
> thanks fot the link. I can't remeber, why and what I wanted to redo. Maybe
> there was a complaint about the format of the patch...
> 
> In that patch, we also have the topic with the '>> 3', we were discussing a
> few days ago!
> 
> I'd suggest, not to invest the history any more. I'm ok with preparing a new
> patch/new patches, so we can import the fixes.
> 
> I also have several improvements for the rf69.c, I'd like to offer.
> 
> But I still need to know when to use staging and when to use linux-next.
> I don't want to prepare patches for the wrong tree.

I recommend waiting for 4.15-rc1 to come out, all of the different trees
will be merged, and then you can just work off of the staging-next tree
and I can take the patches.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11 11:18         ` Greg Kroah-Hartman
@ 2017-11-11 11:42           ` Marcus Wolf
  2017-11-11 11:49             ` Greg Kroah-Hartman
  0 siblings, 1 reply; 14+ messages in thread
From: Marcus Wolf @ 2017-11-11 11:42 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Dan Carpenter, devel, linux-kernel

Hi Greg,

that's fine.

Is this the right URL:
  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

Is there already an aprox. date, when 4.15rc1 will be out and 
backintegration will be done?

Thx,

Marcus


Am 11.11.2017 um 13:18 schrieb Greg Kroah-Hartman:
> On Sat, Nov 11, 2017 at 11:42:09AM +0200, Marcus Wolf wrote:
>> Hi Dan,
>>
>> thanks fot the link. I can't remeber, why and what I wanted to redo. Maybe
>> there was a complaint about the format of the patch...
>>
>> In that patch, we also have the topic with the '>> 3', we were discussing a
>> few days ago!
>>
>> I'd suggest, not to invest the history any more. I'm ok with preparing a new
>> patch/new patches, so we can import the fixes.
>>
>> I also have several improvements for the rf69.c, I'd like to offer.
>>
>> But I still need to know when to use staging and when to use linux-next.
>> I don't want to prepare patches for the wrong tree.
> 
> I recommend waiting for 4.15-rc1 to come out, all of the different trees
> will be merged, and then you can just work off of the staging-next tree
> and I can take the patches.
> 
> thanks,
> 
> greg k-h
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11 11:42           ` Marcus Wolf
@ 2017-11-11 11:49             ` Greg Kroah-Hartman
  2017-11-11 11:51               ` Marcus Wolf
  0 siblings, 1 reply; 14+ messages in thread
From: Greg Kroah-Hartman @ 2017-11-11 11:49 UTC (permalink / raw)
  To: Marcus Wolf; +Cc: Dan Carpenter, devel, linux-kernel

On Sat, Nov 11, 2017 at 01:42:27PM +0200, Marcus Wolf wrote:
> Hi Greg,
> 
> that's fine.
> 
> Is this the right URL:
>  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git

Yes.

> Is there already an aprox. date, when 4.15rc1 will be out and
> backintegration will be done?

Should be 2 weeks from now.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11 11:49             ` Greg Kroah-Hartman
@ 2017-11-11 11:51               ` Marcus Wolf
  2017-11-11 12:33                 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 14+ messages in thread
From: Marcus Wolf @ 2017-11-11 11:51 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Dan Carpenter, devel, linux-kernel

Hi Greg,

ok.

I'll postpone all my work until then. Give me a hook, when I can start :-)

Thanks,

Marcus


Am 11.11.2017 um 13:49 schrieb Greg Kroah-Hartman:
> On Sat, Nov 11, 2017 at 01:42:27PM +0200, Marcus Wolf wrote:
>> Hi Greg,
>>
>> that's fine.
>>
>> Is this the right URL:
>>   git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
> 
> Yes.
> 
>> Is there already an aprox. date, when 4.15rc1 will be out and
>> backintegration will be done?
> 
> Should be 2 weeks from now.
> 
> thanks,
> 
> greg k-h
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11  9:42       ` Marcus Wolf
  2017-11-11 11:18         ` Greg Kroah-Hartman
@ 2017-11-11 12:10         ` Dan Carpenter
  1 sibling, 0 replies; 14+ messages in thread
From: Dan Carpenter @ 2017-11-11 12:10 UTC (permalink / raw)
  To: Marcus Wolf; +Cc: devel, Greg Kroah-Hartman, linux-kernel

On Sat, Nov 11, 2017 at 11:42:09AM +0200, Marcus Wolf wrote:
> But I still need to know when to use staging and when to use linux-next.
> I don't want to prepare patches for the wrong tree.

Ah, I see now that the confusion is Al's patch.  Al is a law unto
himself so I don't know the answer.  Normally the advice would be to
work off staging-next.

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11 11:51               ` Marcus Wolf
@ 2017-11-11 12:33                 ` Greg Kroah-Hartman
  0 siblings, 0 replies; 14+ messages in thread
From: Greg Kroah-Hartman @ 2017-11-11 12:33 UTC (permalink / raw)
  To: Marcus Wolf; +Cc: devel, linux-kernel, Dan Carpenter

On Sat, Nov 11, 2017 at 01:51:10PM +0200, Marcus Wolf wrote:
> Hi Greg,
> 
> ok.
> 
> I'll postpone all my work until then. Give me a hook, when I can start :-)

I am not going to remember, sorry, I deal with over 1000 patches a week.
Just watch kernel.org for when the new kernel is released.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-10 17:23 staging: pi433: Possible bug in rf69.c Marcus Wolf
  2017-11-10 19:32 ` Dan Carpenter
@ 2017-11-11 16:02 ` Joe Perches
  2017-11-11 16:40   ` Marcus Wolf
  1 sibling, 1 reply; 14+ messages in thread
From: Joe Perches @ 2017-11-11 16:02 UTC (permalink / raw)
  To: Marcus Wolf, Greg Kroah-Hartman, devel, linux-kernel, dan.carpenter

On Fri, 2017-11-10 at 18:23 +0100, Marcus Wolf wrote:
> Hi everybody!
> 
> Just comparing the master of Gregs statging of pi433 with my local SVN
> to review all changes, that were done the last monthes.
> 
> I am not sure, but maybe we imported a bug in rf69.c lines 378 and
> following:
> 
> Gregs repo:
> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) & LNA_GAIN_AUTO) );
> 	case max:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) & LNA_GAIN_MAX) );
> 	case maxMinus6:  return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_6) );
> 	case maxMinus12: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_12) );
> 	case maxMinus24: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_24) );
> 	case maxMinus36: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_36) );
> 	case maxMinus48: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_48) );
> 
> my repo:
> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) | LNA_GAIN_AUTO) );
> 	case max:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) | LNA_GAIN_MAX) );
> 	case maxMinus6:  return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_6) );
> 	case maxMinus12: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_12) );
> 	case maxMinus24: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_24) );
> 	case maxMinus36: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_36) );
> 	case maxMinus48: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_48) );
> 
> Up to my opinion, my (old) version is better then Gregs (new) version.
> If you agree, I'll prepare a patch, to revert the modification.

There seems to be a lot of enum/#define duplication in this driver.

For instance:

drivers/staging/pi433/rf69_registers.h

#define  LNA_GAIN_AUTO				0x00 /* default */
#define  LNA_GAIN_MAX				0x01
#define  LNA_GA
IN_MAX_MINUS_6			0x02
#define  LNA_GAIN_MAX_MINUS_12
			0x03
#define  LNA_GAIN_MAX_MINUS_24		
	0x04
#define  LNA_GAIN_MAX_MINUS_36			0x05
#d
efine  LNA_GAIN_MAX_MINUS_48			0x06

vs

drivers/staging/pi433/rf69_enum.h

enum lnaGain
{
    automatic,
    max,
    maxMinus6,
    maxMinus12,
    maxM
inus24,
    maxMinus36,
    maxMinus48,
    undefined
};

My suggestion would be to remove drivers/staging/pi433/rf69_enum.h
where possible and convert all these switch/case entries into
macros like

#define GAIN_CASE(type)						\
	case type: return WRITE_REG(REG_LNA,			\
				    (READ_REG(REG_LNA) & ~MASK_LNA_GAIN) | (type));

so for example this switch becomes

	switch (lnaGain) {
	GAIN_CASE(LNA_GAIN_AUTO);
	...
	}

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: staging: pi433: Possible bug in rf69.c
  2017-11-11 16:02 ` Joe Perches
@ 2017-11-11 16:40   ` Marcus Wolf
  0 siblings, 0 replies; 14+ messages in thread
From: Marcus Wolf @ 2017-11-11 16:40 UTC (permalink / raw)
  To: Joe Perches, Greg Kroah-Hartman, devel, linux-kernel, dan.carpenter

Hi Joe,

thank you for your suggestion.

The enums are necessary for the (old fashioned) ioctl interface, too.
So the user space uses these enums in order to configure the driver.
If we want to completely remove rf69_enum.h, we need to find a solution
for that, too.

 From the optics/readability, I like your idea with the Macro for the cases.

On the other hand, I have already prepared a patch, that uses setbit, 
resetbit
and readmodifywrite inline fuctions instead of the macros WRITE_REG, ...
That was an idea of Walter Harms in order to increase readability and
reduce macros, because Walter prefers inline functions to macros.

As discussed with Greg, I will provide the patch, as soon as 4.15rc1 is out.
Maybe we should move the discussion to then, so you can have a look to that?

Cheers,

Marcus


Am 11.11.2017 um 18:02 schrieb Joe Perches:
> On Fri, 2017-11-10 at 18:23 +0100, Marcus Wolf wrote:
>> Hi everybody!
>>
>> Just comparing the master of Gregs statging of pi433 with my local SVN
>> to review all changes, that were done the last monthes.
>>
>> I am not sure, but maybe we imported a bug in rf69.c lines 378 and
>> following:
>>
>> Gregs repo:
>> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) & LNA_GAIN_AUTO) );
>> 	case max:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) & LNA_GAIN_MAX) );
>> 	case maxMinus6:  return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_6) );
>> 	case maxMinus12: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_12) );
>> 	case maxMinus24: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_24) );
>> 	case maxMinus36: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_36) );
>> 	case maxMinus48: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) & LNA_GAIN_MAX_MINUS_48) );
>>
>> my repo:
>> 	case automatic:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) | LNA_GAIN_AUTO) );
>> 	case max:	 return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) | LNA_GAIN_MAX) );
>> 	case maxMinus6:  return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_6) );
>> 	case maxMinus12: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_12) );
>> 	case maxMinus24: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_24) );
>> 	case maxMinus36: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_36) );
>> 	case maxMinus48: return WRITE_REG(REG_LNA, ( (READ_REG(REG_LNA) &
>> ~MASK_LNA_GAIN) | LNA_GAIN_MAX_MINUS_48) );
>>
>> Up to my opinion, my (old) version is better then Gregs (new) version.
>> If you agree, I'll prepare a patch, to revert the modification.
> 
> There seems to be a lot of enum/#define duplication in this driver.
> 
> For instance:
> 
> drivers/staging/pi433/rf69_registers.h
> 
> #define  LNA_GAIN_AUTO				0x00 /* default */
> #define  LNA_GAIN_MAX				0x01
> #define  LNA_GA
> IN_MAX_MINUS_6			0x02
> #define  LNA_GAIN_MAX_MINUS_12
> 			0x03
> #define  LNA_GAIN_MAX_MINUS_24		
> 	0x04
> #define  LNA_GAIN_MAX_MINUS_36			0x05
> #d
> efine  LNA_GAIN_MAX_MINUS_48			0x06
> 
> vs
> 
> drivers/staging/pi433/rf69_enum.h
> 
> enum lnaGain
> {
>      automatic,
>      max,
>      maxMinus6,
>      maxMinus12,
>      maxM
> inus24,
>      maxMinus36,
>      maxMinus48,
>      undefined
> };
> 
> My suggestion would be to remove drivers/staging/pi433/rf69_enum.h
> where possible and convert all these switch/case entries into
> macros like
> 
> #define GAIN_CASE(type)						\
> 	case type: return WRITE_REG(REG_LNA,			\
> 				    (READ_REG(REG_LNA) & ~MASK_LNA_GAIN) | (type));
> 
> so for example this switch becomes
> 
> 	switch (lnaGain) {
> 	GAIN_CASE(LNA_GAIN_AUTO);
> 	...
> 	}
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-11-11 16:40 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-10 17:23 staging: pi433: Possible bug in rf69.c Marcus Wolf
2017-11-10 19:32 ` Dan Carpenter
2017-11-11  7:55   ` Marcus Wolf
2017-11-11  8:40     ` Dan Carpenter
2017-11-11  8:45     ` Dan Carpenter
2017-11-11  9:42       ` Marcus Wolf
2017-11-11 11:18         ` Greg Kroah-Hartman
2017-11-11 11:42           ` Marcus Wolf
2017-11-11 11:49             ` Greg Kroah-Hartman
2017-11-11 11:51               ` Marcus Wolf
2017-11-11 12:33                 ` Greg Kroah-Hartman
2017-11-11 12:10         ` Dan Carpenter
2017-11-11 16:02 ` Joe Perches
2017-11-11 16:40   ` Marcus Wolf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).