Index: qla.c =================================================================== RCS file: /cvs/src/sys/dev/ic/qla.c,v retrieving revision 1.53 diff -u -p -r1.53 qla.c --- qla.c 7 Sep 2015 01:37:59 -0000 1.53 +++ qla.c 10 May 2016 06:21:48 -0000 @@ -2187,8 +2187,11 @@ qla_put_marker(struct qla_softc *sc, voi void qla_put_data_seg(struct qla_iocb_seg *seg, bus_dmamap_t dmap, int num) { - seg->seg_addr = htole64(dmap->dm_segs[num].ds_addr); - seg->seg_len = htole32(dmap->dm_segs[num].ds_len); + uint64_t addr = dmap->dm_segs[num].ds_addr; + + htolem32(&seg->seg_addr_lo, addr); + htolem32(&seg->seg_addr_hi, addr >> 32); + htolem32(&seg->seg_len, dmap->dm_segs[num].ds_len); } void Index: qlareg.h =================================================================== RCS file: /cvs/src/sys/dev/ic/qlareg.h,v retrieving revision 1.7 diff -u -p -r1.7 qlareg.h --- qlareg.h 14 Apr 2014 04:14:11 -0000 1.7 +++ qlareg.h 10 May 2016 06:21:48 -0000 @@ -529,9 +529,10 @@ struct qla_sns_gid_ft { #define QLA_IOCB_MARKER_SYNC_ALL 2 struct qla_iocb_seg { - u_int64_t seg_addr; + u_int32_t seg_addr_lo; + u_int32_t seg_addr_hi; u_int32_t seg_len; -} __packed; +} __packed __aligned(4); #if 0 struct qla_iocb_cont1 {