On Thursday 19 February 2009 01:35:43 Dominique Leuenberger wrote:
> >>> On 2/19/2009 at 10:06 AM, "Dominique Leuenberger"
>
> <[email protected]> wrote:
> > Hi,
> >
> > Just downloaded the latest tarball and trying to build the new rpms for
> > openSUSE. So far no luck. the vmxnet module seems not to be building
> > anymore:
> >
> > Build error:
> > + make -C /usr/src/linux-obj/i586/debug modules
> > M=/usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet VM_CCVER=4.3
> > HEADER_DIR=/usr/src/linux-obj/i386/default/include
> > SRCROOT=/usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet
> > make: Entering directory `/usr/src/linux-2.6.29-rc5-1-obj/i386/debug'
> > make -C ../../../linux-2.6.29-rc5-1
> > O=/usr/src/linux-2.6.29-rc5-1-obj/i386/debug/. modules
> > Using 2.6.x kernel build system.
> > CC [M] /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet/vmxnet.o
>
> Skipping vmxnet and testing what else happens, I also run into issues
> compiling vmxnet3:
>
> make: Entering directory `/usr/src/linux-2.6.29-rc5-1-obj/i386/debug'
> make -C ../../../linux-2.6.29-rc5-1
> O=/usr/src/linux-2.6.29-rc5-1-obj/i386/debug/. modules Using 2.6.x kernel
> build system.
> CC [M] /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.o
> /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.c: In
> function 'vmxnet3_poll':
> /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.c:389:
> warning: passing argument 1 of 'netif_rx_complete' from incompatible
> pointer type
> /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.c:389:
> error: too many arguments to function 'netif_rx_complete'
> /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.c: In
> function 'vmxnet3_intr':
> /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.c:455:
> error: 'struct net_device' has no member named 'priv'
> /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.c:471:
> warning: passing argument 1 of 'netif_rx_schedule' from incompatible
> pointer type
> /usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.c:471:
> error: too many arguments to function 'netif_rx_schedule' make[3]: ***
> [/usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3/vmxnet3.o] Error 1
> make[2]: ***
> [_module_/usr/src/packages/BUILD/obj/debug/modules/linux/vmxnet3] Error 2
> make[1]: *** [sub-make] Error 2
> make: *** [all] Error 2
> make: Leaving directory `/usr/src/linux-2.6.29-rc5-1-obj/i386/debug'
> error: Bad exit status from /var/tmp/rpm-tmp.49505 (%build)
>
Dominique,
The following patch should help with vmxnet3 compilation. I rediffed it
against the 2009.02.18 release so it should apply better than the vmxnet
patch.
--
Dmitry
diff -urN a/modules/linux/vmxnet3/autoconf/netif_num_params.c
b/modules/linux/vmxnet3/autoconf/netif_num_params.c
--- a/modules/linux/vmxnet3/autoconf/netif_num_params.c 1969-12-31
16:00:00.000000000 -0800
+++ b/modules/linux/vmxnet3/autoconf/netif_num_params.c 2009-02-23
11:24:00.000000000 -0800
@@ -0,0 +1,37 @@
+/*********************************************************
+ * Copyright (C) 2009 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2 and no later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ *********************************************************/
+
+/*
+ * Detect whether netif_rx_complete (and netif_rx_schedule) take a single
+ * napi_struct argument. The foundation was laid whith introducing Generic
+ * Receive Offload infrastructure but sropping unneeded net_device argument
+ * did not happen till few commits later so we can't simply test for presence
+ * of NETIF_F_GRO.
+ */
+
+#include <linux/autoconf.h>
+#include <linux/netdevice.h>
+
+#ifndef NETIF_F_GRO
+# error This compile test intentionally fails.
+#endif
+
+void test_netif_rx_complete(struct napi_struct *napi)
+{
+ netif_rx_complete(napi);
+}
diff -urN a/modules/linux/vmxnet3/compat_netdevice.h
b/modules/linux/vmxnet3/compat_netdevice.h
--- a/modules/linux/vmxnet3/compat_netdevice.h 2009-02-18 00:02:40.000000000
-0800
+++ b/modules/linux/vmxnet3/compat_netdevice.h 2009-02-23 11:24:00.000000000
-0800
@@ -178,6 +178,23 @@
# define compat_netdev_priv(netdev) netdev_priv(netdev)
#endif
+/*
+ * All compat_* business is good but when we can we should just provide
+ * missing implementation to ease upstreaming task.
+ */
+#ifndef HAVE_ALLOC_NETDEV
+#define alloc_netdev(sz, name, setup) compat_alloc_netdev(sz, name, setup)
+#define alloc_etherdev(sz) compat_alloc_etherdev(sz)
+#endif
+
+#ifndef HAVE_FREE_NETDEV
+#define free_netdev(dev) kfree(dev)
+#endif
+
+#ifndef HAVE_NETDEV_PRIV
+#define netdev_priv(dev) ((dev)->priv)
+#endif
+
#if defined(NETDEV_TX_OK)
# define COMPAT_NETDEV_TX_OK NETDEV_TX_OK
# define COMPAT_NETDEV_TX_BUSY NETDEV_TX_BUSY
@@ -186,55 +203,56 @@
# define COMPAT_NETDEV_TX_BUSY 1
#endif
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,43))
+#ifndef HAVE_NETIF_QUEUE
static inline void
-compat_netif_start_queue(struct device *dev)
+netif_start_queue(struct device *dev)
{
clear_bit(0, &dev->tbusy);
}
static inline void
-compat_netif_stop_queue(struct device *dev)
+netif_stop_queue(struct device *dev)
{
set_bit(0, &dev->tbusy);
}
static inline int
-compat_netif_queue_stopped(struct device *dev)
+netif_queue_stopped(struct device *dev)
{
return test_bit(0, &dev->tbusy);
}
static inline void
-compat_netif_wake_queue(struct device *dev)
+netif_wake_queue(struct device *dev)
{
clear_bit(0, &dev->tbusy);
mark_bh(NET_BH);
}
static inline int
-compat_netif_running(struct device *dev)
+netif_running(struct device *dev)
{
return dev->start == 0;
}
static inline int
-compat_netif_carrier_ok(struct device *dev)
+netif_carrier_ok(struct device *dev)
{
return 1;
}
static inline void
-compat_netif_carrier_on(struct device *dev)
+netif_carrier_on(struct device *dev)
{
}
static inline void
-compat_netif_carrier_off(struct device *dev)
+netif_carrier_off(struct device *dev)
{
}
+#endif
-#else
+/* Keep compat_* defines for now */
#define compat_netif_start_queue(dev) netif_start_queue(dev)
#define compat_netif_stop_queue(dev) netif_stop_queue(dev)
#define compat_netif_queue_stopped(dev) netif_queue_stopped(dev)
@@ -243,7 +261,6 @@
#define compat_netif_carrier_ok(dev) netif_carrier_ok(dev)
#define compat_netif_carrier_on(dev) netif_carrier_on(dev)
#define compat_netif_carrier_off(dev) netif_carrier_off(dev)
-#endif
/* unregister_netdevice_notifier was not safe prior to 2.6.17 */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 17) && \
@@ -266,7 +283,15 @@
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 24)
#define compat_netif_napi_add(dev, napi, poll, quota) \
netif_napi_add(dev, napi, poll, quota)
+
+#ifdef VMW_NETIF_SINGLE_NAPI_PARM
+#define compat_netif_rx_complete(dev, napi) netif_rx_complete(napi)
+#define compat_netif_rx_schedule(dev, napi) netif_rx_schedule(napi)
+#else
+#define compat_netif_rx_complete(dev, napi) netif_rx_complete(dev, napi)
#define compat_netif_rx_schedule(dev, napi) netif_rx_schedule(dev, napi)
+#endif
+
#define compat_napi_enable(dev, napi) napi_enable(napi)
#define compat_napi_disable(dev, napi) napi_disable(napi)
#else
diff -urN a/modules/linux/vmxnet3/Makefile.kernel
b/modules/linux/vmxnet3/Makefile.kernel
--- a/modules/linux/vmxnet3/Makefile.kernel 2009-02-18 00:02:40.000000000
-0800
+++ b/modules/linux/vmxnet3/Makefile.kernel 2009-02-23 11:24:00.000000000
-0800
@@ -26,6 +26,7 @@
EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/skblin.c,
-DVMW_SKB_LINEARIZE_2618, )
+EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/netif_num_params.c,
-DVMW_NETIF_SINGLE_NAPI_PARM, )
obj-m += $(DRIVER).o
diff -urN a/modules/linux/vmxnet3/Makefile.normal
b/modules/linux/vmxnet3/Makefile.normal
--- a/modules/linux/vmxnet3/Makefile.normal 2009-02-18 00:02:40.000000000
-0800
+++ b/modules/linux/vmxnet3/Makefile.normal 2009-02-23 11:24:00.000000000
-0800
@@ -61,6 +61,7 @@
| sed -n -e 's!^APATH!-I$(HEADER_DIR)/asm!p')
CC_OPTS += $(call vm_check_build, $(SRCROOT)/autoconf/skblin.c,
-DVMW_SKB_LINEARIZE_2618, )
+CC_OPTS += $(call vm_check_build, $(SRCROOT)/autoconf/netif_num_params.c,
-DVMW_NETIF_SINGLE_NAPI_PARM, )
OBJS := vmxnet3.o
diff -urN a/modules/linux/vmxnet3/vmxnet3.c b/modules/linux/vmxnet3/vmxnet3.c
--- a/modules/linux/vmxnet3/vmxnet3.c 2009-02-18 00:02:40.000000000 -0800
+++ b/modules/linux/vmxnet3/vmxnet3.c 2009-02-23 11:24:00.000000000 -0800
@@ -155,7 +155,7 @@
#endif
};
-static int disable_lro = 0;
+static int disable_lro;
/*
*----------------------------------------------------------------------------
@@ -381,12 +381,11 @@
{
struct vmxnet3_adapter *adapter = container_of(napi, struct
vmxnet3_adapter, napi);
int rxd_done, txd_done;
- struct net_device *netdev = adapter->netdev;
vmxnet3_do_poll(adapter, budget, &txd_done, &rxd_done);
if (rxd_done < budget) {
- netif_rx_complete(netdev, napi);
+ compat_netif_rx_complete(adapter->netdev, napi);
vmxnet3_enable_intr(adapter, 0);
}
return rxd_done;
@@ -410,7 +409,7 @@
vmxnet3_poll(struct net_device *poll_dev, int *budget)
{
int rxd_done, txd_done, quota;
- struct vmxnet3_adapter *adapter = poll_dev->priv;
+ struct vmxnet3_adapter *adapter = netdev_priv(poll_dev);
quota = min(*budget, poll_dev->quota);
@@ -452,7 +451,7 @@
#endif
{
struct net_device *dev = dev_id;
- struct vmxnet3_adapter *adapter = dev->priv;
+ struct vmxnet3_adapter *adapter = netdev_priv(dev);
if (UNLIKELY(adapter->intr.type == VMXNET3_IT_INTX)) {
uint32 icr = VMXNET3_READ_BAR1_REG(adapter, VMXNET3_REG_ICR);
@@ -468,7 +467,7 @@
vmxnet3_disable_intr(adapter, 0);
}
- compat_netif_rx_schedule(dev, &adapter->napi);
+ compat_netif_rx_schedule(dev, &adapter->napi);
#else
vmxnet3_tq_tx_complete(&adapter->tx_queue, adapter);
diff -urN a/modules/linux/vmxnet3/vmxnet3_version.h
b/modules/linux/vmxnet3/vmxnet3_version.h
--- a/modules/linux/vmxnet3/vmxnet3_version.h 2009-02-18 00:02:40.000000000
-0800
+++ b/modules/linux/vmxnet3/vmxnet3_version.h 2009-02-23 11:23:59.000000000
-0800
@@ -25,11 +25,11 @@
#ifndef _VMXNET3_VERSION_H_
#define _VMXNET3_VERSION_H_
-#define VMXNET3_DRIVER_VERSION 1.0.0.32
-#define VMXNET3_DRIVER_VERSION_COMMAS 1,0,0,32
-#define VMXNET3_DRIVER_VERSION_STRING "1.0.0.32"
+#define VMXNET3_DRIVER_VERSION 1.0.0.33
+#define VMXNET3_DRIVER_VERSION_COMMAS 1,0,0,33
+#define VMXNET3_DRIVER_VERSION_STRING "1.0.0.33"
/* a 32-bit int, each byte encode a verion number in VMXNET3_DRIVER_VERSION */
-#define VMXNET3_DRIVER_VERSION_NUM 0x01000020
+#define VMXNET3_DRIVER_VERSION_NUM 0x01000021
#endif /* _VMXNET3_VERSION_H_ */
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
open-vm-tools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/open-vm-tools-devel