2015-01-16 16:06:22

by Vaishali Thakkar

[permalink] [raw]
Subject: [PATCH v2] brcmfmac: Use put_unaligned_le32

This patch introduces the use of function put_unaligned_le32.

This is done using Coccinelle and semantic patch used is as follows:

@a@
typedef u32, __le32, uint32_t;
{u32,__le32,uint32_t} e32;
identifier tmp;
expression ptr;
expression y,e;
type T;
type T;
@@

- tmp = cpu_to_le32(y);

<+... when != tmp
(
- memcpy(ptr, (T)&tmp, \(4\|sizeof(u32)\|sizeof(__le32)\|sizeof(uint32_t)\|sizeof(e32)\));
+ put_unaligned_le32(y,ptr);
|
- memcpy(ptr, (T)&tmp, ...);
+ put_unaligned_le32(y,ptr);
)
...+>
? tmp = e

@@ type T; identifier a.tmp; @@

- T tmp;
...when != tmp

Signed-off-by: Vaishali Thakkar <[email protected]>
--
Changes in v2:
-refreshed it against changes
-changed commit message

drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
index 3aecc5f..ab3cc9f 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
@@ -3695,17 +3695,12 @@ static u32
brcmf_vndr_ie(u8 *iebuf, s32 pktflag, u8 *ie_ptr, u32 ie_len, s8 *add_del_cmd)
{

- __le32 iecount_le;
- __le32 pktflag_le;
-
strncpy(iebuf, add_del_cmd, VNDR_IE_CMD_LEN - 1);
iebuf[VNDR_IE_CMD_LEN - 1] = '\0';

- iecount_le = cpu_to_le32(1);
- memcpy(&iebuf[VNDR_IE_COUNT_OFFSET], &iecount_le, sizeof(iecount_le));
+ put_unaligned_le32(1, &iebuf[VNDR_IE_COUNT_OFFSET]);

- pktflag_le = cpu_to_le32(pktflag);
- memcpy(&iebuf[VNDR_IE_PKTFLAG_OFFSET], &pktflag_le, sizeof(pktflag_le));
+ put_unaligned_le32(pktflag, &iebuf[VNDR_IE_PKTFLAG_OFFSET]);

memcpy(&iebuf[VNDR_IE_VSIE_OFFSET], ie_ptr, ie_len);

--
1.9.1



2015-01-23 19:15:25

by Kalle Valo

[permalink] [raw]
Subject: Re: [v2] brcmfmac: Use put_unaligned_le32


> This patch introduces the use of function put_unaligned_le32.
>
> This is done using Coccinelle and semantic patch used is as follows:
>
> @a@
> typedef u32, __le32, uint32_t;
> {u32,__le32,uint32_t} e32;
> identifier tmp;
> expression ptr;
> expression y,e;
> type T;
> type T;
> @@
>
> - tmp = cpu_to_le32(y);
>
> <+... when != tmp
> (
> - memcpy(ptr, (T)&tmp, \(4\|sizeof(u32)\|sizeof(__le32)\|sizeof(uint32_t)\|sizeof(e32)\));
> + put_unaligned_le32(y,ptr);
> |
> - memcpy(ptr, (T)&tmp, ...);
> + put_unaligned_le32(y,ptr);
> )
> ...+>
> ? tmp = e
>
> @@ type T; identifier a.tmp; @@
>
> - T tmp;
> ...when != tmp
>
> Signed-off-by: Vaishali Thakkar <[email protected]>

Thanks, applied to wireless-drivers-next.git.

Kalle Valo