Lines Matching refs:gl
1271 struct cxgbi_gather_list *gl, unsigned int gidx) in cxgbi_ddp_ppod_set() argument
1277 ppod->addr[i] = gidx < gl->nelem ? in cxgbi_ddp_ppod_set()
1278 cpu_to_be64(gl->phys_addr[gidx]) : 0ULL; in cxgbi_ddp_ppod_set()
1292 struct cxgbi_gather_list *gl) in ddp_find_unused_entries() argument
1312 ddp->gl_map[k] = gl; in ddp_find_unused_entries()
1334 struct cxgbi_gather_list *gl) in ddp_gl_unmap() argument
1338 for (i = 0; i < gl->nelem; i++) in ddp_gl_unmap()
1339 dma_unmap_page(&pdev->dev, gl->phys_addr[i], PAGE_SIZE, in ddp_gl_unmap()
1344 struct cxgbi_gather_list *gl) in ddp_gl_map() argument
1348 for (i = 0; i < gl->nelem; i++) { in ddp_gl_map()
1349 gl->phys_addr[i] = dma_map_page(&pdev->dev, gl->pages[i], 0, in ddp_gl_map()
1352 if (unlikely(dma_mapping_error(&pdev->dev, gl->phys_addr[i]))) { in ddp_gl_map()
1355 i, gl->pages[i], pdev); in ddp_gl_map()
1362 unsigned int nelem = gl->nelem; in ddp_gl_map()
1364 gl->nelem = i; in ddp_gl_map()
1365 ddp_gl_unmap(pdev, gl); in ddp_gl_map()
1366 gl->nelem = nelem; in ddp_gl_map()
1371 static void ddp_release_gl(struct cxgbi_gather_list *gl, in ddp_release_gl() argument
1374 ddp_gl_unmap(pdev, gl); in ddp_release_gl()
1375 kfree(gl); in ddp_release_gl()
1384 struct cxgbi_gather_list *gl; in ddp_make_gl() local
1400 gl = kzalloc(sizeof(struct cxgbi_gather_list) + in ddp_make_gl()
1403 if (!gl) { in ddp_make_gl()
1412 gl->pages = (struct page **)&gl->phys_addr[npages]; in ddp_make_gl()
1413 gl->nelem = npages; in ddp_make_gl()
1414 gl->length = xferlen; in ddp_make_gl()
1415 gl->offset = sgoffset; in ddp_make_gl()
1416 gl->pages[0] = sgpage; in ddp_make_gl()
1438 if (j == gl->nelem || sg->offset) { in ddp_make_gl()
1441 j, gl->nelem, sg->offset); in ddp_make_gl()
1444 gl->pages[j] = page; in ddp_make_gl()
1450 gl->nelem = ++j; in ddp_make_gl()
1452 if (ddp_gl_map(pdev, gl) < 0) in ddp_make_gl()
1455 return gl; in ddp_make_gl()
1458 kfree(gl); in ddp_make_gl()
1470 struct cxgbi_gather_list *gl = ddp->gl_map[idx]; in ddp_tag_release() local
1473 if (!gl || !gl->nelem) { in ddp_tag_release()
1475 tag, idx, gl, gl ? gl->nelem : 0); in ddp_tag_release()
1478 npods = (gl->nelem + PPOD_PAGES_MAX - 1) >> PPOD_PAGES_SHIFT; in ddp_tag_release()
1484 ddp_release_gl(gl, ddp->pdev); in ddp_tag_release()
1490 u32 sw_tag, u32 *tagp, struct cxgbi_gather_list *gl, in ddp_tag_reserve() argument
1502 npods = (gl->nelem + PPOD_PAGES_MAX - 1) >> PPOD_PAGES_SHIFT; in ddp_tag_reserve()
1505 npods, gl); in ddp_tag_reserve()
1509 gl); in ddp_tag_reserve()
1513 npods, gl); in ddp_tag_reserve()
1519 gl->length, gl->nelem, npods); in ddp_tag_reserve()
1529 hdr.max_offset = htonl(gl->length); in ddp_tag_reserve()
1530 hdr.page_offset = htonl(gl->offset); in ddp_tag_reserve()
1532 err = cdev->csk_ddp_set(csk, &hdr, idx, npods, gl); in ddp_tag_reserve()
1539 gl->length, gl->nelem, gl->offset, tid, sw_tag, tag, idx, in ddp_tag_reserve()
1555 struct cxgbi_gather_list *gl; in cxgbi_ddp_reserve() local
1571 gl = ddp_make_gl(xferlen, sgl, sgcnt, cdev->pdev, gfp); in cxgbi_ddp_reserve()
1572 if (!gl) in cxgbi_ddp_reserve()
1575 err = ddp_tag_reserve(csk, csk->tid, sw_tag, tagp, gl, gfp); in cxgbi_ddp_reserve()
1577 ddp_release_gl(gl, cdev->pdev); in cxgbi_ddp_reserve()
1593 struct cxgbi_gather_list *gl = ddp->gl_map[i]; in ddp_destroy() local
1595 if (gl) { in ddp_destroy()
1596 int npods = (gl->nelem + PPOD_PAGES_MAX - 1) in ddp_destroy()
1599 kfree(gl); in ddp_destroy()