* [PATCH net-next] ieee802154: use helper function to get rid of redundancy @ 2014-05-31 23:39 Jean Sacren 2014-06-01 7:26 ` Alexander Aring 0 siblings, 1 reply; 8+ messages in thread From: Jean Sacren @ 2014-05-31 23:39 UTC (permalink / raw) To: Alexander Smirnov, Dmitry Eremin-Solenikov Cc: Alexander Aring, linux-zigbee-devel, netdev In some call sites of at86rf230_write_subreg(), they are rather redundant. Use a helper function to replace those call sites for efficiency. With at86rf230_write_subreg_by_page(), now ->rssi_base_val is assigned before at86rf230_write_subreg() is evaluated. Looking at at86rf230_write_subreg(), that change could possibly affect __at86rf230_read_subreg() and __at86rf230_write() only or vice versa. Yet by the definition of struct at86rf230_local changing ->rssi_base_val will in no way affect those two functions above and evaluation of those two has no impact on ->rssi_base_val. Thus, at86rf230_write_subreg_by_page() itself is safe. Additionally at86rf230_write_subreg_by_channel() is simple and safe. Signed-off-by: Jean Sacren <sakiwit@gmail.com> --- drivers/net/ieee802154/at86rf230.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c index 4517b149ed07..5aecbd1c402c 100644 --- a/drivers/net/ieee802154/at86rf230.c +++ b/drivers/net/ieee802154/at86rf230.c @@ -597,25 +597,37 @@ at86rf230_set_channel(struct at86rf230_local *lp, int page, int channel) return at86rf230_write_subreg(lp, SR_CHANNEL, channel); } +static int at86rf230_write_subreg_by_channel(struct at86rf230_local *lp, + int channel) +{ + if (channel) + channel = 1; + + return at86rf230_write_subreg(lp, SR_SUB_MODE, channel); +} + +static int at86rf230_write_subreg_by_page(struct at86rf230_local *lp, int page) +{ + if (page) { + lp->rssi_base_val = -98; + page = 1; + } else { + lp->rssi_base_val = -100; + } + + return at86rf230_write_subreg(lp, SR_BPSK_QPSK, page); +} + static int at86rf212_set_channel(struct at86rf230_local *lp, int page, int channel) { int rc; - if (channel == 0) - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 0); - else - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 1); + rc = at86rf230_write_subreg_by_channel(lp, channel); if (rc < 0) return rc; - if (page == 0) { - rc = at86rf230_write_subreg(lp, SR_BPSK_QPSK, 0); - lp->rssi_base_val = -100; - } else { - rc = at86rf230_write_subreg(lp, SR_BPSK_QPSK, 1); - lp->rssi_base_val = -98; - } + rc = at86rf230_write_subreg_by_page(lp, page); if (rc < 0) return rc; ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ieee802154: use helper function to get rid of redundancy 2014-05-31 23:39 [PATCH net-next] ieee802154: use helper function to get rid of redundancy Jean Sacren @ 2014-06-01 7:26 ` Alexander Aring 2014-06-01 14:23 ` Jean Sacren 0 siblings, 1 reply; 8+ messages in thread From: Alexander Aring @ 2014-06-01 7:26 UTC (permalink / raw) To: Jean Sacren Cc: Alexander Smirnov, Dmitry Eremin-Solenikov, linux-zigbee-devel, netdev Hi Jean, the at86rf230 driver supports several at86rf2xx chips. You split the at86rf212_set_channel which is at86rf212 specific in two function which are named at86rf230_foo. Sorry, but I think we should not do this. One reason is that the code is much easier to read when we have one channel_set callback for at86rf23x and at86rf212 chips. Btw. I preparing a big cleanup for this driver which supports regmap and asychronous handling for rx/tx paths. - Alex ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ieee802154: use helper function to get rid of redundancy 2014-06-01 7:26 ` Alexander Aring @ 2014-06-01 14:23 ` Jean Sacren [not found] ` <20140601142317.GA19754-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Jean Sacren @ 2014-06-01 14:23 UTC (permalink / raw) To: Alexander Aring Cc: Alexander Smirnov, Dmitry Eremin-Solenikov, linux-zigbee-devel, netdev From: Alexander Aring <alex.aring@gmail.com> Date: Sun, 01 Jun 2014 09:26:57 +0200 Hi Alex, Thank you very much for the feedback. > the at86rf230 driver supports several at86rf2xx chips. You split the > at86rf212_set_channel which is at86rf212 specific in two function which > are named at86rf230_foo. I didn't "split" at86rf212_set_channel() in two functions. I spliced those two sections of code and made at86rf212_set_channel() far succinct and easy to read. > Sorry, but I think we should not do this. One reason is that the code is > much easier to read when we have one channel_set callback for at86rf23x > and at86rf212 chips. If you use one channel_set callback as before the change, how would you overcome the redundancy? > Btw. I preparing a big cleanup for this driver which supports regmap and > asychronous handling for rx/tx paths. Thank you for letting me know. I'm sure I will learn a lot. ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20140601142317.GA19754-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* Re: [PATCH net-next] ieee802154: use helper function to get rid of redundancy [not found] ` <20140601142317.GA19754-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> @ 2014-06-01 14:35 ` Alexander Aring 2014-06-01 15:35 ` Jean Sacren 0 siblings, 1 reply; 8+ messages in thread From: Alexander Aring @ 2014-06-01 14:35 UTC (permalink / raw) To: Jean Sacren Cc: netdev-u79uwXL29TY76Z2rM5mHXA, linux-zigbee-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f Hi, On Sun, Jun 01, 2014 at 08:23:17AM -0600, Jean Sacren wrote: > From: Alexander Aring <alex.aring-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > Date: Sun, 01 Jun 2014 09:26:57 +0200 > > Hi Alex, > > Thank you very much for the feedback. > > > the at86rf230 driver supports several at86rf2xx chips. You split the > > at86rf212_set_channel which is at86rf212 specific in two function which > > are named at86rf230_foo. > > I didn't "split" at86rf212_set_channel() in two functions. I spliced > those two sections of code and made at86rf212_set_channel() far > succinct and easy to read. > yes, but this driver supports more than one chip and it's easier to read if we have one channel_set function for each chip type. Note you also named the specific channel_set function to a another at86rf230_foo function which is at86rf212 specific only. Sorry that will confuse all the people who will ever read this code. There is a at86rf230_ops and at86rf212_ops struct. The channel_set function it's much easier to have only one callback for each struct, otherwise you have 4 different channel_set functions and nobody knows for which at86rf2xx type that function is for. > > Sorry, but I think we should not do this. One reason is that the code is > > much easier to read when we have one channel_set callback for at86rf23x > > and at86rf212 chips. > > If you use one channel_set callback as before the change, how would you > overcome the redundancy? > There is no redundancy, sorry. There would be a redundancy if two chiptypes like at86rf231 and at86rf212 needs some code of this callback and you can do some codesharing, but you can't do that there. - Alex ------------------------------------------------------------------------------ Time is money. Stop wasting it! Get your web API in 5 minutes. www.restlet.com/download http://p.sf.net/sfu/restlet ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ieee802154: use helper function to get rid of redundancy 2014-06-01 14:35 ` Alexander Aring @ 2014-06-01 15:35 ` Jean Sacren 2014-06-01 16:39 ` Alexander Aring 0 siblings, 1 reply; 8+ messages in thread From: Jean Sacren @ 2014-06-01 15:35 UTC (permalink / raw) To: Alexander Aring Cc: Alexander Smirnov, Dmitry Eremin-Solenikov, linux-zigbee-devel, netdev From: Alexander Aring <alex.aring@gmail.com> Date: Sun, 01 Jun 2014 16:35:53 +0200 > > Hi, > > On Sun, Jun 01, 2014 at 08:23:17AM -0600, Jean Sacren wrote: > > From: Alexander Aring <alex.aring@gmail.com> > > Date: Sun, 01 Jun 2014 09:26:57 +0200 > > > > Hi Alex, > > > > Thank you very much for the feedback. > > > > > the at86rf230 driver supports several at86rf2xx chips. You split the > > > at86rf212_set_channel which is at86rf212 specific in two function which > > > are named at86rf230_foo. > > > > I didn't "split" at86rf212_set_channel() in two functions. I spliced > > those two sections of code and made at86rf212_set_channel() far > > succinct and easy to read. > > > > yes, but this driver supports more than one chip and it's easier to read > if we have one channel_set function for each chip type. Note you also > named the specific channel_set function to a another at86rf230_foo > function which is at86rf212 specific only. Sorry that will confuse > all the people who will ever read this code. > > There is a at86rf230_ops and at86rf212_ops struct. The channel_set > function it's much easier to have only one callback for each struct, > otherwise you have 4 different channel_set functions and nobody knows > for which at86rf2xx type that function is for. You mean something like the following will be less confusing? diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c index 4517b149ed07..06b494bacc44 100644 --- a/drivers/net/ieee802154/at86rf230.c +++ b/drivers/net/ieee802154/at86rf230.c @@ -602,20 +602,21 @@ at86rf212_set_channel(struct at86rf230_local *lp, int page, int channel) { int rc; - if (channel == 0) - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 0); - else - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 1); + if (channel) + channel = 1; + + rc = at86rf230_write_subreg(lp, SR_SUB_MODE, channel); if (rc < 0) return rc; - if (page == 0) { - rc = at86rf230_write_subreg(lp, SR_BPSK_QPSK, 0); - lp->rssi_base_val = -100; - } else { - rc = at86rf230_write_subreg(lp, SR_BPSK_QPSK, 1); + if (page) { lp->rssi_base_val = -98; + page = 1; + } else { + lp->rssi_base_val = -100; } + + rc = at86rf230_write_subreg(lp, SR_BPSK_QPSK, page); if (rc < 0) return rc; ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ieee802154: use helper function to get rid of redundancy 2014-06-01 15:35 ` Jean Sacren @ 2014-06-01 16:39 ` Alexander Aring 2014-06-01 17:49 ` Jean Sacren 0 siblings, 1 reply; 8+ messages in thread From: Alexander Aring @ 2014-06-01 16:39 UTC (permalink / raw) To: Jean Sacren Cc: Alexander Smirnov, Dmitry Eremin-Solenikov, linux-zigbee-devel, netdev On Sun, Jun 01, 2014 at 09:35:47AM -0600, Jean Sacren wrote: > From: Alexander Aring <alex.aring@gmail.com> > Date: Sun, 01 Jun 2014 16:35:53 +0200 > > > > Hi, > > > > On Sun, Jun 01, 2014 at 08:23:17AM -0600, Jean Sacren wrote: > > > From: Alexander Aring <alex.aring@gmail.com> > > > Date: Sun, 01 Jun 2014 09:26:57 +0200 > > > > > > Hi Alex, > > > > > > Thank you very much for the feedback. > > > > > > > the at86rf230 driver supports several at86rf2xx chips. You split the > > > > at86rf212_set_channel which is at86rf212 specific in two function which > > > > are named at86rf230_foo. > > > > > > I didn't "split" at86rf212_set_channel() in two functions. I spliced > > > those two sections of code and made at86rf212_set_channel() far > > > succinct and easy to read. > > > > > > > yes, but this driver supports more than one chip and it's easier to read > > if we have one channel_set function for each chip type. Note you also > > named the specific channel_set function to a another at86rf230_foo > > function which is at86rf212 specific only. Sorry that will confuse > > all the people who will ever read this code. > > > > There is a at86rf230_ops and at86rf212_ops struct. The channel_set > > function it's much easier to have only one callback for each struct, > > otherwise you have 4 different channel_set functions and nobody knows > > for which at86rf2xx type that function is for. > > You mean something like the following will be less confusing? Yes that's less but there are issues and I don't see any reason why we should do that. > > diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c > index 4517b149ed07..06b494bacc44 100644 > --- a/drivers/net/ieee802154/at86rf230.c > +++ b/drivers/net/ieee802154/at86rf230.c > @@ -602,20 +602,21 @@ at86rf212_set_channel(struct at86rf230_local *lp, int page, int channel) > { > int rc; > > - if (channel == 0) > - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 0); > - else > - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 1); > + if (channel) > + channel = 1; > + > + rc = at86rf230_write_subreg(lp, SR_SUB_MODE, channel); > if (rc < 0) > return rc; > First: This will break the at86rf212_set_channel function. At the end of this function we need the channel parameter and you overwrite it here. At the end of this function stands: "return at86rf230_write_subreg(lp, SR_CHANNEL, channel);" Second: The variable channel should be a new variable named sub_mode and initialized to 0, this fixes the first issue. But again, I don't see any reasons why we should change that. It's the same thing like before. - Alex ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ieee802154: use helper function to get rid of redundancy 2014-06-01 16:39 ` Alexander Aring @ 2014-06-01 17:49 ` Jean Sacren 2014-06-01 17:53 ` Jean Sacren 0 siblings, 1 reply; 8+ messages in thread From: Jean Sacren @ 2014-06-01 17:49 UTC (permalink / raw) To: Alexander Aring Cc: Alexander Smirnov, Dmitry Eremin-Solenikov, linux-zigbee-devel, netdev From: Alexander Aring <alex.aring@gmail.com> Date: Sun, 01 Jun 2014 18:39:28 +0200 > > > You mean something like the following will be less confusing? > > Yes that's less but there are issues and I don't see any reason why we > should do that. > > > > > diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c > > index 4517b149ed07..06b494bacc44 100644 > > --- a/drivers/net/ieee802154/at86rf230.c > > +++ b/drivers/net/ieee802154/at86rf230.c > > @@ -602,20 +602,21 @@ at86rf212_set_channel(struct at86rf230_local *lp, int page, int channel) > > { > > int rc; > > > > - if (channel == 0) > > - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 0); > > - else > > - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 1); > > + if (channel) > > + channel = 1; > > + > > + rc = at86rf230_write_subreg(lp, SR_SUB_MODE, channel); > > if (rc < 0) > > return rc; > > > > First: > > This will break the at86rf212_set_channel function. At the end of this > function we need the channel parameter and you overwrite it here. > At the end of this function stands: > > "return at86rf230_write_subreg(lp, SR_CHANNEL, channel);" You are right, but we can: if (channel) rc = 1; rc = at86rf230_write_subreg(lp, SR_SUB_MODE, rc); ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next] ieee802154: use helper function to get rid of redundancy 2014-06-01 17:49 ` Jean Sacren @ 2014-06-01 17:53 ` Jean Sacren 0 siblings, 0 replies; 8+ messages in thread From: Jean Sacren @ 2014-06-01 17:53 UTC (permalink / raw) To: Alexander Aring Cc: Alexander Smirnov, Dmitry Eremin-Solenikov, linux-zigbee-devel, netdev From: Jean Sacren <sakiwit@gmail.com> Date: Sun, 01 Jun 2014 11:49:29 -0600 > > From: Alexander Aring <alex.aring@gmail.com> > Date: Sun, 01 Jun 2014 18:39:28 +0200 > > > > > You mean something like the following will be less confusing? > > > > Yes that's less but there are issues and I don't see any reason why we > > should do that. > > > > > > > > diff --git a/drivers/net/ieee802154/at86rf230.c b/drivers/net/ieee802154/at86rf230.c > > > index 4517b149ed07..06b494bacc44 100644 > > > --- a/drivers/net/ieee802154/at86rf230.c > > > +++ b/drivers/net/ieee802154/at86rf230.c > > > @@ -602,20 +602,21 @@ at86rf212_set_channel(struct at86rf230_local *lp, int page, int channel) > > > { > > > int rc; > > > > > > - if (channel == 0) > > > - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 0); > > > - else > > > - rc = at86rf230_write_subreg(lp, SR_SUB_MODE, 1); > > > + if (channel) > > > + channel = 1; > > > + > > > + rc = at86rf230_write_subreg(lp, SR_SUB_MODE, channel); > > > if (rc < 0) > > > return rc; > > > > > > > First: > > > > This will break the at86rf212_set_channel function. At the end of this > > function we need the channel parameter and you overwrite it here. > > At the end of this function stands: > > > > "return at86rf230_write_subreg(lp, SR_CHANNEL, channel);" > > You are right, but we can: > > if (channel) > rc = 1; > > rc = at86rf230_write_subreg(lp, SR_SUB_MODE, rc); Obviously: int rc = 0; ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-06-01 17:53 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-05-31 23:39 [PATCH net-next] ieee802154: use helper function to get rid of redundancy Jean Sacren 2014-06-01 7:26 ` Alexander Aring 2014-06-01 14:23 ` Jean Sacren [not found] ` <20140601142317.GA19754-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-06-01 14:35 ` Alexander Aring 2014-06-01 15:35 ` Jean Sacren 2014-06-01 16:39 ` Alexander Aring 2014-06-01 17:49 ` Jean Sacren 2014-06-01 17:53 ` Jean Sacren
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).