static int
 aoehdr_atainit(struct aoedev *d, struct aoe_hdr *h)
 {
-       u16 type = __constant_cpu_to_be16(ETH_P_AOE);
-       u16 aoemajor = __cpu_to_be16(d->aoemajor);
        u32 host_tag = newtag(d);
-       u32 tag = __cpu_to_be32(host_tag);
 
        memcpy(h->src, d->ifp->dev_addr, sizeof h->src);
        memcpy(h->dst, d->addr, sizeof h->dst);
-       memcpy(h->type, &type, sizeof type);
+       h->type = __constant_cpu_to_be16(ETH_P_AOE);
        h->verfl = AOE_HVER;
-       memcpy(h->major, &aoemajor, sizeof aoemajor);
+       h->major = cpu_to_be16(d->aoemajor);
        h->minor = d->aoeminor;
        h->cmd = AOECMD_ATA;
-       memcpy(h->tag, &tag, sizeof tag);
+       h->tag = cpu_to_be32(host_tag);
 
        return host_tag;
 }
        struct aoe_hdr *h;
        char buf[128];
        u32 n;
-       u32 net_tag;
 
        n = newtag(d);
 
 
        h = (struct aoe_hdr *) f->data;
        f->tag = n;
-       net_tag = __cpu_to_be32(n);
-       memcpy(h->tag, &net_tag, sizeof net_tag);
+       h->tag = cpu_to_be32(n);
 
        skb = skb_prepare(d, f);
        if (skb) {
        u16 n;
 
        /* word 83: command set supported */
-       n = __le16_to_cpu(*((u16 *) &id[83<<1]));
+       n = le16_to_cpup((__le16 *) &id[83<<1]);
 
        /* word 86: command set/feature enabled */
-       n |= __le16_to_cpu(*((u16 *) &id[86<<1]));
+       n |= le16_to_cpup((__le16 *) &id[86<<1]);
 
        if (n & (1<<10)) {      /* bit 10: LBA 48 */
                d->flags |= DEVFL_EXT;
 
                /* word 100: number lba48 sectors */
-               ssize = __le64_to_cpu(*((u64 *) &id[100<<1]));
+               ssize = le64_to_cpup((__le64 *) &id[100<<1]);
 
                /* set as in ide-disk.c:init_idedisk_capacity */
                d->geo.cylinders = ssize;
                d->flags &= ~DEVFL_EXT;
 
                /* number lba28 sectors */
-               ssize = __le32_to_cpu(*((u32 *) &id[60<<1]));
+               ssize = le32_to_cpup((__le32 *) &id[60<<1]);
 
                /* NOTE: obsolete in ATA 6 */
-               d->geo.cylinders = __le16_to_cpu(*((u16 *) &id[54<<1]));
-               d->geo.heads = __le16_to_cpu(*((u16 *) &id[55<<1]));
-               d->geo.sectors = __le16_to_cpu(*((u16 *) &id[56<<1]));
+               d->geo.cylinders = le16_to_cpup((__le16 *) &id[54<<1]);
+               d->geo.heads = le16_to_cpup((__le16 *) &id[55<<1]);
+               d->geo.sectors = le16_to_cpup((__le16 *) &id[56<<1]);
        }
        d->ssize = ssize;
        d->geo.start = 0;
        u16 aoemajor;
 
        hin = (struct aoe_hdr *) skb->mac.raw;
-       aoemajor = __be16_to_cpu(*((u16 *) hin->major));
+       aoemajor = be16_to_cpu(hin->major);
        d = aoedev_by_aoeaddr(aoemajor, hin->minor);
        if (d == NULL) {
                snprintf(ebuf, sizeof ebuf, "aoecmd_ata_rsp: ata response "
 
        spin_lock_irqsave(&d->lock, flags);
 
-       f = getframe(d, __be32_to_cpu(*((u32 *) hin->tag)));
+       f = getframe(d, be32_to_cpu(hin->tag));
        if (f == NULL) {
                spin_unlock_irqrestore(&d->lock, flags);
                snprintf(ebuf, sizeof ebuf,
                        "%15s e%d.%d    tag=%08x@%08lx\n",
                        "unexpected rsp",
-                       __be16_to_cpu(*((u16 *) hin->major)),
+                       be16_to_cpu(hin->major),
                        hin->minor,
-                       __be32_to_cpu(*((u32 *) hin->tag)),
+                       be32_to_cpu(hin->tag),
                        jiffies);
                aoechr_error(ebuf);
                return;
                        printk(KERN_INFO "aoe: aoecmd_ata_rsp: unrecognized "
                               "outbound ata command %2.2Xh for %d.%d\n", 
                               ahout->cmdstat,
-                              __be16_to_cpu(*((u16 *) hin->major)),
+                              be16_to_cpu(hin->major),
                               hin->minor);
                }
        }
        struct aoe_cfghdr *ch;
        struct sk_buff *skb, *sl;
        struct net_device *ifp;
-       u16 aoe_type = __constant_cpu_to_be16(ETH_P_AOE);
-       u16 net_aoemajor = __cpu_to_be16(aoemajor);
 
        sl = NULL;
 
 
                memset(h->dst, 0xff, sizeof h->dst);
                memcpy(h->src, ifp->dev_addr, sizeof h->src);
-               memcpy(h->type, &aoe_type, sizeof aoe_type);
+               h->type = __constant_cpu_to_be16(ETH_P_AOE);
                h->verfl = AOE_HVER;
-               memcpy(h->major, &net_aoemajor, sizeof net_aoemajor);
+               h->major = cpu_to_be16(aoemajor);
                h->minor = aoeminor;
                h->cmd = AOECMD_CFG;
 
        struct aoedev *d;
        struct aoe_hdr *h;
        struct aoe_cfghdr *ch;
-       ulong flags, bufcnt, sysminor, aoemajor;
+       ulong flags, sysminor, aoemajor;
+       u16 bufcnt;
        struct sk_buff *sl;
        enum { MAXFRAMES = 8 };
 
         * Enough people have their dip switches set backwards to
         * warrant a loud message for this special case.
         */
-       aoemajor = __be16_to_cpu(*((u16 *) h->major));
+       aoemajor = be16_to_cpu(h->major);
        if (aoemajor == 0xfff) {
                printk(KERN_CRIT "aoe: aoecmd_cfg_rsp: Warning: shelf "
                        "address is all ones.  Check shelf dip switches\n");
                return;
        }
 
-       bufcnt = __be16_to_cpu(*((u16 *) ch->bufcnt));
+       bufcnt = be16_to_cpu(ch->bufcnt);
        if (bufcnt > MAXFRAMES) /* keep it reasonable */
                bufcnt = MAXFRAMES;
 
                return;
        }
 
-       d->fw_ver = __be16_to_cpu(*((u16 *) ch->fwver));
+       d->fw_ver = be16_to_cpu(ch->fwver);
 
        /* we get here only if the device is new */
        sl = aoecmd_ata_id(d);