[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#596635: linux-image-2.6.32-5-xen-amd64: Xen vif bridge failure / netfront smartpoll bugfix



On Sun, Sep 12, 2010 at 04:45:44PM -0700, Gerald Turner wrote:
> Hello, I have been experiencing random bridge failures with Xen domU's.

Presently I'm using this patch on top of -22
From: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Date: Fri, 10 Sep 2010 01:01:49 +0000 (+1000)
Subject: xen/netfront: make smartpoll optional, and default off
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fjeremy%2Fxen.git;a=commitdiff_plain;h=d2312863e180f8058533776c0b78da6fed0c2346;hp=8b82e08a605d492142dc8d9541a0935342f0b683

xen/netfront: make smartpoll optional, and default off

Smartpoll seems to have some reliability problems, so make it default
to off for now.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
---

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index 1a2811e..6426bb81 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -53,6 +53,10 @@
 
 static const struct ethtool_ops xennet_ethtool_ops;
 
+static int use_smartpoll = 0;
+module_param(use_smartpoll, int, 0600);
+MODULE_PARM_DESC (use_smartpoll, "Use smartpoll mechanism if available");
+
 struct netfront_cb {
 	struct page *page;
 	unsigned offset;
@@ -1538,7 +1542,7 @@ again:
 		goto abort_transaction;
 	}
 
-	err = xenbus_printf(xbt, dev->nodename, "feature-smart-poll", "%d", 1);
+	err = xenbus_printf(xbt, dev->nodename, "feature-smart-poll", "%d", use_smartpoll);
 	if (err) {
 		message = "writing feature-smart-poll";
 		goto abort_transaction;
@@ -1631,11 +1635,14 @@ static int xennet_connect(struct net_device *dev)
 		return -ENODEV;
 	}
 
-	err = xenbus_scanf(XBT_NIL, np->xbdev->otherend,
-			   "feature-smart-poll", "%u",
-			   &np->smart_poll.feature_smart_poll);
-	if (err != 1)
-		np->smart_poll.feature_smart_poll = 0;
+	np->smart_poll.feature_smart_poll = 0;
+	if (use_smartpoll) {
+		err = xenbus_scanf(XBT_NIL, np->xbdev->otherend,
+				   "feature-smart-poll", "%u",
+				   &np->smart_poll.feature_smart_poll);
+		if (err != 1)
+			np->smart_poll.feature_smart_poll = 0;
+	}
 
 	if (np->smart_poll.feature_smart_poll) {
 		hrtimer_init(&np->smart_poll.timer, CLOCK_MONOTONIC,

Reply to: