alistair23-linux/drivers/staging/vt6655
Aya Mahfouz 85061eb97a staging: vt6655: wmgr.c and wmgr.h: replace memcpy() by ether_addr_copy() using coccinelle and pack variable
This patch focuses on fixing the following warning generated
by checkpatch.pl for the file wmgr.c :

Prefer ether_addr_copy() over memcpy() if the Ethernet addresses
are __aligned(2)

The changes were applied using the following coccinelle rule:

@@ expression e1, e2; @@

- memcpy(e1, e2, ETH_ALEN);
+ ether_addr_copy(e1, e2);

According to ether_addr_copy() description and functionality,
all Ethernet addresses should align to the u16 datatype.

To maintain that the array abyCurrBSSID in tagSMgmtObject is aligned,
it was placed after the int uCurrChannel in the struct definition.
This was done in wmgr.h

Here is the output of pahole for the relevant datastructures:

struct sockaddr {
        sa_family_t                sa_family;            /*     0     2 */
        char                       sa_data[14];          /*     2    14 */

        /* size: 16, cachelines: 1, members: 2 */
        /* last cacheline: 16 bytes */
};
struct tagSMgmtObject {
        void *                     pAdapter;             /*     0     4 */
        unsigned char              abyMACAddr[6];        /*     4     6 */

        /* XXX 2 bytes hole, try to pack */

        WMAC_CONFIG_MODE           eConfigMode;          /*    12     4 */
        CARD_PHY_TYPE              eCurrentPHYMode;      /*    16     4 */
        CARD_PHY_TYPE              eConfigPHYMode;       /*    20     4 */
        WMAC_CURRENT_MODE          eCurrMode;            /*    24     4 */
        WMAC_BSS_STATE             eCurrState;           /*    28     4 */
        PKnownBSS                  pCurrBSS;             /*    32     4 */
        unsigned char              byCSSGK;              /*    36     1 */
        unsigned char              byCSSPK;              /*    37     1 */

        /* XXX 2 bytes hole, try to pack */

        unsigned int               uCurrChannel;         /*    40     4 */
        unsigned char              abyCurrBSSID[6];      /*    44     6 */
        unsigned char              abyCurrSuppRates[19]; /*    50    19 */
        /* --- cacheline 1 boundary (64 bytes) was 5 bytes ago --- */
        unsigned char              abyCurrExtSuppRates[19]; /*    69    19 */
        unsigned char              abyCurrSSID[35];      /*    88    35 */

        /* XXX 1 byte hole, try to pack */

        short unsigned int         wCurrCapInfo;         /*   124     2 */
        short unsigned int         wCurrAID;             /*   126     2 */
        /* --- cacheline 2 boundary (128 bytes) --- */
        short unsigned int         wCurrATIMWindow;      /*   128     2 */
        short unsigned int         wCurrBeaconPeriod;    /*   130     2 */
        bool                       bIsDS;                /*   132     1 */
        unsigned char              byERPContext;         /*   133     1 */

        /* XXX 2 bytes hole, try to pack */

        CMD_STATE                  eCommandState;        /*   136     4 */
        unsigned int               uScanChannel;         /*   140     4 */
        unsigned char              abyDesireSSID[35];    /*   144    35 */
        unsigned char              abyDesireBSSID[6];    /*   179     6 */

        /* XXX 1 byte hole, try to pack */

        short unsigned int         wIBSSBeaconPeriod;    /*   186     2 */
        short unsigned int         wIBSSATIMWindow;      /*   188     2 */

        /* XXX 2 bytes hole, try to pack */

        /* --- cacheline 3 boundary (192 bytes) --- */
        unsigned int               uIBSSChannel;         /*   192     4 */
        unsigned char              abyIBSSSuppRates[19]; /*   196    19 */
        unsigned char              byAPBBType;           /*   215     1 */
        unsigned char              abyWPAIE[64];         /*   216    64 */
        /* --- cacheline 4 boundary (256 bytes) was 24 bytes ago --- */
        short unsigned int         wWPAIELen;            /*   280     2 */

        /* XXX 2 bytes hole, try to pack */

        unsigned int               uAssocCount;          /*   284     4 */
        bool                       bMoreData;            /*   288     1 */

