aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mrsas/mrsas.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mrsas/mrsas.c')
-rw-r--r--sys/dev/mrsas/mrsas.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/dev/mrsas/mrsas.c b/sys/dev/mrsas/mrsas.c
index df4fb98c53eb..ff7dc765a3b4 100644
--- a/sys/dev/mrsas/mrsas.c
+++ b/sys/dev/mrsas/mrsas.c
@@ -1923,15 +1923,16 @@ mrsas_alloc_mem(struct mrsas_softc *sc)
/*
* Allocate parent DMA tag
*/
- if (bus_dma_tag_create(NULL, /* parent */
+ if (bus_dma_tag_create(
+ bus_get_dma_tag(sc->mrsas_dev), /* parent */
1, /* alignment */
0, /* boundary */
BUS_SPACE_MAXADDR, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
- MAXPHYS, /* maxsize */
- sc->max_num_sge, /* nsegments */
- MAXPHYS, /* maxsegsize */
+ BUS_SPACE_MAXSIZE, /* maxsize */
+ BUS_SPACE_UNRESTRICTED, /* nsegments */
+ BUS_SPACE_MAXSIZE, /* maxsegsize */
0, /* flags */
NULL, NULL, /* lockfunc, lockarg */
&sc->mrsas_parent_tag /* tag */
@@ -2543,7 +2544,7 @@ mrsas_init_fw(struct mrsas_softc *sc)
sc->ctrl_info->max_strips_per_io;
max_sectors_2 = sc->ctrl_info->max_request_size;
tmp_sectors = min(max_sectors_1, max_sectors_2);
- sc->max_sectors_per_req = sc->max_num_sge * MRSAS_PAGE_SIZE / 512;
+ sc->max_sectors_per_req = (sc->max_num_sge - 1) * MRSAS_PAGE_SIZE / 512;
if (tmp_sectors && (sc->max_sectors_per_req > tmp_sectors))
sc->max_sectors_per_req = tmp_sectors;