2013-12-01 08:57:33

by Malcolm Priestley

[permalink] [raw]
Subject: [PATCH] [stable back port for <= 3.8] staging: vt6656: [BUG] Fix for TX USB resets from vendors driver.

upstream commit
9df682927c2e3a92f43803d6b52095992e3b2ab8
back port for 3.8 and less kernels.

This fixes resets on heavy TX data traffic.

Vendor driver
VT6656_Linux_src_v1.21.03_x86_11.04.zip
http://www.viaembedded.com/servlet/downloadSvl?id=1890&download_file_id=14704
This is GPL-licensed code.

original code
BBbVT3184Init
...
//2007-0725, RobertChang add, Enable Squelch detect reset option(SQ_RST_Opt), USB (register4, bit1)
CONTROLnsRequestIn(pDevice,
MESSAGE_TYPE_READ,
(WORD)0x600+4, // USB's Reg4's bit1
MESSAGE_REQUEST_MEM,
1,
(PBYTE) &byData);
byData = byData|2 ;
CONTROLnsRequestOut(pDevice,
MESSAGE_TYPE_WRITE,
(WORD)0x600+4, // USB's Reg4's bit1
MESSAGE_REQUEST_MEM,
1,
(PBYTE) &byData);

return TRUE;//ntStatus;
....

A back port patch is needed for kernels less than 3.10.

Signed-off-by: Malcolm Priestley <[email protected]>
Cc: [email protected] # <= v3.8
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/staging/vt6656/baseband.c | 11 +++++++++++
drivers/staging/vt6656/rndis.h | 1 +
2 files changed, 12 insertions(+)

diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
index 3855015..65503b9 100644
--- a/drivers/staging/vt6656/baseband.c
+++ b/drivers/staging/vt6656/baseband.c
@@ -976,6 +976,7 @@ BOOL BBbVT3184Init(PSDevice pDevice)
PBYTE pbyAgc;
WORD wLengthAgc;
BYTE abyArray[256];
+ u8 data;

ntStatus = CONTROLnsRequestIn(pDevice,
MESSAGE_TYPE_READ,
@@ -1144,6 +1145,16 @@ else {
ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x0D,0x01);

RFbRFTableDownload(pDevice);
+
+ /* Fix for TX USB resets from vendors driver */
+ CONTROLnsRequestIn(pDevice, MESSAGE_TYPE_READ, USB_REG4,
+ MESSAGE_REQUEST_MEM, sizeof(data), &data);
+
+ data |= 0x2;
+
+ CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_WRITE, USB_REG4,
+ MESSAGE_REQUEST_MEM, sizeof(data), &data);
+
return TRUE;//ntStatus;
}

diff --git a/drivers/staging/vt6656/rndis.h b/drivers/staging/vt6656/rndis.h
index fccf7e9..dcf7bf5 100644
--- a/drivers/staging/vt6656/rndis.h
+++ b/drivers/staging/vt6656/rndis.h
@@ -69,6 +69,7 @@

#define VIAUSB20_PACKET_HEADER 0x04

+#define USB_REG4 0x604

/*--------------------- Export Classes ----------------------------*/

--
1.8.4.4



2013-12-11 19:15:04

by Kamal Mostafa

[permalink] [raw]
Subject: Re: [PATCH] [stable back port for <= 3.8] staging: vt6656: [BUG] Fix for TX USB resets from vendors driver.

On Sun, 2013-12-01 at 08:57 +0000, Malcolm Priestley wrote:
> upstream commit
> 9df682927c2e3a92f43803d6b52095992e3b2ab8
> back port for 3.8 and less kernels.

Thanks very much Malcolm... I'll queue this up for 3.8-stable.

-Kamal


