batman-adv: use rx_handler_data pointer to store net_bridge_port pointer

Message ID 201006170110.19294.sven.eckelmann@gmx.de (mailing list archive)
State RFC, archived
Headers

Commit Message

Sven Eckelmann June 16, 2010, 11:10 p.m. UTC
  Marek Lindner wrote:
> On Thursday 17 June 2010 00:42:11 Sven Eckelmann wrote:
> > I have merged it into maint (not into trunk), but somebody has to think
> > about  a way to to get it working on older kernels. This patch has to
> > made on top of that patch to get it integrated into the next kernel
> > merge window.
> 
> The code in question has not been enabled yet. It is just there as a
> possibility and could be enabled if it makes sense. I would say the one
> activating this code has to deal with the backward compatibility when it
> happens, ok ?  :-)

Ok, let me rewrite it:

I have merged it into maint (not in trunk) but somebody has to think about a
way to get it working on olders kernel _when he wants to enable it the
future_. This patch has to made on top of that patch to get it integrated in
_one of the next kernel merge windows_.

Better? :P


Personally I would do it with something like that:





Best regards,
	Sven
  

Comments

Andrew Lunn June 17, 2010, 5:42 a.m. UTC | #1
> --- a/batman-adv-kernelland/hard-interface.h
> +++ b/batman-adv-kernelland/hard-interface.h
> @@ -38,3 +38,8 @@ int batman_skb_recv(struct sk_buff *skb,
>  				struct net_device *orig_dev);
>  int hardif_min_mtu(void);
>  void update_min_mtu(void);
> +
> +#ifndef netdev_isbridged
> +#define netdev_isbridged(netdev) \
> +	((net_dev)->priv_flags & IFF_BRIDGE_PORT)
> +#endif

Maybe this could be pushed upstream? Seems like a useful bit of code
in general?

   Andrew
  
Sven Eckelmann June 17, 2010, 7:25 a.m. UTC | #2
Andrew Lunn wrote:
> > --- a/batman-adv-kernelland/hard-interface.h
> > +++ b/batman-adv-kernelland/hard-interface.h
> > @@ -38,3 +38,8 @@ int batman_skb_recv(struct sk_buff *skb,
> > 
> >  				struct net_device *orig_dev);
> >  
> >  int hardif_min_mtu(void);
> >  void update_min_mtu(void);
> > 
> > +
> > +#ifndef netdev_isbridged
> > +#define netdev_isbridged(netdev) \
> > +	((net_dev)->priv_flags & IFF_BRIDGE_PORT)
> > +#endif
> 
> Maybe this could be pushed upstream? Seems like a useful bit of code
> in general?

I don't think so. It is only used in ~7 places in the whole kernel. If you 
want then please feel free to add something like this and submit it to David 
S. Miller.

Best regards,
	Sven
  
Marek Lindner June 17, 2010, 8:57 a.m. UTC | #3
On Thursday 17 June 2010 01:10:17 Sven Eckelmann wrote:
> I have merged it into maint (not in trunk) but somebody has to think about
> a way to get it working on olders kernel _when he wants to enable it the
> future_. This patch has to made on top of that patch to get it integrated
> in _one of the next kernel merge windows_.

Ok, I think we are on the same page then.  :-)
I applied the patch (revision 1699).

Thanks,
Marek
  

Patch

diff --git a/batman-adv-kernelland/compat.h b/batman-adv-kernelland/compat.h
index 8302a58..c503a51 100644
--- a/batman-adv-kernelland/compat.h
+++ b/batman-adv-kernelland/compat.h
@@ -232,3 +232,14 @@  static inline struct net_device_stats *dev_get_stats(struct net_device *dev)
 }
 
 #endif /* < KERNEL_VERSION(2, 6, 29) */
+
+#if !defined(IFF_BRIDGE_PORT)
+
+#ifdef netdev_isbridged
+#undef netdev_isbridged
+#endif
+
+#define netdev_isbridged(netdev) \
+	((net_dev)->br_port != NULL)
+
+#endif /* defined(IFF_BRIDGE_PORT) */
diff --git a/batman-adv-kernelland/hard-interface.c b/batman-adv-kernelland/hard-interface.c
index 0773420..183d4c9 100644
--- a/batman-adv-kernelland/hard-interface.c
+++ b/batman-adv-kernelland/hard-interface.c
@@ -74,7 +74,7 @@  static int is_valid_iface(struct net_device *net_dev)
 #endif
 
 	/* Device is being bridged */
-	/* if (net_dev->priv_flags & IFF_BRIDGE_PORT)
+	/* if (netdev_isbridged(net_dev))
 		return 0; */
 
 	return 1;
diff --git a/batman-adv-kernelland/hard-interface.h b/batman-adv-kernelland/hard-interface.h
index 1e5fc3e..9bd1837 100644
--- a/batman-adv-kernelland/hard-interface.h
+++ b/batman-adv-kernelland/hard-interface.h
@@ -38,3 +38,8 @@  int batman_skb_recv(struct sk_buff *skb,
 				struct net_device *orig_dev);
 int hardif_min_mtu(void);
 void update_min_mtu(void);
+
+#ifndef netdev_isbridged
+#define netdev_isbridged(netdev) \
+	((net_dev)->priv_flags & IFF_BRIDGE_PORT)
+#endif