Lines Matching refs:reqp

426 static int dca_bindchains_one(dca_request_t *reqp, size_t cnt, int dr_offset,
1150 dca_request_t *reqp; in dca_initworklist() local
1152 if ((reqp = dca_newreq(dca)) == NULL) { in dca_initworklist()
1156 reqp->dr_dca = dca; in dca_initworklist()
1157 reqp->dr_wlp = wlp; in dca_initworklist()
1158 dca_freereq(reqp); in dca_initworklist()
1232 dca_request_t *reqp; in dca_uninit() local
1243 while ((reqp = dca_getreq(dca, mcr, 0)) != NULL) { in dca_uninit()
1244 dca_destroyreq(reqp); in dca_uninit()
1590 dca_request_t *reqp; in dca_newreq() local
1599 reqp = kmem_zalloc(sizeof (dca_request_t), KM_SLEEP); in dca_newreq()
1601 reqp->dr_dca = dca; in dca_newreq()
1607 NULL, &reqp->dr_ctx_dmah); in dca_newreq()
1610 dca_destroyreq(reqp); in dca_newreq()
1615 rv = ddi_dma_mem_alloc(reqp->dr_ctx_dmah, in dca_newreq()
1617 DDI_DMA_SLEEP, NULL, &reqp->dr_ctx_kaddr, &size, in dca_newreq()
1618 &reqp->dr_ctx_acch); in dca_newreq()
1621 dca_destroyreq(reqp); in dca_newreq()
1625 rv = ddi_dma_addr_bind_handle(reqp->dr_ctx_dmah, NULL, in dca_newreq()
1626 reqp->dr_ctx_kaddr, size, DDI_DMA_CONSISTENT | DDI_DMA_WRITE, in dca_newreq()
1630 dca_destroyreq(reqp); in dca_newreq()
1633 reqp->dr_ctx_paddr = c.dmac_address; in dca_newreq()
1635 reqp->dr_dma_size = size; in dca_newreq()
1641 DDI_DMA_SLEEP, NULL, &reqp->dr_ibuf_dmah); in dca_newreq()
1644 dca_destroyreq(reqp); in dca_newreq()
1648 DDI_DMA_SLEEP, NULL, &reqp->dr_obuf_dmah); in dca_newreq()
1651 dca_destroyreq(reqp); in dca_newreq()
1656 DDI_DMA_SLEEP, NULL, &reqp->dr_chain_in_dmah); in dca_newreq()
1659 dca_destroyreq(reqp); in dca_newreq()
1664 DDI_DMA_SLEEP, NULL, &reqp->dr_chain_out_dmah); in dca_newreq()
1667 dca_destroyreq(reqp); in dca_newreq()
1682 if ((reqp->dr_ibuf_kaddr = kmem_alloc(size, KM_SLEEP)) == NULL) { in dca_newreq()
1684 dca_destroyreq(reqp); in dca_newreq()
1687 if ((reqp->dr_obuf_kaddr = kmem_alloc(size, KM_SLEEP)) == NULL) { in dca_newreq()
1689 dca_destroyreq(reqp); in dca_newreq()
1700 rv = ddi_dma_mem_alloc(reqp->dr_ibuf_dmah, in dca_newreq()
1702 DDI_DMA_STREAMING, DDI_DMA_SLEEP, NULL, &reqp->dr_ibuf_kaddr, in dca_newreq()
1703 &size, &reqp->dr_ibuf_acch); in dca_newreq()
1706 dca_destroyreq(reqp); in dca_newreq()
1710 rv = ddi_dma_mem_alloc(reqp->dr_obuf_dmah, in dca_newreq()
1712 DDI_DMA_STREAMING, DDI_DMA_SLEEP, NULL, &reqp->dr_obuf_kaddr, in dca_newreq()
1713 &size, &reqp->dr_obuf_acch); in dca_newreq()
1716 dca_destroyreq(reqp); in dca_newreq()
1722 reqp->dr_offset = CTX_MAXLENGTH; in dca_newreq()
1723 if ((rv = dca_bindchains_one(reqp, size, reqp->dr_offset, in dca_newreq()
1724 reqp->dr_ibuf_kaddr, reqp->dr_ibuf_dmah, in dca_newreq()
1726 &reqp->dr_ibuf_head, &n_chain)) != DDI_SUCCESS) { in dca_newreq()
1727 (void) dca_destroyreq(reqp); in dca_newreq()
1730 reqp->dr_ibuf_paddr = reqp->dr_ibuf_head.dc_buffer_paddr; in dca_newreq()
1732 reqp->dr_offset += DESC_SIZE * n_chain; in dca_newreq()
1734 if ((rv = dca_bindchains_one(reqp, size, reqp->dr_offset, in dca_newreq()
1735 reqp->dr_obuf_kaddr, reqp->dr_obuf_dmah, in dca_newreq()
1737 &reqp->dr_obuf_head, &n_chain)) != DDI_SUCCESS) { in dca_newreq()
1738 (void) dca_destroyreq(reqp); in dca_newreq()
1741 reqp->dr_obuf_paddr = reqp->dr_obuf_head.dc_buffer_paddr; in dca_newreq()
1743 reqp->dr_offset += DESC_SIZE * n_chain; in dca_newreq()
1746 reqp->dr_ctx_kaddr, reqp->dr_ctx_paddr, CTX_MAXLENGTH); in dca_newreq()
1747 return (reqp); in dca_newreq()
1751 dca_destroyreq(dca_request_t *reqp) in dca_destroyreq() argument
1754 dca_t *dca = reqp->dr_dca; in dca_destroyreq()
1761 if (reqp->dr_ctx_paddr) { in dca_destroyreq()
1762 (void) ddi_dma_unbind_handle(reqp->dr_ctx_dmah); in dca_destroyreq()
1765 if (reqp->dr_ctx_acch) { in dca_destroyreq()
1766 ddi_dma_mem_free(&reqp->dr_ctx_acch); in dca_destroyreq()
1769 if (reqp->dr_ctx_dmah) { in dca_destroyreq()
1770 ddi_dma_free_handle(&reqp->dr_ctx_dmah); in dca_destroyreq()
1777 if (reqp->dr_ibuf_dmah) { in dca_destroyreq()
1778 (void) ddi_dma_unbind_handle(reqp->dr_ibuf_dmah); in dca_destroyreq()
1779 ddi_dma_free_handle(&reqp->dr_ibuf_dmah); in dca_destroyreq()
1781 if (reqp->dr_obuf_dmah) { in dca_destroyreq()
1782 (void) ddi_dma_unbind_handle(reqp->dr_obuf_dmah); in dca_destroyreq()
1783 ddi_dma_free_handle(&reqp->dr_obuf_dmah); in dca_destroyreq()
1786 kmem_free(reqp->dr_ibuf_kaddr, size); in dca_destroyreq()
1787 kmem_free(reqp->dr_obuf_kaddr, size); in dca_destroyreq()
1789 if (reqp->dr_ibuf_paddr) { in dca_destroyreq()
1790 (void) ddi_dma_unbind_handle(reqp->dr_ibuf_dmah); in dca_destroyreq()
1792 if (reqp->dr_obuf_paddr) { in dca_destroyreq()
1793 (void) ddi_dma_unbind_handle(reqp->dr_obuf_dmah); in dca_destroyreq()
1796 if (reqp->dr_ibuf_acch) { in dca_destroyreq()
1797 ddi_dma_mem_free(&reqp->dr_ibuf_acch); in dca_destroyreq()
1799 if (reqp->dr_obuf_acch) { in dca_destroyreq()
1800 ddi_dma_mem_free(&reqp->dr_obuf_acch); in dca_destroyreq()
1803 if (reqp->dr_ibuf_dmah) { in dca_destroyreq()
1804 ddi_dma_free_handle(&reqp->dr_ibuf_dmah); in dca_destroyreq()
1806 if (reqp->dr_obuf_dmah) { in dca_destroyreq()
1807 ddi_dma_free_handle(&reqp->dr_obuf_dmah); in dca_destroyreq()
1814 if (reqp->dr_chain_in_dmah) { in dca_destroyreq()
1815 ddi_dma_free_handle(&reqp->dr_chain_in_dmah); in dca_destroyreq()
1817 if (reqp->dr_chain_out_dmah) { in dca_destroyreq()
1818 ddi_dma_free_handle(&reqp->dr_chain_out_dmah); in dca_destroyreq()
1821 kmem_free(reqp, sizeof (dca_request_t)); in dca_destroyreq()
1857 dca_request_t *reqp; in dca_getreq() local
1860 reqp = (dca_request_t *)dca_dequeue(&wlp->dwl_freereqs); in dca_getreq()
1862 if (reqp) { in dca_getreq()
1863 reqp->dr_flags = 0; in dca_getreq()
1864 reqp->dr_callback = NULL; in dca_getreq()
1870 if ((reqp = dca_newreq(dca)) != NULL) { in dca_getreq()
1871 reqp->dr_wlp = wlp; in dca_getreq()
1872 reqp->dr_dca = dca; in dca_getreq()
1873 reqp->dr_flags = 0; in dca_getreq()
1874 reqp->dr_callback = NULL; in dca_getreq()
1877 return (reqp); in dca_getreq()
1881 dca_freereq(dca_request_t *reqp) in dca_freereq() argument
1883 reqp->dr_kcf_req = NULL; in dca_freereq()
1884 if (!(reqp->dr_flags & DR_NOCACHE)) { in dca_freereq()
1885 mutex_enter(&reqp->dr_wlp->dwl_freereqslock); in dca_freereq()
1886 dca_enqueue(&reqp->dr_wlp->dwl_freereqs, in dca_freereq()
1887 (dca_listnode_t *)reqp); in dca_freereq()
1888 mutex_exit(&reqp->dr_wlp->dwl_freereqslock); in dca_freereq()
1899 dca_bindchains(dca_request_t *reqp, size_t incnt, size_t outcnt) in dca_bindchains() argument
1906 if (reqp->dr_flags & DR_INPLACE) { in dca_bindchains()
1914 if ((kaddr = dca_bufdaddr(reqp->dr_in)) == NULL) { in dca_bindchains()
1918 if ((rv = dca_bindchains_one(reqp, incnt, reqp->dr_offset, in dca_bindchains()
1919 kaddr, reqp->dr_chain_in_dmah, flags, in dca_bindchains()
1920 &reqp->dr_chain_in_head, &n_chain)) != DDI_SUCCESS) { in dca_bindchains()
1921 (void) dca_unbindchains(reqp); in dca_bindchains()
1931 reqp->dr_in_paddr = reqp->dr_chain_in_head.dc_buffer_paddr; in dca_bindchains()
1932 reqp->dr_in_next = reqp->dr_chain_in_head.dc_next_paddr; in dca_bindchains()
1933 reqp->dr_in_len = reqp->dr_chain_in_head.dc_buffer_length; in dca_bindchains()
1935 reqp->dr_in_paddr = NULL; in dca_bindchains()
1936 reqp->dr_in_next = 0; in dca_bindchains()
1937 reqp->dr_in_len = 0; in dca_bindchains()
1940 if (reqp->dr_flags & DR_INPLACE) { in dca_bindchains()
1941 reqp->dr_out_paddr = reqp->dr_in_paddr; in dca_bindchains()
1942 reqp->dr_out_len = reqp->dr_in_len; in dca_bindchains()
1943 reqp->dr_out_next = reqp->dr_in_next; in dca_bindchains()
1950 if ((kaddr = dca_bufdaddr_out(reqp->dr_out)) == NULL) { in dca_bindchains()
1952 (void) dca_unbindchains(reqp); in dca_bindchains()
1955 rv = dca_bindchains_one(reqp, outcnt, reqp->dr_offset + in dca_bindchains()
1956 n_chain * DESC_SIZE, kaddr, reqp->dr_chain_out_dmah, in dca_bindchains()
1957 flags, &reqp->dr_chain_out_head, &n_chain); in dca_bindchains()
1959 (void) dca_unbindchains(reqp); in dca_bindchains()
1964 reqp->dr_out_paddr = reqp->dr_chain_out_head.dc_buffer_paddr; in dca_bindchains()
1965 reqp->dr_out_next = reqp->dr_chain_out_head.dc_next_paddr; in dca_bindchains()
1966 reqp->dr_out_len = reqp->dr_chain_out_head.dc_buffer_length; in dca_bindchains()
1968 reqp->dr_out_paddr = NULL; in dca_bindchains()
1969 reqp->dr_out_next = 0; in dca_bindchains()
1970 reqp->dr_out_len = 0; in dca_bindchains()
1980 dca_unbindchains(dca_request_t *reqp) in dca_unbindchains() argument
1986 if (reqp->dr_chain_in_head.dc_buffer_paddr != NULL) { in dca_unbindchains()
1987 (void) ddi_dma_unbind_handle(reqp->dr_chain_in_dmah); in dca_unbindchains()
1988 reqp->dr_chain_in_head.dc_buffer_paddr = 0; in dca_unbindchains()
1991 if (reqp->dr_flags & DR_INPLACE) { in dca_unbindchains()
1996 if (reqp->dr_chain_out_head.dc_buffer_paddr != NULL) { in dca_unbindchains()
1997 (void) ddi_dma_unbind_handle(reqp->dr_chain_out_dmah); in dca_unbindchains()
1998 reqp->dr_chain_out_head.dc_buffer_paddr = 0; in dca_unbindchains()
2009 dca_bindchains_one(dca_request_t *reqp, size_t cnt, int dr_offset, in dca_bindchains_one() argument
2022 chain_paddr = reqp->dr_ctx_paddr + dr_offset; in dca_bindchains_one()
2023 chain_kaddr = reqp->dr_ctx_kaddr + dr_offset; in dca_bindchains_one()
2037 if ((rv = dca_check_dma_handle(reqp->dr_dca, handle, in dca_bindchains_one()
2039 reqp->destroy = TRUE; in dca_bindchains_one()
2052 PUTDESC32(reqp, chain_kaddr, DESC_BUFADDR, c.dmac_address); in dca_bindchains_one()
2053 PUTDESC16(reqp, chain_kaddr, DESC_RSVD, 0); in dca_bindchains_one()
2054 PUTDESC16(reqp, chain_kaddr, DESC_LENGTH, c.dmac_size); in dca_bindchains_one()
2064 PUTDESC32(reqp, chain_kaddr_pre, DESC_NEXT, in dca_bindchains_one()
2081 PUTDESC32(reqp, chain_kaddr_pre, DESC_NEXT, 0); in dca_bindchains_one()
2090 dca_start(dca_t *dca, dca_request_t *reqp, int mcr, int dosched) in dca_start() argument
2097 reqp, reqp->dr_in, reqp->dr_out, reqp->dr_ctx_kaddr, in dca_start()
2098 reqp->dr_ibuf_kaddr, reqp->dr_obuf_kaddr); in dca_start()
2100 reqp->dr_ctx_paddr, reqp->dr_ibuf_paddr, reqp->dr_obuf_paddr); in dca_start()
2102 (void) ddi_dma_sync(reqp->dr_ctx_dmah, 0, 0, DDI_DMA_SYNC_FORDEV); in dca_start()
2103 if (dca_check_dma_handle(dca, reqp->dr_ctx_dmah, in dca_start()
2105 reqp->destroy = TRUE; in dca_start()
2110 dca_enqueue(&wlp->dwl_waitq, (dca_listnode_t *)reqp); in dca_start()
2113 reqp->dr_wlp = wlp; in dca_start()
2212 dca_request_t *reqp; in dca_schedule() local
2214 reqp = (dca_request_t *)dca_dequeue(&wlp->dwl_waitq); in dca_schedule()
2215 if (reqp == NULL) { in dca_schedule()
2233 PUTMCR32(workp, offset, reqp->dr_ctx_paddr); in dca_schedule()
2240 PUTMCR32(workp, offset, reqp->dr_in_paddr); in dca_schedule()
2243 PUTMCR32(workp, offset, reqp->dr_in_next); in dca_schedule()
2246 PUTMCR16(workp, offset, reqp->dr_in_len); in dca_schedule()
2259 PUTMCR16(workp, offset, reqp->dr_pkt_length); in dca_schedule()
2266 PUTMCR32(workp, offset, reqp->dr_out_paddr); in dca_schedule()
2269 PUTMCR32(workp, offset, reqp->dr_out_next); in dca_schedule()
2272 PUTMCR16(workp, offset, reqp->dr_out_len); in dca_schedule()
2281 workp->dw_reqs[nreqs] = reqp; in dca_schedule()
2379 dca_request_t *reqp = workp->dw_reqs[i]; in dca_reclaim() local
2380 if (reqp == NULL) { in dca_reclaim()
2383 if (reqp->dr_byte_stat >= 0) { in dca_reclaim()
2384 dca->dca_stats[reqp->dr_byte_stat] += in dca_reclaim()
2385 reqp->dr_pkt_length; in dca_reclaim()
2387 if (reqp->dr_job_stat >= 0) { in dca_reclaim()
2388 dca->dca_stats[reqp->dr_job_stat]++; in dca_reclaim()
2394 dca_request_t *reqp = workp->dw_reqs[i]; in dca_reclaim() local
2396 if (reqp == NULL) { in dca_reclaim()
2402 dca_done(reqp, CRYPTO_SUCCESS); in dca_reclaim()
2428 dca_done(dca_request_t *reqp, int err) in dca_done() argument
2433 if (dca_unbindchains(reqp) != DDI_SUCCESS) { in dca_done()
2436 dca_failure(reqp->dr_dca, DDI_DATAPATH_FAULT, in dca_done()
2444 if (reqp->dr_callback != NULL) { in dca_done()
2445 reqp->dr_callback(reqp, err); in dca_done()
2447 dca_freereq(reqp); in dca_done()
2545 dca_request_t *reqp = workp->dw_reqs[i]; in dca_failure() local
2546 if (reqp) { in dca_failure()
2547 dca_done(reqp, errno); in dca_failure()
2658 dca_request_t *reqp; in dca_rejectjobs() local
2665 reqp = (dca_request_t *)dca_unqueue(&wlp->dwl_waitq); in dca_rejectjobs()
2666 if (reqp == NULL) { in dca_rejectjobs()
2679 (void) dca_unbindchains(reqp); in dca_rejectjobs()
2680 reqp->dr_callback(reqp, EAGAIN); in dca_rejectjobs()
3752 dca_request_t *reqp = ctx->cc_provider_private; in dca_encrypt() local
3753 reqp->dr_flags |= DR_INPLACE; in dca_encrypt()
3807 dca_request_t *reqp = ctx->cc_provider_private; in dca_encrypt_update() local
3808 reqp->dr_flags |= DR_INPLACE; in dca_encrypt_update()
3986 dca_request_t *reqp = ctx->cc_provider_private; in dca_decrypt() local
3987 reqp->dr_flags |= DR_INPLACE; in dca_decrypt()
4042 dca_request_t *reqp = ctx->cc_provider_private; in dca_decrypt_update() local
4043 reqp->dr_flags |= DR_INPLACE; in dca_decrypt_update()