Lines Matching refs:reqp

421 static int dca_bindchains_one(dca_request_t *reqp, size_t cnt, int dr_offset,
1143 dca_request_t *reqp; in dca_initworklist() local
1145 if ((reqp = dca_newreq(dca)) == NULL) { in dca_initworklist()
1149 reqp->dr_dca = dca; in dca_initworklist()
1150 reqp->dr_wlp = wlp; in dca_initworklist()
1151 dca_freereq(reqp); in dca_initworklist()
1225 dca_request_t *reqp; in dca_uninit() local
1236 while ((reqp = dca_getreq(dca, mcr, 0)) != NULL) { in dca_uninit()
1237 dca_destroyreq(reqp); in dca_uninit()
1583 dca_request_t *reqp; in dca_newreq() local
1592 reqp = kmem_zalloc(sizeof (dca_request_t), KM_SLEEP); in dca_newreq()
1594 reqp->dr_dca = dca; in dca_newreq()
1600 NULL, &reqp->dr_ctx_dmah); in dca_newreq()
1603 dca_destroyreq(reqp); in dca_newreq()
1608 rv = ddi_dma_mem_alloc(reqp->dr_ctx_dmah, in dca_newreq()
1610 DDI_DMA_SLEEP, NULL, &reqp->dr_ctx_kaddr, &size, in dca_newreq()
1611 &reqp->dr_ctx_acch); in dca_newreq()
1614 dca_destroyreq(reqp); in dca_newreq()
1618 rv = ddi_dma_addr_bind_handle(reqp->dr_ctx_dmah, NULL, in dca_newreq()
1619 reqp->dr_ctx_kaddr, size, DDI_DMA_CONSISTENT | DDI_DMA_WRITE, in dca_newreq()
1623 dca_destroyreq(reqp); in dca_newreq()
1626 reqp->dr_ctx_paddr = c.dmac_address; in dca_newreq()
1628 reqp->dr_dma_size = size; in dca_newreq()
1634 DDI_DMA_SLEEP, NULL, &reqp->dr_ibuf_dmah); in dca_newreq()
1637 dca_destroyreq(reqp); in dca_newreq()
1641 DDI_DMA_SLEEP, NULL, &reqp->dr_obuf_dmah); in dca_newreq()
1644 dca_destroyreq(reqp); in dca_newreq()
1649 DDI_DMA_SLEEP, NULL, &reqp->dr_chain_in_dmah); in dca_newreq()
1652 dca_destroyreq(reqp); in dca_newreq()
1657 DDI_DMA_SLEEP, NULL, &reqp->dr_chain_out_dmah); in dca_newreq()
1660 dca_destroyreq(reqp); in dca_newreq()
1675 rv = ddi_dma_mem_alloc(reqp->dr_ibuf_dmah, in dca_newreq()
1677 DDI_DMA_STREAMING, DDI_DMA_SLEEP, NULL, &reqp->dr_ibuf_kaddr, in dca_newreq()
1678 &size, &reqp->dr_ibuf_acch); in dca_newreq()
1681 dca_destroyreq(reqp); in dca_newreq()
1685 rv = ddi_dma_mem_alloc(reqp->dr_obuf_dmah, in dca_newreq()
1687 DDI_DMA_STREAMING, DDI_DMA_SLEEP, NULL, &reqp->dr_obuf_kaddr, in dca_newreq()
1688 &size, &reqp->dr_obuf_acch); in dca_newreq()
1691 dca_destroyreq(reqp); in dca_newreq()
1696 reqp->dr_offset = CTX_MAXLENGTH; in dca_newreq()
1697 if ((rv = dca_bindchains_one(reqp, size, reqp->dr_offset, in dca_newreq()
1698 reqp->dr_ibuf_kaddr, reqp->dr_ibuf_dmah, in dca_newreq()
1700 &reqp->dr_ibuf_head, &n_chain)) != DDI_SUCCESS) { in dca_newreq()
1701 (void) dca_destroyreq(reqp); in dca_newreq()
1704 reqp->dr_ibuf_paddr = reqp->dr_ibuf_head.dc_buffer_paddr; in dca_newreq()
1706 reqp->dr_offset += DESC_SIZE * n_chain; in dca_newreq()
1708 if ((rv = dca_bindchains_one(reqp, size, reqp->dr_offset, in dca_newreq()
1709 reqp->dr_obuf_kaddr, reqp->dr_obuf_dmah, in dca_newreq()
1711 &reqp->dr_obuf_head, &n_chain)) != DDI_SUCCESS) { in dca_newreq()
1712 (void) dca_destroyreq(reqp); in dca_newreq()
1715 reqp->dr_obuf_paddr = reqp->dr_obuf_head.dc_buffer_paddr; in dca_newreq()
1717 reqp->dr_offset += DESC_SIZE * n_chain; in dca_newreq()
1720 reqp->dr_ctx_kaddr, reqp->dr_ctx_paddr, CTX_MAXLENGTH); in dca_newreq()
1721 return (reqp); in dca_newreq()
1725 dca_destroyreq(dca_request_t *reqp) in dca_destroyreq() argument
1731 if (reqp->dr_ctx_paddr) { in dca_destroyreq()
1732 (void) ddi_dma_unbind_handle(reqp->dr_ctx_dmah); in dca_destroyreq()
1735 if (reqp->dr_ctx_acch) { in dca_destroyreq()
1736 ddi_dma_mem_free(&reqp->dr_ctx_acch); in dca_destroyreq()
1739 if (reqp->dr_ctx_dmah) { in dca_destroyreq()
1740 ddi_dma_free_handle(&reqp->dr_ctx_dmah); in dca_destroyreq()
1746 if (reqp->dr_ibuf_paddr) { in dca_destroyreq()
1747 (void) ddi_dma_unbind_handle(reqp->dr_ibuf_dmah); in dca_destroyreq()
1749 if (reqp->dr_obuf_paddr) { in dca_destroyreq()
1750 (void) ddi_dma_unbind_handle(reqp->dr_obuf_dmah); in dca_destroyreq()
1753 if (reqp->dr_ibuf_acch) { in dca_destroyreq()
1754 ddi_dma_mem_free(&reqp->dr_ibuf_acch); in dca_destroyreq()
1756 if (reqp->dr_obuf_acch) { in dca_destroyreq()
1757 ddi_dma_mem_free(&reqp->dr_obuf_acch); in dca_destroyreq()
1760 if (reqp->dr_ibuf_dmah) { in dca_destroyreq()
1761 ddi_dma_free_handle(&reqp->dr_ibuf_dmah); in dca_destroyreq()
1763 if (reqp->dr_obuf_dmah) { in dca_destroyreq()
1764 ddi_dma_free_handle(&reqp->dr_obuf_dmah); in dca_destroyreq()
1770 if (reqp->dr_chain_in_dmah) { in dca_destroyreq()
1771 ddi_dma_free_handle(&reqp->dr_chain_in_dmah); in dca_destroyreq()
1773 if (reqp->dr_chain_out_dmah) { in dca_destroyreq()
1774 ddi_dma_free_handle(&reqp->dr_chain_out_dmah); in dca_destroyreq()
1777 kmem_free(reqp, sizeof (dca_request_t)); in dca_destroyreq()
1813 dca_request_t *reqp; in dca_getreq() local
1816 reqp = (dca_request_t *)dca_dequeue(&wlp->dwl_freereqs); in dca_getreq()
1818 if (reqp) { in dca_getreq()
1819 reqp->dr_flags = 0; in dca_getreq()
1820 reqp->dr_callback = NULL; in dca_getreq()
1826 if ((reqp = dca_newreq(dca)) != NULL) { in dca_getreq()
1827 reqp->dr_wlp = wlp; in dca_getreq()
1828 reqp->dr_dca = dca; in dca_getreq()
1829 reqp->dr_flags = 0; in dca_getreq()
1830 reqp->dr_callback = NULL; in dca_getreq()
1833 return (reqp); in dca_getreq()
1837 dca_freereq(dca_request_t *reqp) in dca_freereq() argument
1839 reqp->dr_kcf_req = NULL; in dca_freereq()
1840 if (!(reqp->dr_flags & DR_NOCACHE)) { in dca_freereq()
1841 mutex_enter(&reqp->dr_wlp->dwl_freereqslock); in dca_freereq()
1842 dca_enqueue(&reqp->dr_wlp->dwl_freereqs, in dca_freereq()
1843 (dca_listnode_t *)reqp); in dca_freereq()
1844 mutex_exit(&reqp->dr_wlp->dwl_freereqslock); in dca_freereq()
1855 dca_bindchains(dca_request_t *reqp, size_t incnt, size_t outcnt) in dca_bindchains() argument
1862 if (reqp->dr_flags & DR_INPLACE) { in dca_bindchains()
1870 if ((kaddr = dca_bufdaddr(reqp->dr_in)) == NULL) { in dca_bindchains()
1874 if ((rv = dca_bindchains_one(reqp, incnt, reqp->dr_offset, in dca_bindchains()
1875 kaddr, reqp->dr_chain_in_dmah, flags, in dca_bindchains()
1876 &reqp->dr_chain_in_head, &n_chain)) != DDI_SUCCESS) { in dca_bindchains()
1877 (void) dca_unbindchains(reqp); in dca_bindchains()
1887 reqp->dr_in_paddr = reqp->dr_chain_in_head.dc_buffer_paddr; in dca_bindchains()
1888 reqp->dr_in_next = reqp->dr_chain_in_head.dc_next_paddr; in dca_bindchains()
1889 reqp->dr_in_len = reqp->dr_chain_in_head.dc_buffer_length; in dca_bindchains()
1891 reqp->dr_in_paddr = 0; in dca_bindchains()
1892 reqp->dr_in_next = 0; in dca_bindchains()
1893 reqp->dr_in_len = 0; in dca_bindchains()
1896 if (reqp->dr_flags & DR_INPLACE) { in dca_bindchains()
1897 reqp->dr_out_paddr = reqp->dr_in_paddr; in dca_bindchains()
1898 reqp->dr_out_len = reqp->dr_in_len; in dca_bindchains()
1899 reqp->dr_out_next = reqp->dr_in_next; in dca_bindchains()
1906 if ((kaddr = dca_bufdaddr_out(reqp->dr_out)) == NULL) { in dca_bindchains()
1908 (void) dca_unbindchains(reqp); in dca_bindchains()
1911 rv = dca_bindchains_one(reqp, outcnt, reqp->dr_offset + in dca_bindchains()
1912 n_chain * DESC_SIZE, kaddr, reqp->dr_chain_out_dmah, in dca_bindchains()
1913 flags, &reqp->dr_chain_out_head, &n_chain); in dca_bindchains()
1915 (void) dca_unbindchains(reqp); in dca_bindchains()
1920 reqp->dr_out_paddr = reqp->dr_chain_out_head.dc_buffer_paddr; in dca_bindchains()
1921 reqp->dr_out_next = reqp->dr_chain_out_head.dc_next_paddr; in dca_bindchains()
1922 reqp->dr_out_len = reqp->dr_chain_out_head.dc_buffer_length; in dca_bindchains()
1924 reqp->dr_out_paddr = 0; in dca_bindchains()
1925 reqp->dr_out_next = 0; in dca_bindchains()
1926 reqp->dr_out_len = 0; in dca_bindchains()
1936 dca_unbindchains(dca_request_t *reqp) in dca_unbindchains() argument
1942 if (reqp->dr_chain_in_head.dc_buffer_paddr != 0) { in dca_unbindchains()
1943 (void) ddi_dma_unbind_handle(reqp->dr_chain_in_dmah); in dca_unbindchains()
1944 reqp->dr_chain_in_head.dc_buffer_paddr = 0; in dca_unbindchains()
1947 if (reqp->dr_flags & DR_INPLACE) { in dca_unbindchains()
1952 if (reqp->dr_chain_out_head.dc_buffer_paddr != 0) { in dca_unbindchains()
1953 (void) ddi_dma_unbind_handle(reqp->dr_chain_out_dmah); in dca_unbindchains()
1954 reqp->dr_chain_out_head.dc_buffer_paddr = 0; in dca_unbindchains()
1965 dca_bindchains_one(dca_request_t *reqp, size_t cnt, int dr_offset, in dca_bindchains_one() argument
1978 chain_paddr = reqp->dr_ctx_paddr + dr_offset; in dca_bindchains_one()
1979 chain_kaddr = reqp->dr_ctx_kaddr + dr_offset; in dca_bindchains_one()
1993 if ((rv = dca_check_dma_handle(reqp->dr_dca, handle, in dca_bindchains_one()
1995 reqp->destroy = TRUE; in dca_bindchains_one()
2008 PUTDESC32(reqp, chain_kaddr, DESC_BUFADDR, c.dmac_address); in dca_bindchains_one()
2009 PUTDESC16(reqp, chain_kaddr, DESC_RSVD, 0); in dca_bindchains_one()
2010 PUTDESC16(reqp, chain_kaddr, DESC_LENGTH, c.dmac_size); in dca_bindchains_one()
2020 PUTDESC32(reqp, chain_kaddr_pre, DESC_NEXT, in dca_bindchains_one()
2037 PUTDESC32(reqp, chain_kaddr_pre, DESC_NEXT, 0); in dca_bindchains_one()
2046 dca_start(dca_t *dca, dca_request_t *reqp, int mcr, int dosched) in dca_start() argument
2053 reqp, reqp->dr_in, reqp->dr_out, reqp->dr_ctx_kaddr, in dca_start()
2054 reqp->dr_ibuf_kaddr, reqp->dr_obuf_kaddr); in dca_start()
2056 reqp->dr_ctx_paddr, reqp->dr_ibuf_paddr, reqp->dr_obuf_paddr); in dca_start()
2058 (void) ddi_dma_sync(reqp->dr_ctx_dmah, 0, 0, DDI_DMA_SYNC_FORDEV); in dca_start()
2059 if (dca_check_dma_handle(dca, reqp->dr_ctx_dmah, in dca_start()
2061 reqp->destroy = TRUE; in dca_start()
2066 dca_enqueue(&wlp->dwl_waitq, (dca_listnode_t *)reqp); in dca_start()
2069 reqp->dr_wlp = wlp; in dca_start()
2168 dca_request_t *reqp; in dca_schedule() local
2170 reqp = (dca_request_t *)dca_dequeue(&wlp->dwl_waitq); in dca_schedule()
2171 if (reqp == NULL) { in dca_schedule()
2189 PUTMCR32(workp, offset, reqp->dr_ctx_paddr); in dca_schedule()
2196 PUTMCR32(workp, offset, reqp->dr_in_paddr); in dca_schedule()
2199 PUTMCR32(workp, offset, reqp->dr_in_next); in dca_schedule()
2202 PUTMCR16(workp, offset, reqp->dr_in_len); in dca_schedule()
2215 PUTMCR16(workp, offset, reqp->dr_pkt_length); in dca_schedule()
2222 PUTMCR32(workp, offset, reqp->dr_out_paddr); in dca_schedule()
2225 PUTMCR32(workp, offset, reqp->dr_out_next); in dca_schedule()
2228 PUTMCR16(workp, offset, reqp->dr_out_len); in dca_schedule()
2237 workp->dw_reqs[nreqs] = reqp; in dca_schedule()
2335 dca_request_t *reqp = workp->dw_reqs[i]; in dca_reclaim() local
2336 if (reqp == NULL) { in dca_reclaim()
2339 if (reqp->dr_byte_stat >= 0) { in dca_reclaim()
2340 dca->dca_stats[reqp->dr_byte_stat] += in dca_reclaim()
2341 reqp->dr_pkt_length; in dca_reclaim()
2343 if (reqp->dr_job_stat >= 0) { in dca_reclaim()
2344 dca->dca_stats[reqp->dr_job_stat]++; in dca_reclaim()
2350 dca_request_t *reqp = workp->dw_reqs[i]; in dca_reclaim() local
2352 if (reqp == NULL) { in dca_reclaim()
2358 dca_done(reqp, CRYPTO_SUCCESS); in dca_reclaim()
2384 dca_done(dca_request_t *reqp, int err) in dca_done() argument
2389 if (dca_unbindchains(reqp) != DDI_SUCCESS) { in dca_done()
2392 dca_failure(reqp->dr_dca, DDI_DATAPATH_FAULT, in dca_done()
2400 if (reqp->dr_callback != NULL) { in dca_done()
2401 reqp->dr_callback(reqp, err); in dca_done()
2403 dca_freereq(reqp); in dca_done()
2501 dca_request_t *reqp = workp->dw_reqs[i]; in dca_failure() local
2502 if (reqp) { in dca_failure()
2503 dca_done(reqp, errno); in dca_failure()
2614 dca_request_t *reqp; in dca_rejectjobs() local
2621 reqp = (dca_request_t *)dca_unqueue(&wlp->dwl_waitq); in dca_rejectjobs()
2622 if (reqp == NULL) { in dca_rejectjobs()
2635 (void) dca_unbindchains(reqp); in dca_rejectjobs()
2636 reqp->dr_callback(reqp, EAGAIN); in dca_rejectjobs()
3702 dca_request_t *reqp = ctx->cc_provider_private; in dca_encrypt() local
3703 reqp->dr_flags |= DR_INPLACE; in dca_encrypt()
3754 dca_request_t *reqp = ctx->cc_provider_private; in dca_encrypt_update() local
3755 reqp->dr_flags |= DR_INPLACE; in dca_encrypt_update()
3924 dca_request_t *reqp = ctx->cc_provider_private; in dca_decrypt() local
3925 reqp->dr_flags |= DR_INPLACE; in dca_decrypt()
3977 dca_request_t *reqp = ctx->cc_provider_private; in dca_decrypt_update() local
3978 reqp->dr_flags |= DR_INPLACE; in dca_decrypt_update()