        /* XXX 3 bytes hole, try to pack */

        WMAC_SCAN_STATE            eScanState;           /*   292     4 */
        WMAC_SCAN_TYPE             eScanType;            /*   296     4 */
        unsigned int               uScanStartCh;         /*   300     4 */
        unsigned int               uScanEndCh;           /*   304     4 */
        short unsigned int         wScanSteps;           /*   308     2 */

        /* XXX 2 bytes hole, try to pack */

        unsigned int               uScanBSSType;         /*   312     4 */
        unsigned char              abyScanSSID[35];      /*   316    35 */
        /* --- cacheline 5 boundary (320 bytes) was 31 bytes ago --- */
        unsigned char              abyScanBSSID[6];      /*   351     6 */

        /* XXX 3 bytes hole, try to pack */

        WMAC_AUTHENTICATION_MODE   eAuthenMode;          /*   360     4 */
        WMAC_ENCRYPTION_MODE       eEncryptionMode;      /*   364     4 */
        bool                       bShareKeyAlgorithm;   /*   368     1 */
        unsigned char              abyChallenge[128];    /*   369   128 */
        /* --- cacheline 7 boundary (448 bytes) was 49 bytes ago --- */
        bool                       bPrivacyInvoked;      /*   497     1 */
        bool                       bInTIM;               /*   498     1 */
        bool                       bMulticastTIM;        /*   499     1 */
        unsigned char              byDTIMCount;          /*   500     1 */
        unsigned char              byDTIMPeriod;         /*   501     1 */

        /* XXX 2 bytes hole, try to pack */

        WMAC_POWER_MODE            ePSMode;              /*   504     4 */
        short unsigned int         wListenInterval;      /*   508     2 */
        short unsigned int         wCountToWakeUp;       /*   510     2 */
        /* --- cacheline 8 boundary (512 bytes) --- */
        bool                       bInTIMWake;           /*   512     1 */

        /* XXX 3 bytes hole, try to pack */

        unsigned char *            pbyPSPacketPool;      /*   516     4 */
        unsigned char              byPSPacketPool[36];   /*   520    36 */
        bool                       bRxBeaconInTBTTWake;  /*   556     1 */
        unsigned char              abyPSTxMap[65];       /*   557    65 */

        /* XXX 2 bytes hole, try to pack */

        /* --- cacheline 9 boundary (576 bytes) was 48 bytes ago --- */
        unsigned int               uCmdBusy;             /*   624     4 */
        unsigned int               uCmdHostAPBusy;       /*   628     4 */
        unsigned char *            pbyMgmtPacketPool;    /*   632     4 */
        unsigned char              byMgmtPacketPool[2352]; /*   636  2352 */
        /* --- cacheline 46 boundary (2944 bytes) was 44 bytes ago --- */
        struct timer_list          sTimerSecondCallback; /*  2988    52 */
        /* --- cacheline 47 boundary (3008 bytes) was 32 bytes ago --- */
        SRxMgmtPacket              sRxPacket;            /*  3040    28 */
        KnownBSS                   sBSSList[42];         /*  3068 57288 */
        /* --- cacheline 943 boundary (60352 bytes) was 4 bytes ago --- */
        KnownNodeDB                sNodeDBTable[65];     /* 60356 20800 */
        /* --- cacheline 1268 boundary (81152 bytes) was 4 bytes ago --- */

        /* Bitfield combined with previous fields */

        SPMKIDCache                gsPMKIDCache;         /*     0   356 */
        bool                       bRoaming;             /*     0     1 */
        SAssocInfo                 sAssocInfo;           /*     0  7064 */
        bool                       b11hEnable;           /*     0     1 */
        bool                       bSwitchChannel;       /*     0     1 */
        unsigned char              byNewChannel;         /*     0     1 */
        PWLAN_IE_MEASURE_REP       pCurrMeasureEIDRep;   /*     0     4 */
        unsigned int               uLengthOfRepEIDs;     /*     0     4 */
        unsigned char              abyCurrentMSRReq[2352]; /*     0  2352 */
        unsigned char              abyCurrentMSRRep[2352]; /*     0  2352 */
        unsigned char              abyIECountry[2340];   /*     0  2340 */
        unsigned char              abyIBSSDFSOwner[6];   /*     0     6 */
        unsigned char              byIBSSDFSRecovery;    /*     0     1 */
        struct sk_buff             skb;                  /*     0   192 */

