Lines Matching refs:fq
68 static bool libeth_rx_page_pool_params(struct libeth_fq *fq, in libeth_rx_page_pool_params() argument
76 switch (fq->type) { in libeth_rx_page_pool_params()
78 fq->buf_len = libeth_rx_hw_len_mtu(pp, fq->buf_len); in libeth_rx_page_pool_params()
81 fq->buf_len = libeth_rx_hw_len_truesize(pp, fq->buf_len, in libeth_rx_page_pool_params()
82 fq->truesize); in libeth_rx_page_pool_params()
85 fq->buf_len = ALIGN(LIBETH_MAX_HEAD, LIBETH_RX_BUF_STRIDE); in libeth_rx_page_pool_params()
92 fq->truesize = roundup_pow_of_two(SKB_HEAD_ALIGN(pp->offset + in libeth_rx_page_pool_params()
93 fq->buf_len)); in libeth_rx_page_pool_params()
112 static bool libeth_rx_page_pool_params_zc(struct libeth_fq *fq, in libeth_rx_page_pool_params_zc() argument
120 switch (fq->type) { in libeth_rx_page_pool_params_zc()
125 mtu = fq->truesize; in libeth_rx_page_pool_params_zc()
132 max = min(rounddown_pow_of_two(fq->buf_len ? : U32_MAX), in libeth_rx_page_pool_params_zc()
135 fq->buf_len = clamp(mtu, LIBETH_RX_BUF_STRIDE, max); in libeth_rx_page_pool_params_zc()
136 fq->truesize = fq->buf_len; in libeth_rx_page_pool_params_zc()
148 int libeth_rx_fq_create(struct libeth_fq *fq, struct napi_struct *napi) in libeth_rx_fq_create() argument
153 .pool_size = fq->count, in libeth_rx_fq_create()
154 .nid = fq->nid, in libeth_rx_fq_create()
164 if (!fq->hsplit) in libeth_rx_fq_create()
165 ret = libeth_rx_page_pool_params(fq, &pp); in libeth_rx_fq_create()
167 ret = libeth_rx_page_pool_params_zc(fq, &pp); in libeth_rx_fq_create()
175 fqes = kvcalloc_node(fq->count, sizeof(*fqes), GFP_KERNEL, fq->nid); in libeth_rx_fq_create()
179 fq->fqes = fqes; in libeth_rx_fq_create()
180 fq->pp = pool; in libeth_rx_fq_create()
195 void libeth_rx_fq_destroy(struct libeth_fq *fq) in libeth_rx_fq_destroy() argument
197 kvfree(fq->fqes); in libeth_rx_fq_destroy()
198 page_pool_destroy(fq->pp); in libeth_rx_fq_destroy()