It is correct. I'm using openwrt and, at the moment, without -M option. 1500byte packets work, with fragmentation.
However, my TCP packets are small (about 60bytes). I have verified TCPDump file and packets arrive. It seems that the Linux IP stack does not forward them to the application.
Moreover, if I disable batman on B1-GW1 link, it works

andrea

2009/10/5 Sven Eckelmann <sven.eckelmann@gmx.de>
a wrote:
> The ping with 1500 byte packets works.
How can you send 1500 bytes packets with an mtu of 1476?
Do the test with `ping -M do -s 1472 IP` (this should create an 1500 bytes
packet and disables fragmentation).

> The three nodes are connected in this way:
> B1 --- batman --- GW1 ------- EX1
> eth1 on B1 and GW1 is managed by batman. eth2 on gw1 not.
> The IP configuration is:
>
> B1:
> # ip a
> eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
> UNKNOWN qlen 1000
>     link/ether 52:54:00:00:20:01 brd ff:ff:ff:ff:ff:ff
> bat0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1476 qdisc pfifo_fast state
> UNKNOWN qlen 1000
>     link/ether 00:ff:ad:e2:6f:dd brd ff:ff:ff:ff:ff:ff
>     inet 192.168.100.2/24 brd 192.168.100.255 scope global bat0
> # ip r
> 192.168.100.0/24 dev bat0  proto kernel  scope link  src 192.168.100.2
> default via 192.168.100.3 dev bat0

Best regards,
       Sven