Convert USB descriptor's fields to CPU byte order before using locally in USB NCM gadget driver.
Tested on MIPS32 big-endian device.
Signed-off-by: Dmytro Milinevskyy <[email protected]>
---
drivers/usb/gadget/f_ncm.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/usb/gadget/f_ncm.c b/drivers/usb/gadget/f_ncm.c
index b651b52..fce45ab 100644
--- a/drivers/usb/gadget/f_ncm.c
+++ b/drivers/usb/gadget/f_ncm.c
@@ -869,11 +869,11 @@ static struct sk_buff *ncm_wrap_ntb(struct gether *port,
struct sk_buff *skb2;
int ncb_len = 0;
__le16 *tmp;
- int div = ntb_parameters.wNdpInDivisor;
- int rem = ntb_parameters.wNdpInPayloadRemainder;
- int pad;
- int ndp_align = ntb_parameters.wNdpInAlignment;
- int ndp_pad;
+ int div = le16_to_cpu(ntb_parameters.wNdpInDivisor);
+ int rem = le16_to_cpu(ntb_parameters.wNdpInPayloadRemainder);
+ int pad;
+ int ndp_align = le16_to_cpu(ntb_parameters.wNdpInAlignment);
+ int ndp_pad;
unsigned max_size = ncm->port.fixed_in_len;
struct ndp_parser_opts *opts = ncm->parser_opts;
unsigned crc_len = ncm->is_crc ? sizeof(uint32_t) : 0;
--
1.7.12.2
On Mon, Oct 08, 2012 at 11:59:03PM +0300, Dmytro Milinevskyy wrote:
> Convert USB descriptor's fields to CPU byte order before using locally in USB NCM gadget driver.
> Tested on MIPS32 big-endian device.
>
> Signed-off-by: Dmytro Milinevskyy <[email protected]>
> ---
> drivers/usb/gadget/f_ncm.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/usb/gadget/f_ncm.c b/drivers/usb/gadget/f_ncm.c
> index b651b52..fce45ab 100644
> --- a/drivers/usb/gadget/f_ncm.c
> +++ b/drivers/usb/gadget/f_ncm.c
> @@ -869,11 +869,11 @@ static struct sk_buff *ncm_wrap_ntb(struct gether *port,
> struct sk_buff *skb2;
> int ncb_len = 0;
> __le16 *tmp;
> - int div = ntb_parameters.wNdpInDivisor;
> - int rem = ntb_parameters.wNdpInPayloadRemainder;
> - int pad;
> - int ndp_align = ntb_parameters.wNdpInAlignment;
> - int ndp_pad;
> + int div = le16_to_cpu(ntb_parameters.wNdpInDivisor);
> + int rem = le16_to_cpu(ntb_parameters.wNdpInPayloadRemainder);
> + int pad;
> + int ndp_align = le16_to_cpu(ntb_parameters.wNdpInAlignment);
> + int ndp_pad;
It would be nice to keep the two tabs between int and variable. One question:
In ntb_parameters the member wLength is 16bit and not using cpu_to_le16(). How
does it work? Is the test on host side not strict enough?
> unsigned max_size = ncm->port.fixed_in_len;
> struct ndp_parser_opts *opts = ncm->parser_opts;
> unsigned crc_len = ncm->is_crc ? sizeof(uint32_t) : 0;
Sebastian
Hi Sebastian,
I was trying to keep 2 tabs but checkpatch didn't accept long line
that's why I killed extra tab.
>How does it work? Is the test on host side not strict enough?
The host part(cdc_ncm) does not check this field.
However I agree that at least on device side this should be corrected.
Felipe, do you want me to send another patch or resend previous one
with this correction?
Thanks,
-- dmytro
On Wed, Oct 24, 2012 at 3:58 PM, Sebastian Andrzej Siewior
<[email protected]> wrote:
> On Mon, Oct 08, 2012 at 11:59:03PM +0300, Dmytro Milinevskyy wrote:
>> Convert USB descriptor's fields to CPU byte order before using locally in USB NCM gadget driver.
>> Tested on MIPS32 big-endian device.
>>
>> Signed-off-by: Dmytro Milinevskyy <[email protected]>
>> ---
>> drivers/usb/gadget/f_ncm.c | 10 +++++-----
>> 1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/f_ncm.c b/drivers/usb/gadget/f_ncm.c
>> index b651b52..fce45ab 100644
>> --- a/drivers/usb/gadget/f_ncm.c
>> +++ b/drivers/usb/gadget/f_ncm.c
>> @@ -869,11 +869,11 @@ static struct sk_buff *ncm_wrap_ntb(struct gether *port,
>> struct sk_buff *skb2;
>> int ncb_len = 0;
>> __le16 *tmp;
>> - int div = ntb_parameters.wNdpInDivisor;
>> - int rem = ntb_parameters.wNdpInPayloadRemainder;
>> - int pad;
>> - int ndp_align = ntb_parameters.wNdpInAlignment;
>> - int ndp_pad;
>> + int div = le16_to_cpu(ntb_parameters.wNdpInDivisor);
>> + int rem = le16_to_cpu(ntb_parameters.wNdpInPayloadRemainder);
>> + int pad;
>> + int ndp_align = le16_to_cpu(ntb_parameters.wNdpInAlignment);
>> + int ndp_pad;
>
> It would be nice to keep the two tabs between int and variable. One question:
> In ntb_parameters the member wLength is 16bit and not using cpu_to_le16(). How
> does it work? Is the test on host side not strict enough?
>
>> unsigned max_size = ncm->port.fixed_in_len;
>> struct ndp_parser_opts *opts = ncm->parser_opts;
>> unsigned crc_len = ncm->is_crc ? sizeof(uint32_t) : 0;
>
> Sebastian
On Sun, Oct 28, 2012 at 06:30:02PM +0100, Dmytro Milinevskyy wrote:
> I was trying to keep 2 tabs but checkpatch didn't accept long line
> that's why I killed extra tab.
Then move them to the code section instead to initialize them in the
declaration section.
> >How does it work? Is the test on host side not strict enough?
> The host part(cdc_ncm) does not check this field.
> However I agree that at least on device side this should be corrected.
Good.
> Felipe, do you want me to send another patch or resend previous one
> with this correction?
If it hasn't been applied yet resend it.
> Thanks,
Sebastian
On Sun, Oct 28, 2012 at 06:48:29PM +0100, Sebastian Andrzej Siewior wrote:
> On Sun, Oct 28, 2012 at 06:30:02PM +0100, Dmytro Milinevskyy wrote:
> > I was trying to keep 2 tabs but checkpatch didn't accept long line
> > that's why I killed extra tab.
>
> Then move them to the code section instead to initialize them in the
> declaration section.
>
> > >How does it work? Is the test on host side not strict enough?
> > The host part(cdc_ncm) does not check this field.
> > However I agree that at least on device side this should be corrected.
> Good.
>
> > Felipe, do you want me to send another patch or resend previous one
> > with this correction?
> If it hasn't been applied yet resend it.
I think I hasn't applied this one yet, so resending is the way to go.
--
balbi