All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.