staging: vt6655: 64 bit Correct alignment of tx/rx structures.
authorMalcolm Priestley <tvboxspy@gmail.com>
Thu, 6 Mar 2014 22:44:21 +0000 (22:44 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 9 Mar 2014 06:31:31 +0000 (22:31 -0800)
Aligment of pointers on 64 bit is incorrect.

Align to 64 bit using aligned 8 bytes and remove structure packing.

This allows the device to run on both 32 and 64 bit

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vt6655/desc.h

index 32d808e..f8e4148 100644 (file)
@@ -276,9 +276,8 @@ typedef struct tagSRxDesc {
        volatile SRDES1 m_rd1RD1;
        volatile u32    buff_addr;
        volatile u32    next_desc;
-       struct tagSRxDesc   *next;//4 bytes
-       volatile PDEVICE_RD_INFO    pRDInfo;//4 bytes
-       volatile u32    Reserved[2];//8 bytes
+       struct tagSRxDesc *next __aligned(8);
+       volatile PDEVICE_RD_INFO pRDInfo __aligned(8);
 } __attribute__ ((__packed__))
 SRxDesc, *PSRxDesc;
 typedef const SRxDesc *PCSRxDesc;
@@ -361,9 +360,8 @@ typedef struct tagSTxDesc {
        volatile    STDES1  m_td1TD1;
        volatile    u32    buff_addr;
        volatile    u32    next_desc;
-       struct tagSTxDesc *next; //4 bytes
-       volatile    PDEVICE_TD_INFO pTDInfo;//4 bytes
-       volatile    u32    Reserved[2];//8 bytes
+       struct tagSTxDesc *next __aligned(8);
+       volatile    PDEVICE_TD_INFO pTDInfo __aligned(8);
 } __attribute__ ((__packed__))
 STxDesc, *PSTxDesc;
 typedef const STxDesc *PCSTxDesc;
@@ -375,9 +373,8 @@ typedef struct tagSTxSyncDesc {
        volatile    u32 next_desc; // pointer to next logical descriptor
        volatile    unsigned short m_wFIFOCtl;
        volatile    unsigned short m_wTimeStamp;
-       struct tagSTxSyncDesc *next; //4 bytes
-       volatile    PDEVICE_TD_INFO pTDInfo;//4 bytes
-       volatile    u32 m_dwReserved2;
+       struct tagSTxSyncDesc *next __aligned(8);
+       volatile    PDEVICE_TD_INFO pTDInfo __aligned(8);
 } __attribute__ ((__packed__))
 STxSyncDesc, *PSTxSyncDesc;
 typedef const STxSyncDesc *PCSTxSyncDesc;