2010-12-16 14:45:07

by John W. Linville

[permalink] [raw]
Subject: [PATCH] rtlwifi: convert to __packed notation

Use "__packed" instead of "__attribute__ ((packed))"...

Signed-off-by: John W. Linville <[email protected]>
---
drivers/net/wireless/rtlwifi/pci.h | 6 +++---
.../net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h | 6 +++---
drivers/net/wireless/rtlwifi/wifi.h | 8 ++++----
3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/rtlwifi/pci.h b/drivers/net/wireless/rtlwifi/pci.h
index cdde858..d36a669 100644
--- a/drivers/net/wireless/rtlwifi/pci.h
+++ b/drivers/net/wireless/rtlwifi/pci.h
@@ -131,15 +131,15 @@ enum pci_bridge_vendor {

struct rtl_rx_desc {
u32 dword[8];
-} __attribute__ ((packed));
+} __packed;

struct rtl_tx_desc {
u32 dword[16];
-} __attribute__ ((packed));
+} __packed;

struct rtl_tx_cmd_desc {
u32 dword[16];
-} __attribute__ ((packed));
+} __packed;

struct rtl8192_tx_ring {
struct rtl_tx_desc *desc;
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h b/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h
index 91e13c3..53d0e0a 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h
@@ -535,7 +535,7 @@ struct rx_fwinfo_92c {
u8 sgi_en:1;
u8 rxsc:2;
u8 reserve:4;
-} __attribute__ ((packed));
+} __packed;

struct tx_desc_92c {
u32 pktsize:16;
@@ -637,7 +637,7 @@ struct tx_desc_92c {
u32 nextdescaddress64;

u32 reserve_pass_pcie_mm_limit[4];
-} __attribute__ ((packed));
+} __packed;

struct rx_desc_92c {
u32 length:14;
@@ -695,7 +695,7 @@ struct rx_desc_92c {
u32 bufferaddress;
u32 bufferaddress64;

-} __attribute__ ((packed));
+} __packed;

void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw,
struct ieee80211_hdr *hdr,
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
index 0dd6824..3844dc9 100644
--- a/drivers/net/wireless/rtlwifi/wifi.h
+++ b/drivers/net/wireless/rtlwifi/wifi.h
@@ -551,13 +551,13 @@ struct rtl_hdr_3addr {
u8 addr3[ETH_ALEN];
__le16 seq_ctl;
u8 payload[0];
-} __attribute__ ((packed));
+} __packed;

struct rtl_info_element {
u8 id;
u8 len;
u8 data[0];
-} __attribute__ ((packed));
+} __packed;

struct rtl_probe_rsp {
struct rtl_hdr_3addr header;
@@ -567,7 +567,7 @@ struct rtl_probe_rsp {
/*SSID, supported rates, FH params, DS params,
CF params, IBSS params, TIM (if beacon), RSN */
struct rtl_info_element info_element[0];
-} __attribute__ ((packed));
+} __packed;

/*LED related.*/
/*ledpin Identify how to implement this SW led.*/
@@ -589,7 +589,7 @@ struct rtl_qos_parameters {
u8 aifs;
u8 flag;
__le16 tx_op;
-} __attribute__ ((packed));
+} __packed;

struct rt_smooth_data {
u32 elements[100]; /*array to store values */
--
1.7.3.3



2010-12-16 15:30:06

by John W. Linville

[permalink] [raw]
Subject: Re: [PATCH] rtlwifi: convert to __packed notation

On Thu, Dec 16, 2010 at 09:05:12AM -0600, Larry Finger wrote:
> On 12/16/2010 08:34 AM, John W. Linville wrote:
> > Use "__packed" instead of "__attribute__ ((packed))"...
> >
> > Signed-off-by: John W. Linville <[email protected]>

> ACK.
>
> As a point of interest, is this the "new" recommended way? The reason I ask is
> that the Linux headers are mostly in the attribute form.

AIUI, "__packed" is the one true way. I think this facilitates
compling the kernel with compilers other than GCC.

At any rate, Dave Miller threatened to injure me if I kept sending him stuff using
"__attribute__ ((packed))"... :-)

John
--
John W. Linville Someday the world will need a hero, and you
[email protected] might be all we have. Be ready.

2010-12-16 16:03:29

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] rtlwifi: convert to __packed notation

On 12/16/2010 09:21 AM, John W. Linville wrote:
> On Thu, Dec 16, 2010 at 09:05:12AM -0600, Larry Finger wrote:
>> On 12/16/2010 08:34 AM, John W. Linville wrote:
>>> Use "__packed" instead of "__attribute__ ((packed))"...
>>>
>>> Signed-off-by: John W. Linville<[email protected]>
>
>> ACK.
>>
>> As a point of interest, is this the "new" recommended way? The reason I ask is
>> that the Linux headers are mostly in the attribute form.
>
> AIUI, "__packed" is the one true way. I think this facilitates
> compling the kernel with compilers other than GCC.
>
> At any rate, Dave Miller threatened to injure me if I kept sending him stuff using
> "__attribute__ ((packed))"... :-)

We certainly would not want that. Maintainers are too hard to find.

One point I missed earlier. As you are affecting both rtlwifi and rtl8192ce,
both should be in the patch title.

Larry

2010-12-16 17:26:00

by Joe Perches

[permalink] [raw]
Subject: [PATCH] checkpatch.pl: Add "prefer __packed" check

