Re: [B.A.T.M.A.N.] [PATCH] batman-adv: use rx_handler_data pointer to store net_bridge_port pointer

Sven Eckelmann
2010-06-16T23:10:17Z

[-- Attachment #1: Type: Text/Plain, Size: 2465 bytes --]

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:

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

Best regards,
Sven

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]