[vbox-dev] Source change for kernels after 2.6.30

Larry Finger Larry.Finger at lwfinger.net
Sat Jun 20 22:08:21 GMT 2009


The 2.6.30 kernel prints the warning

vboxnet0 (): not using net_device_ops yet

This warning has not been fixed, which results in a compilation error
for 2.6.31 kernels. The fix is as follows:

Index: src/vboxnetflt/linux/VBoxNetFlt-linux.c
===================================================================
--- src.orig/vboxnetflt/linux/VBoxNetFlt-linux.c
+++ src/vboxnetflt/linux/VBoxNetFlt-linux.c
@@ -214,6 +214,15 @@ static int vboxNetAdpValidateAddr(struct
     return -EADDRNOTAVAIL;
 } */

+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
+static const struct net_device_ops vbox_netdev_ops = {
+       .ndo_open = vboxNetAdpOpen,
+       .ndo_stop = vboxNetAdpStop,
+       .ndo_start_xmit = vboxNetAdpXmit,
+       .ndo_get_stats = vboxNetAdpGetStats,
+};
+#endif
+
 static void vboxNetAdpNetDevInit(struct net_device *pNetDev)
 {
     PVBOXNETADPPRIV pPriv;
@@ -222,10 +231,14 @@ static void vboxNetAdpNetDevInit(struct
     /// @todo Use Sun vendor id
     memcpy(pNetDev->dev_addr, "\0vbnet", ETH_ALEN);
     Log(("vboxNetAdpNetDevInit: pNetDev->dev_addr = %.6Rhxd\n",
pNetDev->dev_addr));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 30)
+    pNetDev->netdev_ops = &vbox_netdev_ops;
+#else
     pNetDev->open = vboxNetAdpOpen;
     pNetDev->stop = vboxNetAdpStop;
     pNetDev->hard_start_xmit = vboxNetAdpXmit;
     pNetDev->get_stats = vboxNetAdpGetStats;
+#endif
     //pNetDev->validate_addr = vboxNetAdpValidateAddr;
 /*    pNetDev-> = vboxNetAdp;
     pNetDev-> = vboxNetAdp;

---

Larry





More information about the vbox-dev mailing list