diff -urN driverloader-2.48/modules/GPL/netndis.c driverloader-2.48-2.6.31/modules/GPL/netndis.c --- driverloader-2.48/modules/GPL/netndis.c 2009-03-04 10:15:21.000000000 -0500 +++ driverloader-2.48-2.6.31/modules/GPL/netndis.c 2009-09-11 13:27:43.000000000 -0400 @@ -4812,6 +4812,21 @@ }; #endif +#ifdef FOUND_NET_DEVICE_OPS +static const struct net_device_ops netndis_device_ops = { + .ndo_init = netndis_devinit, + .ndo_uninit = netndis_devuninit, + .ndo_start_xmit = netndis_xmit, + .ndo_tx_timeout = netndis_tx_timeout, + .ndo_get_stats = netndis_get_stats, + .ndo_do_ioctl = netndis_ioctl, + .ndo_change_mtu = netndis_change_mtu, + .ndo_set_multicast_list = netndis_set_multicast_list, + .ndo_open = netndis_open, + .ndo_stop = netndis_stop, +}; +#endif + struct net_device *alloc_netndisdev(POS_DEVNODE pDevNode) { struct net_device *dev; @@ -4827,19 +4842,15 @@ memset(dev->name, 0, sizeof(dev->name)); strncpy(dev->name, pDevNode->netDevName[0] ? pDevNode->netDevName : DLDRNETIF, sizeof(dev->name)); +#ifdef FOUND_NET_DEVICE_OPS + dev->netdev_ops = &netndis_device_ops; +#else /* Setup / override net_device fields */ dev->init = netndis_devinit; dev->uninit = netndis_devuninit; dev->hard_start_xmit = netndis_xmit; dev->tx_timeout = netndis_tx_timeout; - dev->watchdog_timeo = 4 * HZ; /* 4 second timeout */ dev->get_stats = netndis_get_stats; -#if IW_HANDLER_VERSION >= 6 - dev->wireless_handlers = &netndis_handler_def; -#endif -#ifndef FOUND_IW_HANDLER_WIRELESS_STATS - dev->get_wireless_stats = netndis_get_wireless_stats; -#endif dev->do_ioctl = netndis_ioctl; dev->change_mtu = netndis_change_mtu; dev->set_multicast_list = netndis_set_multicast_list; @@ -4848,6 +4859,14 @@ /* Set up default callbacks */ dev->open = netndis_open; dev->stop = netndis_stop; +#endif + dev->watchdog_timeo = 4 * HZ; /* 4 second timeout */ +#if IW_HANDLER_VERSION >= 6 + dev->wireless_handlers = &netndis_handler_def; +#endif +#ifndef FOUND_IW_HANDLER_WIRELESS_STATS + dev->get_wireless_stats = netndis_get_wireless_stats; +#endif priv->pDevNode = pDevNode; priv->miniportAdapter = pDevNode->miniportAdapter; @@ -4884,7 +4903,11 @@ struct netndis_private *priv = netdev_priv(dev); /* Make sure it's for a netdevice we currently handle */ +#ifdef FOUND_NET_DEVICE_OPS + if (dev->netdev_ops != &netndis_device_ops) +#else if (dev->init != netndis_devinit) +#endif return NOTIFY_DONE; if (event == NETDEV_CHANGENAME) { diff -urN driverloader-2.48/modules/Makefile driverloader-2.48-2.6.31/modules/Makefile --- driverloader-2.48/modules/Makefile 2009-04-23 10:50:30.000000000 -0400 +++ driverloader-2.48-2.6.31/modules/Makefile 2009-09-11 13:15:42.000000000 -0400 @@ -120,7 +120,7 @@ FOUND_KERNEL_EXECVE := $(shell grep -q 'kernel_execve' ${REAL_KERNELSRC}/include/linux/syscalls.h 2>/dev/null && echo -DFOUND_KERNEL_EXECVE) EXTRA_CFLAGS+= $(FOUND_KERNEL_EXECVE) -FOUND_IW_HANDLER_WIRELESS_STATS := $(shell gcc -E ${REAL_KERNELSRC}/include/net/iw_handler.h -I${REAL_KERNELSRC}/include | grep -q 'get_wireless_stats' 2>/dev/null && echo -DFOUND_IW_HANDLER_WIRELESS_STATS) +FOUND_IW_HANDLER_WIRELESS_STATS := $(shell gcc -E ${REAL_KERNELSRC}/include/net/iw_handler.h -I${REAL_KERNELSRC}/include -I${REAL_KERNELSRC}/arch/${KERNELARCH}/include | grep -q 'get_wireless_stats' 2>/dev/null && echo -DFOUND_IW_HANDLER_WIRELESS_STATS) EXTRA_CFLAGS+= $(FOUND_IW_HANDLER_WIRELESS_STATS) FOUND_SEEK_MODES := $(shell grep -q 'SEEK_SET' ${REAL_KERNELSRC}/include/linux/fs.h 2>/dev/null && echo -DFOUND_SEEK_MODES) @@ -168,6 +168,9 @@ FOUND_DEV_NAME := $(shell grep -q 'dev_name' ${REAL_KERNELSRC}/include/linux/device.h 2>/dev/null && echo -DFOUND_DEV_NAME) EXTRA_CFLAGS+= $(FOUND_DEV_NAME) +FOUND_NET_DEVICE_OPS := $(shell grep -q 'net_device_ops' ${REAL_KERNELSRC}/include/linux/netdevice.h 2>/dev/null && echo -DFOUND_NET_DEVICE_OPS) +EXTRA_CFLAGS+= $(FOUND_NET_DEVICE_OPS) + EXTRA_CFLAGS+= $(if $(filter 2.6.15-1.2054_FC5%, $(KERNELVER)), -DFOUND_EXPORT_GPL_PRINT_TAINTED,) KBUILD_SUPPORTED := $(shell test -e ${DLDR_KERNELSRC}/scripts/kconfig && echo yes || echo no)