aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/xen-netback/netback.c
diff options
context:
space:
mode:
authorJeferson <jroliveira.oliveira301@gmail.com>2022-01-17 20:41:28 +0100
committerJeferson <jroliveira.oliveira301@gmail.com>2022-01-17 20:41:28 +0100
commit4500a44912050294ffa168cea9707ebe4c7e466f (patch)
tree29cec3bd89ed0702e0f84cb0f1a996a01605e937 /drivers/net/xen-netback/netback.c
parent1904adc0bb37e30c472eccb7bbe5e724d7cc2595 (diff)
parentb0ee52316847cf279a1028334117985a5d633c0c (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.c13
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++;
}
}