Index: mfi.c =================================================================== RCS file: /cvs/src/sys/dev/ic/mfi.c,v retrieving revision 1.159 diff -u -p -r1.159 mfi.c --- mfi.c 9 Jan 2015 11:17:29 -0000 1.159 +++ mfi.c 7 Mar 2015 06:09:31 -0000 @@ -1259,10 +1259,13 @@ complete: u_int mfi_default_sgd_load(struct mfi_softc *sc, struct mfi_ccb *ccb) { + struct mfi_frame_header *hdr = &ccb->ccb_frame->mfr_header; union mfi_sgl *sgl = ccb->ccb_sgl; bus_dma_segment_t *sgd = ccb->ccb_dmamap->dm_segs; int i; + hdr->mfh_flags |= sc->sc_sgl_flags; + for (i = 0; i < ccb->ccb_dmamap->dm_nsegs; i++) { if (sc->sc_64bit_dma) { sgl->sg64[i].addr = htole64(sgd[i].ds_addr); @@ -1318,7 +1321,6 @@ mfi_create_sgl(struct mfi_softc *sc, str ccb->ccb_dmamap->dm_mapsize, BUS_DMASYNC_PREWRITE); } - hdr->mfh_flags |= sc->sc_sgl_flags; hdr->mfh_sg_count = ccb->ccb_dmamap->dm_nsegs; ccb->ccb_extra_frames = (ccb->ccb_frame_size - 1) / MFI_FRAME_SIZE; @@ -2549,7 +2551,7 @@ mfi_skinny_sgd_load(struct mfi_softc *sc sgl->sg_skinny[i].len = htole32(sgd[i].ds_len); sgl->sg_skinny[i].flag = 0; } - hdr->mfh_flags |= MFI_FRAME_IEEE; + hdr->mfh_flags |= MFI_FRAME_IEEE | MFI_FRAME_SGL64; return (ccb->ccb_dmamap->dm_nsegs * sizeof(sgl->sg_skinny)); default: