From: Oscar Carter <oscar.carter@gmx.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Oscar Carter <oscar.carter@gmx.com>,
Forest Bond <forest@alittletooquiet.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Malcolm Priestley <tvboxspy@gmail.com>,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC] staging: vt6656: Add formula to the vnt_rf_addpower function
Date: Wed, 15 Apr 2020 18:25:41 +0200 [thread overview]
Message-ID: <20200415162541.GA3893@ubuntu> (raw)
In-Reply-To: <20200414131214.GI1163@kadam>
On Tue, Apr 14, 2020 at 04:12:14PM +0300, Dan Carpenter wrote:
> On Mon, Apr 13, 2020 at 04:02:09PM +0200, Oscar Carter wrote:
> > diff --git a/drivers/staging/vt6656/rf.c b/drivers/staging/vt6656/rf.c
> > index 4f9aba0f21b0..3b200d7290a5 100644
> > --- a/drivers/staging/vt6656/rf.c
> > +++ b/drivers/staging/vt6656/rf.c
> > @@ -575,28 +575,14 @@ int vnt_rf_setpower(struct vnt_private *priv, u32 rate, u32 channel)
> >
> > static u8 vnt_rf_addpower(struct vnt_private *priv)
> > {
> > + s32 base;
>
> Just use "int". s32 is for when signed 32 bit is specified in the
> hardware. I realize that it's done in this file, but if all your
> friends jumped off a bridge doesn't mean you should drink their kool-aid.
Ok, lesson learned and thanks for the aclaration about when use every type.
> > s32 rssi = -priv->current_rssi;
> >
> > if (!rssi)
> > return 7;
> >
> > - if (priv->rf_type == RF_VT3226D0) {
> > - if (rssi < -70)
> > - return 9;
> > - else if (rssi < -65)
> > - return 7;
> > - else if (rssi < -60)
> > - return 5;
> > - } else {
> > - if (rssi < -80)
> > - return 9;
> > - else if (rssi < -75)
> > - return 7;
> > - else if (rssi < -70)
> > - return 5;
> > - }
> > -
> > - return 0;
> > + base = (priv->rf_type == RF_VT3226D0) ? -60 : -70;
> > + return (rssi < base--) ? ((rssi - base) / -5) * 2 + 5 : 0;
> ^^^^^^
> I quite hate this postop. It would have been cleaner to write it like:
>
> return (rssi < base) ? ((rssi - (base - 1)) / -5) * 2 + 5 : 0
^ ^
Now, if we apply the minus operator one parentheses can be removed. The
same expression is now:
return (rssi < base) ? ((rssi - base + 1) / -5) * 2 + 5 : 0
I think it's clear enought.
> I'm sorry, I'm not clever enough to figure out the potential values of
> "rssi".
The IEEE 802.11 standard specifies that RSSI can be on a scale of 0 to
up to 255, and that each chipset manufacturer can define their own max
RSSI value. It's all up to the manufacturer.
> How did you work out this formula? It feels like it came from
> a standard or something?
I realized that the two branches of the if statement return the same
values (5, 7, 9) and that each value has a difference of 2 units from
the previous one. Also, every branch has 3 ranges, and every range has
an interval of 5. The only difference in this case is the "base" value
of each branch.
So, the solution was obtain the range index --> (rssi - base) / -5
Then, we need two units for every range index -> * 2
Now, the return value starts with five -------> + 5
The base-- was to obtain the range index the same that the orignal
function.
> Do we not have a function already which implements the standard?
I have been searching but I have not found anything that relates the
RSSI value with the amount of power to add. I have found
struct station_parameters -> member txpwr (struct sta_txpwr type)
but all the functions related to this doesn't set the tx power
depending on the RSSI value.
> regards,
> dan carpenter
>
thanks,
oscar carter
next prev parent reply other threads:[~2020-04-15 16:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-13 14:02 [RFC] staging: vt6656: Add formula to the vnt_rf_addpower function Oscar Carter
2020-04-14 13:12 ` Dan Carpenter
2020-04-15 16:25 ` Oscar Carter [this message]
2020-04-20 16:18 ` Oscar Carter
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=20200415162541.GA3893@ubuntu \
--to=oscar.carter@gmx.com \
--cc=dan.carpenter@oracle.com \
--cc=devel@driverdev.osuosl.org \
--cc=forest@alittletooquiet.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tvboxspy@gmail.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.