|
@@ -740,6 +740,7 @@ struct sk_buff *skb_from_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
|
|
|
void *va, *data;
|
|
|
u16 rx_headroom = rq->rx_headroom;
|
|
|
bool consumed;
|
|
|
+ u32 frag_size;
|
|
|
|
|
|
di = &rq->dma_info[wqe_counter];
|
|
|
va = page_address(di->page);
|
|
@@ -764,7 +765,8 @@ struct sk_buff *skb_from_cqe(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe,
|
|
|
if (consumed)
|
|
|
return NULL; /* page/packet was consumed by XDP */
|
|
|
|
|
|
- skb = build_skb(va, RQ_PAGE_SIZE(rq));
|
|
|
+ frag_size = MLX5_SKB_FRAG_SZ(rx_headroom + cqe_bcnt);
|
|
|
+ skb = build_skb(va, frag_size);
|
|
|
if (unlikely(!skb)) {
|
|
|
rq->stats.buff_alloc_err++;
|
|
|
mlx5e_page_release(rq, di, true);
|