There's a __packed #define for this __attribute__((packed)).
Might as well get checkpatch to tell people about it.

Signed-off-by: Joe Perches <[email protected]>

---

On Thu, 2010-12-16 at 10:21 -0500, John W. Linville wrote:
> On Thu, Dec 16, 2010 at 09:05:12AM -0600, Larry Finger wrote:
> > On 12/16/2010 08:34 AM, John W. Linville wrote:
> > > Use "__packed" instead of "__attribute__ ((packed))"...
> > As a point of interest, is this the "new" recommended way? The reason I ask is
> > that the Linux headers are mostly in the attribute form.
> AIUI, "__packed" is the one true way. I think this facilitates
> compiling the kernel with compilers other than GCC.
>
> At any rate, Dave Miller threatened to injure me if I kept sending him stuff using
> "__attribute__ ((packed))"... :-)

scripts/checkpatch.pl | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index e3c7fc0..6fc24af 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2743,6 +2743,11 @@ sub process {
WARN("plain inline is preferred over $1\n" . $herecurr);
}

+# Check for __attribute__ packed, prefer __packed
+ if ($line =~ /\b__attribute__\s*\(\s*\(.*\bpacked\b/) {
+ WARN("__packed is preferred over __attribute__((packed))\n" . $herecurr);
+ }
+
# check for sizeof(&)
if ($line =~ /\bsizeof\s*\(\s*\&/) {
WARN("sizeof(& should be avoided\n" . $herecurr);




2010-12-16 15:05:17

by Larry Finger

[permalink] [raw]
Subject: Re: [PATCH] rtlwifi: convert to __packed notation

On 12/16/2010 08:34 AM, John W. Linville wrote:
> Use "__packed" instead of "__attribute__ ((packed))"...
>
> Signed-off-by: John W. Linville <[email protected]>
> ---
> drivers/net/wireless/rtlwifi/pci.h | 6 +++---
> .../net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h | 6 +++---
> drivers/net/wireless/rtlwifi/wifi.h | 8 ++++----
> 3 files changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/net/wireless/rtlwifi/pci.h b/drivers/net/wireless/rtlwifi/pci.h
> index cdde858..d36a669 100644
> --- a/drivers/net/wireless/rtlwifi/pci.h
> +++ b/drivers/net/wireless/rtlwifi/pci.h
> @@ -131,15 +131,15 @@ enum pci_bridge_vendor {
>
> struct rtl_rx_desc {
> u32 dword[8];
> -} __attribute__ ((packed));
> +} __packed;
>
> struct rtl_tx_desc {
> u32 dword[16];
> -} __attribute__ ((packed));
> +} __packed;
>
> struct rtl_tx_cmd_desc {
> u32 dword[16];
> -} __attribute__ ((packed));
> +} __packed;
>
> struct rtl8192_tx_ring {
> struct rtl_tx_desc *desc;
> diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h b/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h
> index 91e13c3..53d0e0a 100644
> --- a/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h
> +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192c-trx.h
> @@ -535,7 +535,7 @@ struct rx_fwinfo_92c {
> u8 sgi_en:1;
> u8 rxsc:2;
> u8 reserve:4;
> -} __attribute__ ((packed));
> +} __packed;
>
> struct tx_desc_92c {
> u32 pktsize:16;
> @@ -637,7 +637,7 @@ struct tx_desc_92c {
> u32 nextdescaddress64;
>
> u32 reserve_pass_pcie_mm_limit[4];
> -} __attribute__ ((packed));
> +} __packed;
>
> struct rx_desc_92c {
> u32 length:14;
> @@ -695,7 +695,7 @@ struct rx_desc_92c {
> u32 bufferaddress;
> u32 bufferaddress64;
>
> -} __attribute__ ((packed));
> +} __packed;
>
> void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw,
> struct ieee80211_hdr *hdr,
> diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
> index 0dd6824..3844dc9 100644
> --- a/drivers/net/wireless/rtlwifi/wifi.h
> +++ b/drivers/net/wireless/rtlwifi/wifi.h
> @@ -551,13 +551,13 @@ struct rtl_hdr_3addr {
> u8 addr3[ETH_ALEN];
> __le16 seq_ctl;
> u8 payload[0];
> -} __attribute__ ((packed));
> +} __packed;
>
> struct rtl_info_element {
> u8 id;
> u8 len;
> u8 data[0];
> -} __attribute__ ((packed));
> +} __packed;
>
> struct rtl_probe_rsp {
> struct rtl_hdr_3addr header;
> @@ -567,7 +567,7 @@ struct rtl_probe_rsp {
> /*SSID, supported rates, FH params, DS params,
> CF params, IBSS params, TIM (if beacon), RSN */
> struct rtl_info_element info_element[0];
> -} __attribute__ ((packed));
> +} __packed;
>
> /*LED related.*/
> /*ledpin Identify how to implement this SW led.*/
> @@ -589,7 +589,7 @@ struct rtl_qos_parameters {
> u8 aifs;
> u8 flag;
> __le16 tx_op;
> -} __attribute__ ((packed));
> +} __packed;
>
> struct rt_smooth_data {
> u32 elements[100]; /*array to store values */

ACK.

As a point of interest, is this the "new" recommended way? The reason I ask is
that the Linux headers are mostly in the attribute form.

Larry