Lines Matching refs:fq
72 static bool libeth_rx_page_pool_params(struct libeth_fq *fq, in libeth_rx_page_pool_params() argument
75 pp->offset = fq->xdp ? LIBETH_XDP_HEADROOM : LIBETH_SKB_HEADROOM; in libeth_rx_page_pool_params()
80 switch (fq->type) { in libeth_rx_page_pool_params()
82 fq->buf_len = libeth_rx_hw_len_mtu(pp, fq->buf_len); in libeth_rx_page_pool_params()
85 fq->buf_len = libeth_rx_hw_len_truesize(pp, fq->buf_len, in libeth_rx_page_pool_params()
86 fq->truesize); in libeth_rx_page_pool_params()
89 fq->buf_len = ALIGN(LIBETH_MAX_HEAD, LIBETH_RX_BUF_STRIDE); in libeth_rx_page_pool_params()
96 fq->truesize = roundup_pow_of_two(SKB_HEAD_ALIGN(pp->offset + in libeth_rx_page_pool_params()
97 fq->buf_len)); in libeth_rx_page_pool_params()
116 static bool libeth_rx_page_pool_params_zc(struct libeth_fq *fq, in libeth_rx_page_pool_params_zc() argument
124 switch (fq->type) { in libeth_rx_page_pool_params_zc()
129 mtu = fq->truesize; in libeth_rx_page_pool_params_zc()
136 max = min(rounddown_pow_of_two(fq->buf_len ? : U32_MAX), in libeth_rx_page_pool_params_zc()
139 fq->buf_len = clamp(mtu, LIBETH_RX_BUF_STRIDE, max); in libeth_rx_page_pool_params_zc()
140 fq->truesize = fq->buf_len; in libeth_rx_page_pool_params_zc()
152 int libeth_rx_fq_create(struct libeth_fq *fq, struct napi_struct *napi) in libeth_rx_fq_create() argument
157 .pool_size = fq->count, in libeth_rx_fq_create()
158 .nid = fq->nid, in libeth_rx_fq_create()
167 pp.dma_dir = fq->xdp ? DMA_BIDIRECTIONAL : DMA_FROM_DEVICE; in libeth_rx_fq_create()
169 if (!fq->hsplit) in libeth_rx_fq_create()
170 ret = libeth_rx_page_pool_params(fq, &pp); in libeth_rx_fq_create()
172 ret = libeth_rx_page_pool_params_zc(fq, &pp); in libeth_rx_fq_create()
180 fqes = kvcalloc_node(fq->count, sizeof(*fqes), GFP_KERNEL, fq->nid); in libeth_rx_fq_create()
190 fq->fqes = fqes; in libeth_rx_fq_create()
191 fq->pp = pool; in libeth_rx_fq_create()
208 void libeth_rx_fq_destroy(struct libeth_fq *fq) in libeth_rx_fq_destroy() argument
210 xdp_unreg_page_pool(fq->pp); in libeth_rx_fq_destroy()
211 kvfree(fq->fqes); in libeth_rx_fq_destroy()
212 page_pool_destroy(fq->pp); in libeth_rx_fq_destroy()