Lines Matching refs:gl
1267 struct cxgbi_gather_list *gl, unsigned int gidx) in cxgbi_ddp_ppod_set() argument
1273 ppod->addr[i] = gidx < gl->nelem ? in cxgbi_ddp_ppod_set()
1274 cpu_to_be64(gl->phys_addr[gidx]) : 0ULL; in cxgbi_ddp_ppod_set()
1288 struct cxgbi_gather_list *gl) in ddp_find_unused_entries() argument
1308 ddp->gl_map[k] = gl; in ddp_find_unused_entries()
1330 struct cxgbi_gather_list *gl) in ddp_gl_unmap() argument
1334 for (i = 0; i < gl->nelem; i++) in ddp_gl_unmap()
1335 dma_unmap_page(&pdev->dev, gl->phys_addr[i], PAGE_SIZE, in ddp_gl_unmap()
1340 struct cxgbi_gather_list *gl) in ddp_gl_map() argument
1344 for (i = 0; i < gl->nelem; i++) { in ddp_gl_map()
1345 gl->phys_addr[i] = dma_map_page(&pdev->dev, gl->pages[i], 0, in ddp_gl_map()
1348 if (unlikely(dma_mapping_error(&pdev->dev, gl->phys_addr[i]))) { in ddp_gl_map()
1351 i, gl->pages[i], pdev); in ddp_gl_map()
1358 unsigned int nelem = gl->nelem; in ddp_gl_map()
1360 gl->nelem = i; in ddp_gl_map()
1361 ddp_gl_unmap(pdev, gl); in ddp_gl_map()
1362 gl->nelem = nelem; in ddp_gl_map()
1367 static void ddp_release_gl(struct cxgbi_gather_list *gl, in ddp_release_gl() argument
1370 ddp_gl_unmap(pdev, gl); in ddp_release_gl()
1371 kfree(gl); in ddp_release_gl()
1380 struct cxgbi_gather_list *gl; in ddp_make_gl() local
1396 gl = kzalloc(sizeof(struct cxgbi_gather_list) + in ddp_make_gl()
1399 if (!gl) { in ddp_make_gl()
1408 gl->pages = (struct page **)&gl->phys_addr[npages]; in ddp_make_gl()
1409 gl->nelem = npages; in ddp_make_gl()
1410 gl->length = xferlen; in ddp_make_gl()
1411 gl->offset = sgoffset; in ddp_make_gl()
1412 gl->pages[0] = sgpage; in ddp_make_gl()
1434 if (j == gl->nelem || sg->offset) { in ddp_make_gl()
1437 j, gl->nelem, sg->offset); in ddp_make_gl()
1440 gl->pages[j] = page; in ddp_make_gl()
1446 gl->nelem = ++j; in ddp_make_gl()
1448 if (ddp_gl_map(pdev, gl) < 0) in ddp_make_gl()
1451 return gl; in ddp_make_gl()
1454 kfree(gl); in ddp_make_gl()
1466 struct cxgbi_gather_list *gl = ddp->gl_map[idx]; in ddp_tag_release() local
1469 if (!gl || !gl->nelem) { in ddp_tag_release()
1471 tag, idx, gl, gl ? gl->nelem : 0); in ddp_tag_release()
1474 npods = (gl->nelem + PPOD_PAGES_MAX - 1) >> PPOD_PAGES_SHIFT; in ddp_tag_release()
1480 ddp_release_gl(gl, ddp->pdev); in ddp_tag_release()
1486 u32 sw_tag, u32 *tagp, struct cxgbi_gather_list *gl, in ddp_tag_reserve() argument
1498 npods = (gl->nelem + PPOD_PAGES_MAX - 1) >> PPOD_PAGES_SHIFT; in ddp_tag_reserve()
1501 npods, gl); in ddp_tag_reserve()
1505 gl); in ddp_tag_reserve()
1509 npods, gl); in ddp_tag_reserve()
1515 gl->length, gl->nelem, npods); in ddp_tag_reserve()
1525 hdr.max_offset = htonl(gl->length); in ddp_tag_reserve()
1526 hdr.page_offset = htonl(gl->offset); in ddp_tag_reserve()
1528 err = cdev->csk_ddp_set(csk, &hdr, idx, npods, gl); in ddp_tag_reserve()
1535 gl->length, gl->nelem, gl->offset, tid, sw_tag, tag, idx, in ddp_tag_reserve()
1551 struct cxgbi_gather_list *gl; in cxgbi_ddp_reserve() local
1567 gl = ddp_make_gl(xferlen, sgl, sgcnt, cdev->pdev, gfp); in cxgbi_ddp_reserve()
1568 if (!gl) in cxgbi_ddp_reserve()
1571 err = ddp_tag_reserve(csk, csk->tid, sw_tag, tagp, gl, gfp); in cxgbi_ddp_reserve()
1573 ddp_release_gl(gl, cdev->pdev); in cxgbi_ddp_reserve()
1589 struct cxgbi_gather_list *gl = ddp->gl_map[i]; in ddp_destroy() local
1591 if (gl) { in ddp_destroy()
1592 int npods = (gl->nelem + PPOD_PAGES_MAX - 1) in ddp_destroy()
1595 kfree(gl); in ddp_destroy()