Lines Matching defs:gl
1359 * @gl: the gather list
1364 void t4vf_pktgl_free(const struct pkt_gl *gl)
1368 frag = gl->nfrags - 1;
1370 put_page(gl->frags[frag].page);
1376 * @gl: source internal packet gather list
1383 const struct pkt_gl *gl,
1389 si->frags[0].page = gl->frags[0].page;
1390 si->frags[0].page_offset = gl->frags[0].page_offset + offset;
1391 si->frags[0].size = gl->frags[0].size - offset;
1392 si->nr_frags = gl->nfrags;
1394 n = gl->nfrags - 1;
1396 memcpy(&si->frags[1], &gl->frags[1], n * sizeof(skb_frag_t));
1399 get_page(gl->frags[n].page);
1405 * @gl: gather list for ingress packet
1411 static void do_gro(struct sge_eth_rxq *rxq, const struct pkt_gl *gl,
1419 t4vf_pktgl_free(gl);
1424 copy_frags(skb_shinfo(skb), gl, PKTSHIFT);
1425 skb->len = gl->tot_len - PKTSHIFT;
1457 * @gl: the gather list of packet fragments
1462 const struct pkt_gl *gl)
1479 do_gro(rxq, gl, pkt);
1491 skb = alloc_skb(gl->frags[0].size, GFP_ATOMIC);
1494 __skb_put(skb, gl->frags[0].size);
1495 skb_copy_to_linear_data(skb, gl->va, gl->frags[0].size);
1501 skb_copy_to_linear_data(skb, gl->va, RX_PKT_PULL_LEN);
1504 ssi->frags[0].page = gl->frags[0].page;
1505 ssi->frags[0].page_offset = (gl->frags[0].page_offset +
1507 ssi->frags[0].size = gl->frags[0].size - RX_PKT_PULL_LEN;
1508 if (gl->nfrags > 1)
1509 memcpy(&ssi->frags[1], &gl->frags[1],
1510 (gl->nfrags-1) * sizeof(skb_frag_t));
1511 ssi->nr_frags = gl->nfrags;
1517 get_page(gl->frags[gl->nfrags - 1].page);
1555 t4vf_pktgl_free(gl);
1576 * @gl: the packet gather list
1594 static void restore_rx_bufs(const struct pkt_gl *gl, struct sge_fl *fl,
1605 sdesc->page = gl->frags[frags].page;
1661 struct pkt_gl gl;
1687 for (frag = 0, fp = gl.frags; /**/; frag++, fp++) {
1700 gl.nfrags = frag+1;
1710 gl.va = (page_address(gl.frags[0].page) +
1711 gl.frags[0].page_offset);
1712 prefetch(gl.va);
1718 ret = rspq->handler(rspq, rspq->cur_desc, &gl);
1722 restore_rx_bufs(&gl, &rxq->fl, frag);