diff options
Diffstat (limited to 'drivers/net/virtio_net.c')
-rw-r--r-- | drivers/net/virtio_net.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 3e9246cc49c3..a871f45ecc79 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -869,7 +869,7 @@ static unsigned int get_mergeable_buf_len(struct receive_queue *rq, | |||
869 | unsigned int len; | 869 | unsigned int len; |
870 | 870 | ||
871 | len = hdr_len + clamp_t(unsigned int, ewma_pkt_len_read(avg_pkt_len), | 871 | len = hdr_len + clamp_t(unsigned int, ewma_pkt_len_read(avg_pkt_len), |
872 | rq->min_buf_len - hdr_len, PAGE_SIZE - hdr_len); | 872 | rq->min_buf_len, PAGE_SIZE - hdr_len); |
873 | return ALIGN(len, L1_CACHE_BYTES); | 873 | return ALIGN(len, L1_CACHE_BYTES); |
874 | } | 874 | } |
875 | 875 | ||
@@ -2144,7 +2144,8 @@ static unsigned int mergeable_min_buf_len(struct virtnet_info *vi, struct virtqu | |||
2144 | unsigned int buf_len = hdr_len + ETH_HLEN + VLAN_HLEN + packet_len; | 2144 | unsigned int buf_len = hdr_len + ETH_HLEN + VLAN_HLEN + packet_len; |
2145 | unsigned int min_buf_len = DIV_ROUND_UP(buf_len, rq_size); | 2145 | unsigned int min_buf_len = DIV_ROUND_UP(buf_len, rq_size); |
2146 | 2146 | ||
2147 | return max(min_buf_len, hdr_len); | 2147 | return max(max(min_buf_len, hdr_len) - hdr_len, |
2148 | (unsigned int)GOOD_PACKET_LEN); | ||
2148 | } | 2149 | } |
2149 | 2150 | ||
2150 | static int virtnet_find_vqs(struct virtnet_info *vi) | 2151 | static int virtnet_find_vqs(struct virtnet_info *vi) |