diff options
| author | Jeferson <jroliveira.oliveira301@gmail.com> | 2022-01-17 20:41:28 +0100 |
|---|---|---|
| committer | Jeferson <jroliveira.oliveira301@gmail.com> | 2022-01-17 20:41:28 +0100 |
| commit | 4500a44912050294ffa168cea9707ebe4c7e466f (patch) | |
| tree | 29cec3bd89ed0702e0f84cb0f1a996a01605e937 /drivers/net/xen-netback/netback.c | |
| parent | 1904adc0bb37e30c472eccb7bbe5e724d7cc2595 (diff) | |
| parent | b0ee52316847cf279a1028334117985a5d633c0c (diff) | |
Merge tag 'v4.4.299' of https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux into s12.0s12.0
This is the 4.4.299 stable release
Change-Id: I331944da7c34652c67c588856c491a5edcf37adf
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
| -rw-r--r-- | drivers/net/xen-netback/netback.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index 15c73ebe5efc..044478c9adad 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c @@ -189,11 +189,15 @@ void xenvif_rx_queue_tail(struct xenvif_queue *queue, struct sk_buff *skb) spin_lock_irqsave(&queue->rx_queue.lock, flags); - __skb_queue_tail(&queue->rx_queue, skb); - - queue->rx_queue_len += skb->len; - if (queue->rx_queue_len > queue->rx_queue_max) + if (queue->rx_queue_len >= queue->rx_queue_max) { netif_tx_stop_queue(netdev_get_tx_queue(queue->vif->dev, queue->id)); + kfree_skb(skb); + queue->vif->dev->stats.rx_dropped++; + } else { + __skb_queue_tail(&queue->rx_queue, skb); + + queue->rx_queue_len += skb->len; + } spin_unlock_irqrestore(&queue->rx_queue.lock, flags); } @@ -243,6 +247,7 @@ static void xenvif_rx_queue_drop_expired(struct xenvif_queue *queue) break; xenvif_rx_dequeue(queue); kfree_skb(skb); + queue->vif->dev->stats.rx_dropped++; } } |
