* [PATCH] UML - Network driver fixes
@ 2004-09-17 5:17 Jeff Dike
0 siblings, 0 replies; only message in thread
From: Jeff Dike @ 2004-09-17 5:17 UTC (permalink / raw)
To: akpm; +Cc: linux-kernel
This is from Gerd Knorr. It fixes a network hang caused by the host side
of an interface being full when the UML interface is brought up, preventing
any SIGIOs from happening. It also implements an ioctl needed for ethtool.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Index: 2.6.9-rc2/arch/um/drivers/net_kern.c
===================================================================
--- 2.6.9-rc2.orig/arch/um/drivers/net_kern.c 2004-09-16 22:59:06.000000000 -0400
+++ 2.6.9-rc2/arch/um/drivers/net_kern.c 2004-09-16 23:34:32.000000000 -0400
@@ -19,6 +19,8 @@
#include "linux/inetdevice.h"
#include "linux/ctype.h"
#include "linux/bootmem.h"
+#include "linux/ethtool.h"
+#include "asm/uaccess.h"
#include "user_util.h"
#include "kern_util.h"
#include "net_kern.h"
@@ -127,6 +129,13 @@
spin_lock(&opened_lock);
list_add(&lp->list, &opened);
spin_unlock(&opened_lock);
+
+ /* clear buffer - it can happen that the host side of the interface
+ * is full when we get here. In this case, new data is never queued,
+ * SIGIOs never arrive, and the net never works.
+ */
+ while((err = uml_net_rx(dev)) > 0) ;
+
out:
spin_unlock(&lp->lock);
return(err);
@@ -240,7 +249,30 @@
static int uml_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
{
- return(-EINVAL);
+ static const struct ethtool_drvinfo info = {
+ .cmd = ETHTOOL_GDRVINFO,
+ .driver = "uml virtual ethernet",
+ .version = "42",
+ };
+ void *useraddr;
+ u32 ethcmd;
+
+ switch (cmd) {
+ case SIOCETHTOOL:
+ useraddr = ifr->ifr_data;
+ if (copy_from_user(ðcmd, useraddr, sizeof(ethcmd)))
+ return -EFAULT;
+ switch (ethcmd) {
+ case ETHTOOL_GDRVINFO:
+ if (copy_to_user(useraddr, &info, sizeof(info)))
+ return -EFAULT;
+ return 0;
+ default:
+ return -EOPNOTSUPP;
+ }
+ default:
+ return -EINVAL;
+ }
}
void uml_net_user_timer_expire(unsigned long _conn)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-09-17 4:16 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-09-17 5:17 [PATCH] UML - Network driver fixes Jeff Dike
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®