* [PATCH 0/2] staging: vt6656: Refactor the vnt_get_phy_field function
@ 2020-04-10 11:28 Oscar Carter
2020-04-10 11:28 ` [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable Oscar Carter
2020-04-10 11:28 ` [PATCH 2/2] staging: vt6656: Remove duplicate code for the phy->service assignment Oscar Carter
0 siblings, 2 replies; 7+ messages in thread
From: Oscar Carter @ 2020-04-10 11:28 UTC (permalink / raw)
To: Forest Bond, Greg Kroah-Hartman
Cc: Oscar Carter, Malcolm Priestley, Quentin Deslandes,
Amir Mahdi Ghorbanian, devel, linux-kernel
This patch series makes a refactor of the vnt_get_phy_field function
through two patches.
The first one refactors the assignment of the "phy->signal" variable
using a constant array with the correct values for every rate.
The second patch removes duplicate code for the assignment of the
"phy->service" variable by putting it outside the if-else statement due
to it's the same for the two branches.
Oscar Carter (2):
staging: vt6656: Refactor the assignment of the phy->signal variable
staging: vt6656: Remove duplicate code for the phy->service assignment
drivers/staging/vt6656/baseband.c | 104 +++++++-----------------------
1 file changed, 22 insertions(+), 82 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable
2020-04-10 11:28 [PATCH 0/2] staging: vt6656: Refactor the vnt_get_phy_field function Oscar Carter
@ 2020-04-10 11:28 ` Oscar Carter
2020-04-10 15:37 ` Malcolm Priestley
2020-04-10 11:28 ` [PATCH 2/2] staging: vt6656: Remove duplicate code for the phy->service assignment Oscar Carter
1 sibling, 1 reply; 7+ messages in thread
From: Oscar Carter @ 2020-04-10 11:28 UTC (permalink / raw)
To: Forest Bond, Greg Kroah-Hartman
Cc: Oscar Carter, Malcolm Priestley, Quentin Deslandes,
Amir Mahdi Ghorbanian, devel, linux-kernel
Create a constant array with the values of the "phy->signal" for every
rate. Remove all "phy->signal" assignments inside the switch statement
and replace these with a single reading from the new vnt_phy_signal
array.
Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
---
drivers/staging/vt6656/baseband.c | 101 +++++++-----------------------
1 file changed, 21 insertions(+), 80 deletions(-)
diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
index a19a563d8bcc..47f93bf6e07b 100644
--- a/drivers/staging/vt6656/baseband.c
+++ b/drivers/staging/vt6656/baseband.c
@@ -115,6 +115,21 @@ static const u16 vnt_frame_time[MAX_RATE] = {
10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
};
+static const u8 vnt_phy_signal[][2] = {
+ {0x00, 0x00}, /* RATE_1M */
+ {0x01, 0x09}, /* RATE_2M */
+ {0x02, 0x0a}, /* RATE_5M */
+ {0x03, 0x0b}, /* RATE_11M */
+ {0x8b, 0x9b}, /* RATE_6M */
+ {0x8f, 0x9f}, /* RATE_9M */
+ {0x8a, 0x9a}, /* RATE_12M */
+ {0x8e, 0x9e}, /* RATE_18M */
+ {0x89, 0x99}, /* RATE_24M */
+ {0x8d, 0x9d}, /* RATE_36M */
+ {0x88, 0x98}, /* RATE_48M */
+ {0x8c, 0x9c} /* RATE_54M */
+};
+
/*
* Description: Calculate data frame transmitting time
*
@@ -183,6 +198,7 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
u32 count = 0;
u32 tmp;
int ext_bit;
+ int i, j;
u8 preamble_type = priv->preamble_type;
bit_count = frame_length * 8;
@@ -191,27 +207,12 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
switch (tx_rate) {
case RATE_1M:
count = bit_count;
-
- phy->signal = 0x00;
-
break;
case RATE_2M:
count = bit_count / 2;
-
- if (preamble_type == 1)
- phy->signal = 0x09;
- else
- phy->signal = 0x01;
-
break;
case RATE_5M:
count = DIV_ROUND_UP(bit_count * 10, 55);
-
- if (preamble_type == 1)
- phy->signal = 0x0a;
- else
- phy->signal = 0x02;
-
break;
case RATE_11M:
count = bit_count / 11;
@@ -224,74 +225,14 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
ext_bit = true;
}
- if (preamble_type == 1)
- phy->signal = 0x0b;
- else
- phy->signal = 0x03;
-
- break;
- case RATE_6M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x9b;
- else
- phy->signal = 0x8b;
-
- break;
- case RATE_9M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x9f;
- else
- phy->signal = 0x8f;
-
- break;
- case RATE_12M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x9a;
- else
- phy->signal = 0x8a;
-
- break;
- case RATE_18M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x9e;
- else
- phy->signal = 0x8e;
-
- break;
- case RATE_24M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x99;
- else
- phy->signal = 0x89;
-
break;
- case RATE_36M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x9d;
- else
- phy->signal = 0x8d;
+ }
- break;
- case RATE_48M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x98;
- else
- phy->signal = 0x88;
+ i = tx_rate > RATE_54M ? RATE_54M : tx_rate;
+ j = tx_rate > RATE_11M ? pkt_type == PK_TYPE_11A
+ : preamble_type == PREAMBLE_SHORT;
- break;
- case RATE_54M:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x9c;
- else
- phy->signal = 0x8c;
- break;
- default:
- if (pkt_type == PK_TYPE_11A)
- phy->signal = 0x9c;
- else
- phy->signal = 0x8c;
- break;
- }
+ phy->signal = vnt_phy_signal[i][j];
if (pkt_type == PK_TYPE_11B) {
phy->service = 0x00;
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] staging: vt6656: Remove duplicate code for the phy->service assignment
2020-04-10 11:28 [PATCH 0/2] staging: vt6656: Refactor the vnt_get_phy_field function Oscar Carter
2020-04-10 11:28 ` [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable Oscar Carter
@ 2020-04-10 11:28 ` Oscar Carter
1 sibling, 0 replies; 7+ messages in thread
From: Oscar Carter @ 2020-04-10 11:28 UTC (permalink / raw)
To: Forest Bond, Greg Kroah-Hartman
Cc: Oscar Carter, Malcolm Priestley, Quentin Deslandes,
Amir Mahdi Ghorbanian, devel, linux-kernel
Take out the "phy->service" assignment from the if-else statement due to
it's the same for the two branches.
Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
---
drivers/staging/vt6656/baseband.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
index 47f93bf6e07b..b0054f6c07e6 100644
--- a/drivers/staging/vt6656/baseband.c
+++ b/drivers/staging/vt6656/baseband.c
@@ -233,14 +233,13 @@ void vnt_get_phy_field(struct vnt_private *priv, u32 frame_length,
: preamble_type == PREAMBLE_SHORT;
phy->signal = vnt_phy_signal[i][j];
+ phy->service = 0x00;
if (pkt_type == PK_TYPE_11B) {
- phy->service = 0x00;
if (ext_bit)
phy->service |= 0x80;
phy->len = cpu_to_le16((u16)count);
} else {
- phy->service = 0x00;
phy->len = cpu_to_le16((u16)frame_length);
}
}
--
2.20.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable
2020-04-10 11:28 ` [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable Oscar Carter
@ 2020-04-10 15:37 ` Malcolm Priestley
2020-04-10 15:59 ` Oscar Carter
0 siblings, 1 reply; 7+ messages in thread
From: Malcolm Priestley @ 2020-04-10 15:37 UTC (permalink / raw)
To: Oscar Carter, Forest Bond, Greg Kroah-Hartman
Cc: Quentin Deslandes, Amir Mahdi Ghorbanian, devel, linux-kernel
On 10/04/2020 12:28, Oscar Carter wrote:
> Create a constant array with the values of the "phy->signal" for every
> rate. Remove all "phy->signal" assignments inside the switch statement
> and replace these with a single reading from the new vnt_phy_signal
> array.
>
> Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
> ---
> drivers/staging/vt6656/baseband.c | 101 +++++++-----------------------
> 1 file changed, 21 insertions(+), 80 deletions(-)
>
> diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
> index a19a563d8bcc..47f93bf6e07b 100644
> --- a/drivers/staging/vt6656/baseband.c
> +++ b/drivers/staging/vt6656/baseband.c
> @@ -115,6 +115,21 @@ static const u16 vnt_frame_time[MAX_RATE] = {
> 10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
> };
Actually you don't need the second values
>
> +static const u8 vnt_phy_signal[][2] = {
> + {0x00, 0x00}, /* RATE_1M */
The driver would never attempt use preamble at this rate
so it's safe to include in with the next 3 rates
> + {0x01, 0x09}, /* RATE_2M */
> + {0x02, 0x0a}, /* RATE_5M */
> + {0x03, 0x0b}, /* RATE_11M */
just |= BIT(3) for preamble.
> + {0x8b, 0x9b}, /* RATE_6M */
> + {0x8f, 0x9f}, /* RATE_9M */
> + {0x8a, 0x9a}, /* RATE_12M */
> + {0x8e, 0x9e}, /* RATE_18M */
> + {0x89, 0x99}, /* RATE_24M */
> + {0x8d, 0x9d}, /* RATE_36M */
> + {0x88, 0x98}, /* RATE_48M */
> + {0x8c, 0x9c} /* RATE_54M */
Again just |= BIT(4) for PK_TYPE_11A
Regards
Malcolm
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable
2020-04-10 15:37 ` Malcolm Priestley
@ 2020-04-10 15:59 ` Oscar Carter
2020-04-10 16:40 ` Malcolm Priestley
0 siblings, 1 reply; 7+ messages in thread
From: Oscar Carter @ 2020-04-10 15:59 UTC (permalink / raw)
To: Malcolm Priestley
Cc: Oscar Carter, Forest Bond, Greg Kroah-Hartman, Quentin Deslandes,
Amir Mahdi Ghorbanian, devel, linux-kernel
On Fri, Apr 10, 2020 at 04:37:59PM +0100, Malcolm Priestley wrote:
>
>
> On 10/04/2020 12:28, Oscar Carter wrote:
> > Create a constant array with the values of the "phy->signal" for every
> > rate. Remove all "phy->signal" assignments inside the switch statement
> > and replace these with a single reading from the new vnt_phy_signal
> > array.
> >
> > Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
> > ---
> > drivers/staging/vt6656/baseband.c | 101 +++++++-----------------------
> > 1 file changed, 21 insertions(+), 80 deletions(-)
> >
> > diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
> > index a19a563d8bcc..47f93bf6e07b 100644
> > --- a/drivers/staging/vt6656/baseband.c
> > +++ b/drivers/staging/vt6656/baseband.c
> > @@ -115,6 +115,21 @@ static const u16 vnt_frame_time[MAX_RATE] = {
> > 10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
> > };
>
> Actually you don't need the second values
Great.
> >
> > +static const u8 vnt_phy_signal[][2] = {
> > + {0x00, 0x00}, /* RATE_1M */
> The driver would never attempt use preamble at this rate
> so it's safe to include in with the next 3 rates
>
> > + {0x01, 0x09}, /* RATE_2M */
> > + {0x02, 0x0a}, /* RATE_5M */
> > + {0x03, 0x0b}, /* RATE_11M */
> just |= BIT(3) for preamble.
>
Ok, I apply this OR operation.
> > + {0x8b, 0x9b}, /* RATE_6M */
> > + {0x8f, 0x9f}, /* RATE_9M */
> > + {0x8a, 0x9a}, /* RATE_12M */
> > + {0x8e, 0x9e}, /* RATE_18M */
> > + {0x89, 0x99}, /* RATE_24M */
> > + {0x8d, 0x9d}, /* RATE_36M */
> > + {0x88, 0x98}, /* RATE_48M */
> > + {0x8c, 0x9c} /* RATE_54M */
>
> Again just |= BIT(4) for PK_TYPE_11A
>
And this one.
> Regards
>
> Malcolm
I will create a new version of this patch and I will resend it.
Thanks,
Oscar Carter
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable
2020-04-10 15:59 ` Oscar Carter
@ 2020-04-10 16:40 ` Malcolm Priestley
2020-04-10 17:17 ` Oscar Carter
0 siblings, 1 reply; 7+ messages in thread
From: Malcolm Priestley @ 2020-04-10 16:40 UTC (permalink / raw)
To: Oscar Carter
Cc: Forest Bond, Greg Kroah-Hartman, Quentin Deslandes,
Amir Mahdi Ghorbanian, devel, linux-kernel
On 10/04/2020 16:59, Oscar Carter wrote:
> On Fri, Apr 10, 2020 at 04:37:59PM +0100, Malcolm Priestley wrote:
>>
>>
>> On 10/04/2020 12:28, Oscar Carter wrote:
>>> Create a constant array with the values of the "phy->signal" for every
>>> rate. Remove all "phy->signal" assignments inside the switch statement
>>> and replace these with a single reading from the new vnt_phy_signal
>>> array.
>>>
>>> Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
>>> ---
>>> drivers/staging/vt6656/baseband.c | 101 +++++++-----------------------
>>> 1 file changed, 21 insertions(+), 80 deletions(-)
>>>
>>> diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
>>> index a19a563d8bcc..47f93bf6e07b 100644
>>> --- a/drivers/staging/vt6656/baseband.c
>>> +++ b/drivers/staging/vt6656/baseband.c
>>> @@ -115,6 +115,21 @@ static const u16 vnt_frame_time[MAX_RATE] = {
>>> 10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
>>> };
>>
>> Actually you don't need the second values
>
> Great.
>>>
>>> +static const u8 vnt_phy_signal[][2] = {
>>> + {0x00, 0x00}, /* RATE_1M */
>> The driver would never attempt use preamble at this rate
>> so it's safe to include in with the next 3 rates
Sorry got this wrong the driver is trying to do preamble (short)
at this rate and it is not working.
So don't apply it to RATE_1M rate.
Regards
Malcolm
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable
2020-04-10 16:40 ` Malcolm Priestley
@ 2020-04-10 17:17 ` Oscar Carter
0 siblings, 0 replies; 7+ messages in thread
From: Oscar Carter @ 2020-04-10 17:17 UTC (permalink / raw)
To: Malcolm Priestley
Cc: Forest Bond, Greg Kroah-Hartman, Quentin Deslandes,
Amir Mahdi Ghorbanian, devel, linux-kernel
On Fri, Apr 10, 2020 at 05:40:52PM +0100, Malcolm Priestley wrote:
>
>
> On 10/04/2020 16:59, Oscar Carter wrote:
> > On Fri, Apr 10, 2020 at 04:37:59PM +0100, Malcolm Priestley wrote:
> > >
> > >
> > > On 10/04/2020 12:28, Oscar Carter wrote:
> > > > Create a constant array with the values of the "phy->signal" for every
> > > > rate. Remove all "phy->signal" assignments inside the switch statement
> > > > and replace these with a single reading from the new vnt_phy_signal
> > > > array.
> > > >
> > > > Signed-off-by: Oscar Carter <oscar.carter@gmx.com>
> > > > ---
> > > > drivers/staging/vt6656/baseband.c | 101 +++++++-----------------------
> > > > 1 file changed, 21 insertions(+), 80 deletions(-)
> > > >
> > > > diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
> > > > index a19a563d8bcc..47f93bf6e07b 100644
> > > > --- a/drivers/staging/vt6656/baseband.c
> > > > +++ b/drivers/staging/vt6656/baseband.c
> > > > @@ -115,6 +115,21 @@ static const u16 vnt_frame_time[MAX_RATE] = {
> > > > 10, 20, 55, 110, 24, 36, 48, 72, 96, 144, 192, 216
> > > > };
> > >
> > > Actually you don't need the second values
> >
> > Great.
> > > >
> > > > +static const u8 vnt_phy_signal[][2] = {
> > > > + {0x00, 0x00}, /* RATE_1M */
> > > The driver would never attempt use preamble at this rate
> > > so it's safe to include in with the next 3 rates
> Sorry got this wrong the driver is trying to do preamble (short)
> at this rate and it is not working.
>
> So don't apply it to RATE_1M rate.
Ok, I take it into account.
>
> Regards
>
> Malcolm
>
Thanks,
Oscar Carter
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-04-10 17:17 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-10 11:28 [PATCH 0/2] staging: vt6656: Refactor the vnt_get_phy_field function Oscar Carter
2020-04-10 11:28 ` [PATCH 1/2] staging: vt6656: Refactor the assignment of the phy->signal variable Oscar Carter
2020-04-10 15:37 ` Malcolm Priestley
2020-04-10 15:59 ` Oscar Carter
2020-04-10 16:40 ` Malcolm Priestley
2020-04-10 17:17 ` Oscar Carter
2020-04-10 11:28 ` [PATCH 2/2] staging: vt6656: Remove duplicate code for the phy->service assignment Oscar Carter
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.