>>> On 2/20/2009 at 16:25, Dmitry Torokhov <d...@vmware.com> wrote:
> Hi Dominique,
>
> On Thursday 19 February 2009 01:06:29 Dominique Leuenberger 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:
>>
>
> The following should help with vmxnet, I will look in vmxnet3 in a bit.
Dmitry,
The patch you attached directly did not do the trick (did not apply), but it
gave enough pointers to recreate a working one.
For reference, in case anybody else needs it, I attach 'my' version here (It's
the same as yours, just the line numbers seemed not to be correct and
thus it could not apply the patch).
Dominique
diff -ur open-vm-tools-2009.02.18-148847.orig//modules/linux/vmxnet/vmxnet.c
open-vm-tools-2009.02.18-148847/modules/linux/vmxnet/vmxnet.c
--- open-vm-tools-2009.02.18-148847.orig//modules/linux/vmxnet/vmxnet.c
2009-02-18 09:02:39.000000000 +0100
+++ open-vm-tools-2009.02.18-148847/modules/linux/vmxnet/vmxnet.c
2009-02-23 11:14:11.000000000 +0100
@@ -198,7 +198,7 @@
static int
vmxnet_change_mtu(struct net_device *dev, int new_mtu)
{
- struct Vmxnet_Private *lp = (struct Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
if (new_mtu < VMXNET_MIN_MTU || new_mtu > VMXNET_MAX_MTU) {
return -EINVAL;
@@ -272,7 +272,7 @@
vmxnet_get_drvinfo(struct net_device *dev,
struct ethtool_drvinfo *drvinfo)
{
- struct Vmxnet_Private *lp = dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
strncpy(drvinfo->driver, vmxnet_driver.name, sizeof(drvinfo->driver));
drvinfo->driver[sizeof(drvinfo->driver) - 1] = '\0';
@@ -310,7 +310,7 @@
vmxnet_set_tso(struct net_device *dev, u32 data)
{
if (data) {
- struct Vmxnet_Private *lp = (struct Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
if (!lp->tso) {
return -EINVAL;
@@ -462,7 +462,7 @@
}
if (value.data) {
- struct Vmxnet_Private *lp = (struct Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
if (!lp->tso) {
return -EINVAL;
@@ -634,7 +634,7 @@
static void
vmxnet_tx_timeout(struct net_device *dev)
{
- compat_netif_wake_queue(dev);
+ netif_wake_queue(dev);
}
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,43) */
@@ -660,11 +660,10 @@
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,43)
struct net_device *dev = (struct net_device *)data;
- struct Vmxnet_Private *lp;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
uint32 status;
int ok;
- lp = dev->priv;
status = inl(dev->base_addr + VMXNET_STATUS_ADDR);
ok = (status & VMXNET_STATUS_CONNECTED) != 0;
if (ok != netif_carrier_ok(dev)) {
@@ -839,13 +838,13 @@
}
}
- dev = compat_alloc_etherdev(sizeof *lp);
+ dev = alloc_etherdev(sizeof *lp);
if (!dev) {
printk(KERN_ERR "Unable to allocate ethernet device\n");
goto morph_back;
}
- lp = dev->priv;
+ lp = netdev_priv(dev);
lp->pdev = pdev;
dev->base_addr = ioaddr;
@@ -1099,14 +1098,14 @@
#endif
compat_pci_unmap_single(lp->pdev, lp->ddPA, lp->ddSize,
PCI_DMA_BIDIRECTIONAL);
kfree(lp->dd);
-free_dev:;
- compat_free_netdev(dev);
-morph_back:;
+free_dev:
+ free_netdev(dev);
+morph_back:
if (morphed) {
/* Morph back to LANCE hw. */
outw(LANCE_CHIP, ioaddr - MORPH_PORT_SIZE);
}
-release_reg:;
+release_reg:
release_region(reqIOAddr, reqIOSize);
pci_disable:;
compat_pci_disable_device(pdev);
@@ -1133,7 +1132,7 @@
vmxnet_remove_device(struct pci_dev* pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);
- struct Vmxnet_Private *lp = dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
/*
* Do this before device is gone so we never call netif_carrier_* after
@@ -1184,7 +1183,7 @@
compat_pci_unmap_single(lp->pdev, lp->ddPA, lp->ddSize,
PCI_DMA_BIDIRECTIONAL);
kfree(lp->dd);
- compat_free_netdev(dev);
+ free_netdev(dev);
compat_pci_disable_device(pdev);
}
@@ -1207,7 +1206,7 @@
static int
vmxnet_init_ring(struct net_device *dev)
{
- struct Vmxnet_Private *lp = (Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
Vmxnet2_DriverData *dd = lp->dd;
unsigned int i;
size_t offset;
@@ -1335,7 +1334,7 @@
static int
vmxnet_open(struct net_device *dev)
{
- struct Vmxnet_Private *lp = (Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
unsigned int ioaddr = dev->base_addr;
uint32 ddPA;
@@ -1365,7 +1364,7 @@
#endif
lp->dd->txStopped = FALSE;
- compat_netif_start_queue(dev);
+ netif_start_queue(dev);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,43)
dev->interrupt = 0;
@@ -1589,7 +1588,7 @@
static void
check_tx_queue(struct net_device *dev)
{
- Vmxnet_Private *lp = (Vmxnet_Private *)dev->priv;
+ Vmxnet_Private *lp = netdev_priv(dev);
Vmxnet2_DriverData *dd = lp->dd;
int completed = 0;
@@ -1625,8 +1624,8 @@
lp->numTxPending -= completed;
// XXX conditionally wake up the queue based on the # of freed entries
- if (compat_netif_queue_stopped(dev)) {
- compat_netif_wake_queue(dev);
+ if (netif_queue_stopped(dev)) {
+ netif_wake_queue(dev);
dd->txStopped = FALSE;
}
}
@@ -1657,7 +1656,7 @@
vmxnet_tx(struct sk_buff *skb, struct net_device *dev)
{
Vmxnet_TxStatus status = VMXNET_DEFER_TRANSMIT;
- struct Vmxnet_Private *lp = (struct Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
Vmxnet2_DriverData *dd = lp->dd;
unsigned long flags;
Vmxnet2_TxRingEntry *xre;
@@ -1698,7 +1697,7 @@
/* check for the availability of tx ring entries */
if (dd->txRingLength - lp->numTxPending < txEntries) {
dd->txStopped = TRUE;
- compat_netif_stop_queue(dev);
+ netif_stop_queue(dev);
check_tx_queue(dev);
spin_unlock_irqrestore(&lp->txLock, flags);
@@ -2057,7 +2056,7 @@
static int
vmxnet_rx(struct net_device *dev)
{
- Vmxnet_Private *lp = (Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
Vmxnet2_DriverData *dd = lp->dd;
if (!lp->devOpen) {
@@ -2187,7 +2186,7 @@
}
- lp = (struct Vmxnet_Private *)dev->priv;
+ lp = netdev_priv(dev);
outl(VMXNET_CMD_INTR_ACK, dev->base_addr + VMXNET_COMMAND_ADDR);
dd = lp->dd;
@@ -2208,8 +2207,8 @@
spin_unlock(&lp->txLock);
}
- if (compat_netif_queue_stopped(dev) && !lp->dd->txStopped) {
- compat_netif_wake_queue(dev);
+ if (netif_queue_stopped(dev) && !lp->dd->txStopped) {
+ netif_wake_queue(dev);
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,43)
@@ -2269,7 +2268,7 @@
vmxnet_close(struct net_device *dev)
{
unsigned int ioaddr = dev->base_addr;
- Vmxnet_Private *lp = (Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
int i;
unsigned long flags;
@@ -2281,7 +2280,7 @@
dev->start = 0;
#endif
- compat_netif_stop_queue(dev);
+ netif_stop_queue(dev);
lp->devOpen = FALSE;
@@ -2362,7 +2361,7 @@
static int
vmxnet_load_multicast (struct net_device *dev)
{
- Vmxnet_Private *lp = (Vmxnet_Private *) dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
volatile u16 *mcast_table = (u16 *)lp->dd->LADRF;
struct dev_mc_list *dmi = dev->mc_list;
char *addrs;
@@ -2423,7 +2422,7 @@
vmxnet_set_multicast_list(struct net_device *dev)
{
unsigned int ioaddr = dev->base_addr;
- Vmxnet_Private *lp = (Vmxnet_Private *)dev->priv;
+ struct Vmxnet_Private *lp = netdev_priv(dev);
lp->dd->ifflags = ~(VMXNET_IFF_PROMISC
|VMXNET_IFF_BROADCAST
@@ -2473,7 +2472,7 @@
unsigned int ioaddr = dev->base_addr;
int i;
- if (compat_netif_running(dev))
+ if (netif_running(dev))
return -EBUSY;
memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
@@ -2503,7 +2502,7 @@
static struct net_device_stats *
vmxnet_get_stats(struct net_device *dev)
{
- Vmxnet_Private *lp = (Vmxnet_Private *)dev->priv;
+ Vmxnet_Private *lp = netdev_priv(dev);
return &lp->stats;
}
------------------------------------------------------------------------------
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
open-vm-tools-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-vm-tools-devel