Lines Matching refs:mw
346 struct ntb_transport_mw *mw; in ntb_transport_attach() local
398 mw = &nt->mw_vec[i]; in ntb_transport_attach()
400 rc = ntb_mw_get_range(dev, i, &mw->phys_addr, &mw->vbase, in ntb_transport_attach()
401 &mw->phys_size, &mw->xlat_align, &mw->xlat_align_size, in ntb_transport_attach()
402 &mw->addr_limit); in ntb_transport_attach()
406 mw->tx_size = mw->phys_size; in ntb_transport_attach()
407 if (max_mw_size != 0 && mw->tx_size > max_mw_size) { in ntb_transport_attach()
409 "%ju to %ju\n", i, (uintmax_t)mw->tx_size, in ntb_transport_attach()
411 mw->tx_size = max_mw_size; in ntb_transport_attach()
413 if (nt->compact && mw->tx_size > UINT32_MAX) { in ntb_transport_attach()
415 "(%ju)\n", i, (uintmax_t)mw->tx_size); in ntb_transport_attach()
420 mw->rx_size = 0; in ntb_transport_attach()
421 mw->buff_size = 0; in ntb_transport_attach()
422 mw->virt_addr = NULL; in ntb_transport_attach()
423 mw->dma_addr = 0; in ntb_transport_attach()
435 ntb_set_mw(nt, i, mw->tx_size); in ntb_transport_attach()
505 mw = &nt->mw_vec[i]; in ntb_transport_attach()
506 rc = ntb_mw_set_trans(nt->dev, i, mw->dma_addr, mw->buff_size); in ntb_transport_attach()
596 struct ntb_transport_mw *mw; in ntb_transport_init_queue() local
605 mw = &nt->mw_vec[mw_num]; in ntb_transport_init_queue()
620 mw_base = mw->phys_addr; in ntb_transport_init_queue()
622 tx_size = mw->tx_size / num_qps_mw; in ntb_transport_init_queue()
625 qp->tx_mw = mw->vbase + qp_offset; in ntb_transport_init_queue()
1133 struct ntb_transport_mw *mw; in ntb_transport_link_work() local
1198 mw = &nt->mw_vec[i]; in ntb_transport_link_work()
1199 mw->rx_size = val64; in ntb_transport_link_work()
1200 val64 = roundup(val64, mw->xlat_align_size); in ntb_transport_link_work()
1201 if (mw->buff_size != val64) { in ntb_transport_link_work()
1210 rc = ntb_mw_set_trans(nt->dev, i, mw->dma_addr, in ntb_transport_link_work()
1211 mw->buff_size); in ntb_transport_link_work()
1260 struct ntb_transport_mw *mw = &nt->mw_vec[num_mw]; in ntb_set_mw() local
1267 buff_size = roundup(size, mw->xlat_align_size); in ntb_set_mw()
1270 if (mw->buff_size == buff_size) in ntb_set_mw()
1273 if (mw->buff_size != 0) in ntb_set_mw()
1277 mw->buff_size = buff_size; in ntb_set_mw()
1279 if (bus_dma_tag_create(bus_get_dma_tag(nt->dev), mw->xlat_align, 0, in ntb_set_mw()
1280 mw->addr_limit, BUS_SPACE_MAXADDR, in ntb_set_mw()
1281 NULL, NULL, mw->buff_size, 1, mw->buff_size, in ntb_set_mw()
1282 0, NULL, NULL, &mw->dma_tag)) { in ntb_set_mw()
1284 mw->buff_size); in ntb_set_mw()
1285 mw->buff_size = 0; in ntb_set_mw()
1288 if (bus_dmamem_alloc(mw->dma_tag, (void **)&mw->virt_addr, in ntb_set_mw()
1289 BUS_DMA_WAITOK | BUS_DMA_ZERO, &mw->dma_map)) { in ntb_set_mw()
1290 bus_dma_tag_destroy(mw->dma_tag); in ntb_set_mw()
1292 mw->buff_size); in ntb_set_mw()
1293 mw->buff_size = 0; in ntb_set_mw()
1296 if (bus_dmamap_load(mw->dma_tag, mw->dma_map, mw->virt_addr, in ntb_set_mw()
1297 mw->buff_size, ntb_load_cb, &cba, BUS_DMA_NOWAIT) || cba.error) { in ntb_set_mw()
1298 bus_dmamem_free(mw->dma_tag, mw->virt_addr, mw->dma_map); in ntb_set_mw()
1299 bus_dma_tag_destroy(mw->dma_tag); in ntb_set_mw()
1301 mw->buff_size); in ntb_set_mw()
1302 mw->buff_size = 0; in ntb_set_mw()
1305 mw->dma_addr = cba.addr; in ntb_set_mw()
1313 struct ntb_transport_mw *mw = &nt->mw_vec[num_mw]; in ntb_free_mw() local
1315 if (mw->virt_addr == NULL) in ntb_free_mw()
1319 bus_dmamap_unload(mw->dma_tag, mw->dma_map); in ntb_free_mw()
1320 bus_dmamem_free(mw->dma_tag, mw->virt_addr, mw->dma_map); in ntb_free_mw()
1321 bus_dma_tag_destroy(mw->dma_tag); in ntb_free_mw()
1322 mw->buff_size = 0; in ntb_free_mw()
1323 mw->virt_addr = NULL; in ntb_free_mw()
1330 struct ntb_transport_mw *mw; in ntb_transport_setup_qp_mw() local
1338 mw = &nt->mw_vec[mw_num]; in ntb_transport_setup_qp_mw()
1340 if (mw->virt_addr == NULL) in ntb_transport_setup_qp_mw()
1348 rx_size = mw->rx_size / num_qps_mw; in ntb_transport_setup_qp_mw()
1349 qp->rx_buff = mw->virt_addr + rx_size * (qp_num / mw_count); in ntb_transport_setup_qp_mw()