mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
virtio-net: make rx buf size estimation works for XDP
We don't update ewma rx buf size in the case of XDP. This will lead underestimation of rx buf size which causes host to produce more than one buffers. This will greatly increase the possibility of XDP page linearization. Cc: John Fastabend <john.r.fastabend@intel.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Acked-by: John Fastabend <john.r.fastabend@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b00f70b0da
commit
5c33474d41
@ -584,10 +584,12 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
|
||||
put_page(page);
|
||||
head_skb = page_to_skb(vi, rq, xdp_page,
|
||||
0, len, PAGE_SIZE);
|
||||
ewma_pkt_len_add(&rq->mrg_avg_pkt_len, len);
|
||||
return head_skb;
|
||||
}
|
||||
break;
|
||||
case XDP_TX:
|
||||
ewma_pkt_len_add(&rq->mrg_avg_pkt_len, len);
|
||||
if (unlikely(xdp_page != page))
|
||||
goto err_xdp;
|
||||
rcu_read_unlock();
|
||||
@ -596,6 +598,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
|
||||
default:
|
||||
if (unlikely(xdp_page != page))
|
||||
__free_pages(xdp_page, 0);
|
||||
ewma_pkt_len_add(&rq->mrg_avg_pkt_len, len);
|
||||
goto err_xdp;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user