aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Vrabel <david.vrabel@citrix.com>2016-10-11 11:48:27 -0400
committerDavid S. Miller <davem@davemloft.net>2016-10-13 10:20:58 -0400
commitd1ef006dc116bf6487426b0b50c1bf2bf51e6423 (patch)
tree8192b6e1799044721cf99d86739b6353b90da178
parent02a9079c66341836c4914c33c06a73245060df2e (diff)
xen-netback: fix guest Rx stall detection (after guest Rx refactor)
If a VIF has been ready for rx_stall_timeout (60s by default) and an Rx ring is drained of all requests an Rx stall will be incorrectly detected. When this occurs and the guest Rx queue is empty, the Rx ring's event index will not be set and the frontend will not raise an event when new requests are placed on the ring, permanently stalling the VIF. This is a regression introduced by eb1723a29b9a7 (xen-netback: refactor guest rx). Fix this by reinstating the setting of queue->last_rx_time when placing a packet onto the guest Rx ring. Signed-off-by: David Vrabel <david.vrabel@citrix.com> Reviewed-by: Paul Durrant <paul.durrant@citrix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/xen-netback/rx.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/xen-netback/rx.c b/drivers/net/xen-netback/rx.c
index 8e9ade6ccf18..d69f2a92063c 100644
--- a/drivers/net/xen-netback/rx.c
+++ b/drivers/net/xen-netback/rx.c
@@ -425,6 +425,8 @@ void xenvif_rx_skb(struct xenvif_queue *queue)
425 425
426 xenvif_rx_next_skb(queue, &pkt); 426 xenvif_rx_next_skb(queue, &pkt);
427 427
428 queue->last_rx_time = jiffies;
429
428 do { 430 do {
429 struct xen_netif_rx_request *req; 431 struct xen_netif_rx_request *req;
430 struct xen_netif_rx_response *rsp; 432 struct xen_netif_rx_response *rsp;