Re: [PATCH v2] staging: wilc1000: fix cast to restricted __le32

2019-01-07 Thread Július Milan
On Mon, Jan 07, 2019 at 06:06:55AM +, ajay.kat...@microchip.com wrote:
Hi Ajay,

> Please resubmit the patch by changing 'frame_type' type to '__le16' in
> 'wilc_reg_frame' struct.

Done, sent patch version 4.

Message subject changed to:
"[PATCH v4] staging: wilc1000: fix registration frame size"
to fit v4 patch content.

Thank you for your review,

Julius


Re: [PATCH v2] staging: wilc1000: fix cast to restricted __le32

2019-01-06 Thread Ajay.Kathat
Hi Julius,

On 1/6/2019 12:48 PM, Július Milan wrote:
>> Before you send V3, are you sure this is the correct fix? As "frame_type" is
>> input as u16, it seems to me that the frame_type member of struct 
>> wilc_reg_frame
>> should be __le16, not __le32.
> 
> Yes, I am confident about it.
> The frame_type member of struct wilc_reg_frame contains in some cases
> 32 bit value
> as you can see in function wilc_wlan_cfg_set_wid.
> Cast to 32 bits is also safe, due to resultant endianness.

Thanks for submitting your patch.

But as Larry pointed we need to change the 'frame_type' type to '__le16'
in 'wilc_reg_frame' struct.
The correct fix for this issue is to change the datatype from ‘__le32’
to ‘__le16’, as the firmware expects it to be a 16bit value.

As wilc_wlan_cfg_set_wid(), is a generic function to pack different
types of WID's e.g char u8 (0x0xxx), short (u16) (0x1xxx), int (u32)
(0x2xxx), byte-string (0x3xxx) and binary data(0x4xxx). And based on the
WID type the specific pack format is used.
To frame register, WID_REGISTER_FRAME(0x3085) WID value is used and it's
of byte-string type. So the packed struct value is transmitted as an
array of u8 data. IMO there is no endianness issue provided firmware
extracts members information in the correct structure order.

Please resubmit the patch by changing 'frame_type' type to '__le16' in
'wilc_reg_frame' struct.

Regards,
Ajay


Re: [PATCH v2] staging: wilc1000: fix cast to restricted __le32

2019-01-05 Thread Július Milan
Thank you for your review Larry

> Before you send V3

Oh, v3 was already sent a few moments before your message.

> Before you send V3, are you sure this is the correct fix? As "frame_type" is
> input as u16, it seems to me that the frame_type member of struct 
> wilc_reg_frame
> should be __le16, not __le32.

Yes, I am confident about it.
The frame_type member of struct wilc_reg_frame contains in some cases
32 bit value
as you can see in function wilc_wlan_cfg_set_wid.
Cast to 32 bits is also safe, due to resultant endianness.

Julius


Re: [PATCH v2] staging: wilc1000: fix cast to restricted __le32

2019-01-05 Thread Larry Finger

On 1/5/19 3:10 AM, Július Milan wrote:

Fixes the following sparse warnings:

drivers/staging/wilc1000/host_interface.c:2360:30: warning:
  incorrect type in assignment (different base types)
 expected restricted __le32 [addressable] [assigned] [usertype] frame_type
 got restricted __le16 [usertype] 

Fixes: 147ccfd451024 ("staging: wilc1000: handle mgmt_frame_register ops from 
cfg82011 context")
Signed-off-by: Július Milan 
---
  drivers/staging/wilc1000/host_interface.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/wilc1000/host_interface.c 
b/drivers/staging/wilc1000/host_interface.c
index 5dae6e7155d3..07c3d6293573 100644
--- a/struct wilc_reg_frame
+++ b/drivers/staging/wilc1000/host_interface.c
@@ -2357,7 +2357,7 @@ void wilc_frame_register(struct wilc_vif *vif, u16 
frame_type, bool reg)
default:
break;
}
-   reg_frame.frame_type = cpu_to_le16(frame_type);
+   reg_frame.frame_type = cpu_to_le32(frame_type);
result = wilc_send_config_pkt(vif, WILC_SET_CFG, , 1,
  wilc_get_vif_idx(vif));
if (result)


Before you send V3, are you sure this is the correct fix? As "frame_type" is 
input as u16, it seems to me that the frame_type member of struct wilc_reg_frame 
should be __le16, not __le32.


Larry


Re: [PATCH v2] staging: wilc1000: fix cast to restricted __le32

2019-01-05 Thread Greg KH
On Sat, Jan 05, 2019 at 10:10:25AM +0100, Július Milan wrote:
> Fixes the following sparse warnings:
> 
> drivers/staging/wilc1000/host_interface.c:2360:30: warning:
>  incorrect type in assignment (different base types)
> expected restricted __le32 [addressable] [assigned] [usertype] frame_type
> got restricted __le16 [usertype] 
> 
> Fixes: 147ccfd451024 ("staging: wilc1000: handle mgmt_frame_register ops from 
> cfg82011 context")
> Signed-off-by: Július Milan 
> ---
>  drivers/staging/wilc1000/host_interface.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

What changed from v1?  Always list that below the --- line, as the
documentation says to do.

Please fix up in your v3 submission :)

greg k-h