..since the only user is the bridge code, and everyone else just
frobs with br_write_lock_bh directly anyway.


--- linux-2.4.19-rxatomic-minimal/include/linux/netdevice.h.orig        2002-08-03 
02:39:45.000000000 +0200
+++ linux-2.4.19-rxatomic-minimal/include/linux/netdevice.h     2002-10-02 
+10:17:29.000000000 +0200
@@ -575,7 +575,6 @@
                dev_kfree_skb(skb);
 }
 
-extern void            net_call_rx_atomic(void (*fn)(void));
 #define HAVE_NETIF_RX 1
 extern int             netif_rx(struct sk_buff *skb);
 extern int             dev_ioctl(unsigned int cmd, void *);
--- linux-2.4.19-rxatomic-minimal/net/core/dev.c.orig   2002-08-03 02:39:46.000000000 
+0200
+++ linux-2.4.19-rxatomic-minimal/net/core/dev.c        2002-10-02 10:17:29.000000000 
++0200
@@ -1369,20 +1369,6 @@
        }
 }
 
-/**
- *     net_call_rx_atomic
- *     @fn: function to call
- *
- *     Make a function call that is atomic with respect to the protocol
- *     layers.
- */
- 
-void net_call_rx_atomic(void (*fn)(void))
-{
-       br_write_lock_bh(BR_NETPROTO_LOCK);
-       fn();
-       br_write_unlock_bh(BR_NETPROTO_LOCK);
-}
 
 #if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
 void (*br_handle_frame_hook)(struct sk_buff *skb) = NULL;
--- linux-2.4.19-rxatomic-minimal/net/bridge/br.c.orig  2002-02-25 20:38:14.000000000 
+0100
+++ linux-2.4.19-rxatomic-minimal/net/bridge/br.c       2002-10-02 10:17:29.000000000 
++0200
@@ -21,6 +21,7 @@
 #include <linux/etherdevice.h>
 #include <linux/init.h>
 #include <linux/if_bridge.h>
+#include <linux/brlock.h>
 #include <asm/uaccess.h>
 #include "br_private.h"
 
@@ -53,11 +53,6 @@
        return 0;
 }
 
-static void __br_clear_frame_hook(void)
-{
-       br_handle_frame_hook = NULL;
-}
-
 static void __br_clear_ioctl_hook(void)
 {
        br_ioctl_hook = NULL;
@@ -67,7 +62,11 @@
 {
        unregister_netdevice_notifier(&br_device_notifier);
        br_call_ioctl_atomic(__br_clear_ioctl_hook);
-       net_call_rx_atomic(__br_clear_frame_hook);
+
+       br_write_lock_bh(BR_NETPROTO_LOCK);
+       br_handle_frame_hook = NULL;
+       br_write_unlock_bh(BR_NETPROTO_LOCK);
+
 #if defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE)
        br_fdb_get_hook = NULL;
        br_fdb_put_hook = NULL;
--- linux-2.4.19-rxatomic-minimal/net/netsyms.c 2002-08-03 02:39:46.000000000 +0200
+++ linux-2.4.19-rxatomic-minimal/net/netsyms.c 2002-10-02 06:55:03.000000000 +0200
@@ -585,7 +585,6 @@
 
 EXPORT_SYMBOL(register_gifconf);
 
-EXPORT_SYMBOL(net_call_rx_atomic);
 EXPORT_SYMBOL(softnet_data);
 
 #endif  /* CONFIG_NET */

_______________________________________________
Bridge mailing list
[EMAIL PROTECTED]
http://www.math.leidenuniv.nl/mailman/listinfo/bridge

Reply via email to