Quoting r. Michael S. Tsirkin <[EMAIL PROTECTED]>:
> > Basically we're getting lucky that this works at all.
> > 
> > As you said in your other mail, it seems like a more fundamental
> > reorganization of this neighbour destructor stuff is required.
> 
> Right. [Sound of busy typing ]

How does the following look?

Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]>

Index: linux-2.6.15/include/linux/netdevice.h
===================================================================
--- linux-2.6.15.orig/include/linux/netdevice.h 2006-01-03 05:21:10.000000000 
+0200
+++ linux-2.6.15/include/linux/netdevice.h      2006-01-12 11:55:49.000000000 
+0200
@@ -485,6 +485,7 @@ struct net_device
        int                     (*hard_header_parse)(struct sk_buff *skb,
                                                     unsigned char *haddr);
        int                     (*neigh_setup)(struct net_device *dev, struct 
neigh_parms *);
+       void                    (*neigh_destructor)(struct neighbour *);
 #ifdef CONFIG_NETPOLL
        struct netpoll_info     *npinfo;
 #endif
Index: linux-2.6.15/net/core/neighbour.c
===================================================================
--- linux-2.6.15.orig/net/core/neighbour.c      2006-01-12 11:58:15.000000000 
+0200
+++ linux-2.6.15/net/core/neighbour.c   2006-01-12 11:58:45.000000000 +0200
@@ -586,8 +586,8 @@ void neigh_destroy(struct neighbour *nei
                        kfree(hh);
        }
 
-       if (neigh->ops && neigh->ops->destructor)
-               (neigh->ops->destructor)(neigh);
+       if (neigh->dev->neigh_destructor)
+               (neigh->dev->neigh_destructor)(neigh);
 
        skb_queue_purge(&neigh->arp_queue);
 
Index: linux-2.6.15/include/net/neighbour.h
===================================================================
--- linux-2.6.15.orig/include/net/neighbour.h   2006-01-03 05:21:10.000000000 
+0200
+++ linux-2.6.15/include/net/neighbour.h        2006-01-12 11:54:26.000000000 
+0200
@@ -145,7 +145,6 @@ struct neighbour
 struct neigh_ops
 {
        int                     family;
-       void                    (*destructor)(struct neighbour *);
        void                    (*solicit)(struct neighbour *, struct sk_buff*);
        void                    (*error_report)(struct neighbour *, struct 
sk_buff*);
        int                     (*output)(struct sk_buff*);
-- 
MST
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to