net: fix lock_sock_bh/unlock_sock_bh
[pandora-kernel.git] / include / net / neighbour.h
index b017320..eb21340 100644 (file)
@@ -164,7 +164,7 @@ struct neigh_table {
        rwlock_t                lock;
        unsigned long           last_rand;
        struct kmem_cache               *kmem_cachep;
-       struct neigh_statistics *stats;
+       struct neigh_statistics __percpu *stats;
        struct neighbour        **hash_buckets;
        unsigned int            hash_mask;
        __u32                   hash_rnd;
@@ -251,7 +251,6 @@ extern void neigh_seq_stop(struct seq_file *, void *);
 
 extern int                     neigh_sysctl_register(struct net_device *dev, 
                                                      struct neigh_parms *p,
-                                                     int p_id, int pdev_id,
                                                      char *p_name,
                                                      proc_handler *proc_handler);
 extern void                    neigh_sysctl_unregister(struct neigh_parms *p);
@@ -300,6 +299,20 @@ static inline int neigh_event_send(struct neighbour *neigh, struct sk_buff *skb)
        return 0;
 }
 
+#ifdef CONFIG_BRIDGE_NETFILTER
+static inline int neigh_hh_bridge(struct hh_cache *hh, struct sk_buff *skb)
+{
+       unsigned seq, hh_alen;
+
+       do {
+               seq = read_seqbegin(&hh->hh_lock);
+               hh_alen = HH_DATA_ALIGN(ETH_HLEN);
+               memcpy(skb->data - hh_alen, hh->hh_data, ETH_ALEN + hh_alen - ETH_HLEN);
+       } while (read_seqretry(&hh->hh_lock, seq));
+       return 0;
+}
+#endif
+
 static inline int neigh_hh_output(struct hh_cache *hh, struct sk_buff *skb)
 {
        unsigned seq;