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: