On Wed, 19 Apr 2006 09:34:23 +0200 "Fulvio Ricciardi" <fulvio.ricciardi@zeroshell.net> wrote:> Hi, > I have just configured a Linux box with kernel 2.6.16.7 and configured two > ethernet interfaces (with MTU 1500) in bridge mode. CONFIG_BRIDGE_NETFILTER > is enabled. > The problem is that ping -s 1500 192.168.0.2 doesn't work from 192.168.0.1 > if the systems are separated by the bridge. Normal ping with smaller packet > size works ok. > What is wrong? > > Best Regards > Fulvio Ricciardi > _______________________________________________ > Bridge mailing list > Bridge@lists.osdl.org > https://lists.osdl.org/mailman/listinfo/bridgeAre you using VLAN's ? The bridge will not send packets to a device if packet size > mtu of device. VLAN's confuse it.
Hi, I have just configured a Linux box with kernel 2.6.16.7 and configured two ethernet interfaces (with MTU 1500) in bridge mode. CONFIG_BRIDGE_NETFILTER is enabled. The problem is that ping -s 1500 192.168.0.2 doesn't work from 192.168.0.1 if the systems are separated by the bridge. Normal ping with smaller packet size works ok. What is wrong? Best Regards Fulvio Ricciardi
Try the following if you are using vlan's --- bridge.orig/net/bridge/br_forward.c 2006-04-10 16:17:51.000000000 -0700 +++ bridge/net/bridge/br_forward.c 2006-04-19 10:03:58.000000000 -0700 @@ -16,6 +16,7 @@ #include <linux/kernel.h> #include <linux/netdevice.h> #include <linux/skbuff.h> +#include <linux/if_vlan.h> #include <linux/netfilter_bridge.h> #include "br_private.h" @@ -29,11 +30,17 @@ return 1; } +static inline unsigned eth_length(const struct sk_buff *skb) +{ + return skb->protocol == htons(ETH_P_8021Q) + ? skb->len - VLAN_HLEN : skb->len; +} + int br_dev_queue_push_xmit(struct sk_buff *skb) { - /* drop mtu oversized packets except tso */ - if (skb->len > skb->dev->mtu && !skb_shinfo(skb)->tso_size) - kfree_skb(skb); + /* drop mtu oversized packets except tso (local) and allow vlan's */ + if (eth_length(skb) > skb->dev->mtu && !skb_shinfo(skb)->tso_size) + dev_kfree_skb(skb); else { #ifdef CONFIG_BRIDGE_NETFILTER /* ip_refrag calls ip_fragment, doesn't copy the MAC header. */