> This fixes resets on heavy TX data traffic.
>
> Vendor driver
> VT6656_Linux_src_v1.21.03_x86_11.04.zip
> http://www.viaembedded.com/servlet/downloadSvl?id=1890&download_file_id=14704
> This is GPL-licensed code.
>
> original code
> BBbVT3184Init
> ...
> //2007-0725, RobertChang add, Enable Squelch detect reset option(SQ_RST_Opt), USB (register4, bit1)
> CONTROLnsRequestIn(pDevice,
> MESSAGE_TYPE_READ,
> (WORD)0x600+4, // USB's Reg4's bit1
> MESSAGE_REQUEST_MEM,
> 1,
> (PBYTE) &byData);
> byData = byData|2 ;
> CONTROLnsRequestOut(pDevice,
> MESSAGE_TYPE_WRITE,
> (WORD)0x600+4, // USB's Reg4's bit1
> MESSAGE_REQUEST_MEM,
> 1,
> (PBYTE) &byData);
>
> return TRUE;//ntStatus;
> ....
>
> A back port patch is needed for kernels less than 3.10.
>
> Signed-off-by: Malcolm Priestley <[email protected]>
> Cc: [email protected] # <= v3.8
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> ---
> drivers/staging/vt6656/baseband.c | 11 +++++++++++
> drivers/staging/vt6656/rndis.h | 1 +
> 2 files changed, 12 insertions(+)
>
> diff --git a/drivers/staging/vt6656/baseband.c b/drivers/staging/vt6656/baseband.c
> index 3855015..65503b9 100644
> --- a/drivers/staging/vt6656/baseband.c
> +++ b/drivers/staging/vt6656/baseband.c
> @@ -976,6 +976,7 @@ BOOL BBbVT3184Init(PSDevice pDevice)
> PBYTE pbyAgc;
> WORD wLengthAgc;
> BYTE abyArray[256];
> + u8 data;
>
> ntStatus = CONTROLnsRequestIn(pDevice,
> MESSAGE_TYPE_READ,
> @@ -1144,6 +1145,16 @@ else {
> ControlvWriteByte(pDevice,MESSAGE_REQUEST_BBREG,0x0D,0x01);
>
> RFbRFTableDownload(pDevice);
> +
> + /* Fix for TX USB resets from vendors driver */
> + CONTROLnsRequestIn(pDevice, MESSAGE_TYPE_READ, USB_REG4,
> + MESSAGE_REQUEST_MEM, sizeof(data), &data);
> +
> + data |= 0x2;
> +
> + CONTROLnsRequestOut(pDevice, MESSAGE_TYPE_WRITE, USB_REG4,
> + MESSAGE_REQUEST_MEM, sizeof(data), &data);
> +
> return TRUE;//ntStatus;
> }
>
> diff --git a/drivers/staging/vt6656/rndis.h b/drivers/staging/vt6656/rndis.h
> index fccf7e9..dcf7bf5 100644
> --- a/drivers/staging/vt6656/rndis.h
> +++ b/drivers/staging/vt6656/rndis.h
> @@ -69,6 +69,7 @@
>
> #define VIAUSB20_PACKET_HEADER 0x04
>
> +#define USB_REG4 0x604
>
> /*--------------------- Export Classes ----------------------------*/
>


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part

2013-12-02 12:32:34

by Luis Henriques

[permalink] [raw]
Subject: Re: [PATCH] [stable back port for <= 3.8] staging: vt6656: [BUG] Fix for TX USB resets from vendors driver.

On Sun, Dec 01, 2013 at 08:57:26AM +0000, Malcolm Priestley wrote:
> upstream commit
> 9df682927c2e3a92f43803d6b52095992e3b2ab8
> back port for 3.8 and less kernels.
>
> This fixes resets on heavy TX data traffic.
>
> Vendor driver
> VT6656_Linux_src_v1.21.03_x86_11.04.zip
> http://www.viaembedded.com/servlet/downloadSvl?id=1890&download_file_id=14704
> This is GPL-licensed code.
>
> original code
> BBbVT3184Init
> ...
> //2007-0725, RobertChang add, Enable Squelch detect reset option(SQ_RST_Opt), USB (register4, bit1)
> CONTROLnsRequestIn(pDevice,
> MESSAGE_TYPE_READ,
> (WORD)0x600+4, // USB's Reg4's bit1
> MESSAGE_REQUEST_MEM,
> 1,
> (PBYTE) &byData);
> byData = byData|2 ;
> CONTROLnsRequestOut(pDevice,
> MESSAGE_TYPE_WRITE,
> (WORD)0x600+4, // USB's Reg4's bit1
> MESSAGE_REQUEST_MEM,
> 1,
> (PBYTE) &byData);
>
> return TRUE;//ntStatus;
> ....
>
> A back port patch is needed for kernels less than 3.10.

Thank you, I'll queue it for the 3.5 kernel.

Cheers,
--
Luis