        /* XXX last struct has 4 bytes of padding */

        /* --- cacheline 1497 boundary (95808 bytes) was 32 bytes ago --- */

        /* size: 95840, cachelines: 1498, members: 81 */
        /* sum members: 95813, holes: 13, sum holes: 27 */
        /* padding: 30112 */
        /* paddings: 1, sum paddings: 4 */
        /* last cacheline: 32 bytes */

        /* BRAIN FART ALERT! 95840 != 95813 + 27(holes), diff = 0 */

};
struct pmkid_candidate {
        NDIS_802_11_MAC_ADDRESS    BSSID;                /*     0     6 */

        /* XXX 2 bytes hole, try to pack */

        long unsigned int          Flags;                /*     8     4 */

        /* size: 12, cachelines: 1, members: 2 */
        /* sum members: 10, holes: 1, sum holes: 2 */
        /* last cacheline: 12 bytes */
};

Signed-off-by: Aya Mahfouz <mahfouz.saif.elyazal@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-10-20 10:30:15 +08:00
..
80211hdr.h Staging: vt6655: Break 80 character long line to remove checkpatch error 2014-09-19 17:01:22 -07:00
80211mgr.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
80211mgr.h staging: vt6655: 80211mgr.h add ieee80211.h header and fix conflicts 2014-08-30 13:50:09 -07:00
aes_ccmp.c staging: vt6655: Merge three lines into one 2014-09-28 23:22:21 -04:00
aes_ccmp.h
baseband.c staging: vt6655: Remove unnecessary else after return 2014-10-20 10:29:15 +08:00
baseband.h Staging: vt6655: Fix C99 style commenting. 2014-09-19 17:01:22 -07:00
bssdb.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
bssdb.h staging: vt6655: Replace and remove typedef QWORD/ DQWORD 2014-08-16 12:23:15 -07:00
card.c staging: vt6655: card.c: replace memcpy() by ether_addr_copy() using coccinelle 2014-10-20 10:30:15 +08:00
card.h staging: vt6655: Replace typedef enum _CARD_OP_MODE eOPMode with enum nl80211_iftype op_mode. 2014-08-30 15:19:17 -07:00
channel.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
channel.h Staging: vt6655: removed redundant comments from channel.h 2014-07-27 11:33:08 -07:00
country.h Staging: vt6655: removed redundant comments from country.h 2014-07-27 11:33:08 -07:00
datarate.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
datarate.h staging: vt6655: Fix do not use // c99 comments. 2014-10-20 10:29:15 +08:00
desc.h staging: vt6655: replace typedef struct tagSCTS_FB with struct vnt_cts_fb 2014-08-30 15:19:17 -07:00
device.h staging: vt6655: Remove unnecessary condition around include 2014-09-11 14:59:18 -07:00
device_cfg.h staging: vt6655: dead code remove device_nics variable 2014-08-30 13:49:34 -07:00
device_main.c staging: vt6655: delete SndEvt_ToAPI code 2014-10-20 10:30:13 +08:00
dpc.c staging: vt6655: dpc.c: replace memcpy() by ether_addr_copy() using coccinelle 2014-10-20 10:30:15 +08:00
dpc.h staging: vt6655: bssdb/datarate/dpc/power/rxtx use struct vnt_private 2014-08-16 12:23:16 -07:00
hostap.c staging: vt6655: Fixed else after return or break warning 2014-10-20 10:29:15 +08:00
hostap.h staging: vt6655: fix do not use // c99 comments. 2014-10-20 10:29:15 +08:00
IEEE11h.c
IEEE11h.h Staging: vt6655: removed redundant comments from IEEE11h.h 2014-07-27 11:34:38 -07:00
iocmd.h staging: vt6655: fix direct dereferencing of user pointer 2014-07-30 16:36:27 -07:00
ioctl.c staging: vt6655: Remove unused code inside switch case 2014-10-20 10:30:13 +08:00
ioctl.h staging: vt6655: hostap/ioctl/iwctl use struct vnt_private 2014-08-16 12:23:16 -07:00
iowpa.h staging: vt6655: iowpa.h: Fix sparse warnings 2014-08-16 12:23:05 -07:00
iwctl.c staging: vt6655: Remove unused code inside switch case 2014-10-20 10:30:13 +08:00
iwctl.h staging: vt6655: fix direct dereferencing of user pointer 2014-07-30 16:36:27 -07:00
Kconfig
key.c staging: vt6655: Use ether_addr_copy function 2014-10-20 10:29:16 +08:00
key.h staging: vt6655: Replace and remove typedef QWORD/ DQWORD 2014-08-16 12:23:15 -07:00
mac.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
mac.h staging: vt6655: remove unused macro 2014-07-27 11:21:28 -07:00
Makefile
mib.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
mib.h Staging: vt6655: removed redundant comments from mib.h 2014-07-27 11:38:42 -07:00
michael.c
michael.h Staging: vt6655: removed redundant comments from michael.h 2014-07-27 11:38:42 -07:00
power.c staging: vt6655: Replace typedef enum _CARD_OP_MODE eOPMode with enum nl80211_iftype op_mode. 2014-08-30 15:19:17 -07:00
power.h Staging: vt6655: removed redundant comments from power.h 2014-07-27 11:38:42 -07:00
rc4.c staging: vt6655: Add missing blank lines after declarations 2014-07-27 11:21:27 -07:00
rc4.h
rf.c staging: vt6655: rf/wpactl/wroute use struct vnt_private 2014-08-16 12:23:16 -07:00
rf.h staging: vt6655: rf/wpactl/wroute use struct vnt_private 2014-08-16 12:23:16 -07:00
rxtx.c staging: vt6655: Replace typedef enum _CARD_OP_MODE eOPMode with enum nl80211_iftype op_mode. 2014-08-30 15:19:17 -07:00
rxtx.h staging: vt6655: replace typedef struct tagSCTS_FB with struct vnt_cts_fb 2014-08-30 15:19:17 -07:00
srom.c
srom.h
tcrc.c staging: vt6655: coding style: Fixed commenting style 2014-07-30 16:36:27 -07:00
tcrc.h
test
tether.c
tether.h
tkip.c
tkip.h
tmacro.h
TODO
ttype.h staging: vt6655: Replace and remove typedef QWORD/ DQWORD 2014-08-16 12:23:15 -07:00
upc.h staging: vt6655: upc.h replace read and write memory functions 2014-08-16 12:23:15 -07:00
vntconfiguration.dat
vntwifi.c staging: vt6655: Fixed else after return or break warning 2014-10-20 10:29:15 +08:00
vntwifi.h
wcmd.c staging: vt6655: Replace typedef enum _CARD_OP_MODE eOPMode with enum nl80211_iftype op_mode. 2014-08-30 15:19:17 -07:00
wcmd.h staging: vt6655: Remove TxInSleep macro 2014-08-16 12:23:15 -07:00
wctl.c staging: vt6655: channel/wcmd/wctl/wmgr use struct vnt_private * 2014-08-16 12:23:16 -07:00
wctl.h staging: vt6655: channel/wcmd/wctl/wmgr use struct vnt_private * 2014-08-16 12:23:16 -07:00
wmgr.c staging: vt6655: wmgr.c and wmgr.h: replace memcpy() by ether_addr_copy() using coccinelle and pack variable 2014-10-20 10:30:15 +08:00
wmgr.h staging: vt6655: wmgr.c and wmgr.h: replace memcpy() by ether_addr_copy() using coccinelle and pack variable 2014-10-20 10:30:15 +08:00
wpa.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
wpa.h staging: vt6655: Fixed C99 // comment errors in wpa.h 2014-10-20 10:29:28 +08:00
wpa2.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
wpa2.h
wpactl.c staging: vt6655: remove useless #if 1 2014-10-20 10:30:13 +08:00
wpactl.h staging: vt6655: rf/wpactl/wroute use struct vnt_private 2014-08-16 12:23:16 -07:00
wroute.c staging: vt6655: Convert DBG_PRT to pr_<level> 2014-08-17 09:43:50 -07:00
wroute.h staging: vt6655: rf/wpactl/wroute use struct vnt_private 2014-08-16 12:23:16 -07:00