Problem receiving muliticast messages on ARM device



I have a problem receiving multicast streams on an ARM device
(Beagleboard XM) with a smsc9514 network device.

If I start the kernel using a nfs root, my live555 based software can
receive multicast streams. If I start from SD card, multicast doesn't
work.

I also tried the multicast example software from
http://www.nmsl.cs.ucsb.edu/MulticastSocketsBook/#cexamples
Same problem here.
The kernel is the same (linux-2.6.32-omap-psp), loaded from SD card
with u-boot.
/proc/net/dev_mcast and "netstat -g" show the same info if I start
my software in both cases.
The file system (nfs and SD card) are identical.
In both cases I set the multicast route with
"route add -net 224.0.0.0 netmask 240.0.0.0 dev usb0"
(usb0 is the network device.) and I also call
"sysctl -w net.core.rmem_max=8388608"

The kernel command lines are (sd root, not working):
# cat /proc/cmdline
console=tty0 console=ttyS2,115200n8 camera=tvp5146 mem=80M@0x80000000
mem=384M@0x88000000 noinitrd rw mpurate=1000 buddy=none vram=16M
omapfb.mode=dvi:800x600MR-32@50 omapdss.def_disp=dvi
ip=10.0.0.55:10.0.0.152::255.0.0.0::: root=/dev/mmcblk0p2 rootfstype=ext3
rw rootflags=data=journal,errors=remount-ro rootwait

working device (nfs root):
# cat /proc/cmdline
console=tty0 console=ttyS2,115200n8 camera=tvp5146 mem=80M@0x80000000
mem=384M@0x88000000 noinitrd rw mpurate=1000 buddy=none vram=16M
omapfb.mode=dvi:800x600MR-32@50 omapdss.def_disp=dvi
ip=10.0.0.55:10.0.0.152::255.0.0.0::: root=/dev/nfs
nfsroot=10.0.0.152:/home/stiller/development/OMAP/root/XM,nolock
rootdelay=3

I added the ip parameter in the first cmdline just to test if
this parameter has any effect to the multicast problem.

I can receive the multicast messages with tcpdump (both cases).

If I add another usb->ethernet device (moschip instead of smsc) while the
device runs, I still can not receive multicast with new new interface.
If I start with nfs, the new interface works, too.
So it seems not to be a problem with the network device driver.

I can not try another kernel version because I added a lot of patches for
our connected hardware.
Multicast is enabled in the kernel .config.

The MULTICAST flag is set if I call "ifconfig usb0"
Setting "allmulti" and "promisc" in the network interfaces doesn't help.

On the not working device /proc/sys/net/ipv4/conf/all/rp_filter was
set to 1 on start, but setting to 0 doesn't help.


Any idea?

Sandro
.



Relevant Pages

  • Re: [Linux] Multicast Routing?
    ... > Kann Linux sauber Multicast forwarden und wie wird ... > das igmp gehandelt etc. ... Der richtig kompilierte Kernel und z.B. pimd. ... IP Multicast funktioniert in einer Broadcastdomain out of the box. ...
    (de.comp.os.unix.networking.misc)
  • Re: [Lse-tech] Re: [Patch 7/7] Generic netlink interface (delay accounting)
    ... Assume several apps in user space and a target in the kernel (this ... The response is unicast; the ... effect of what they affected may cause an event which may be multicast. ... Suppose C issued a GET to find details about a specific pid, ...
    (Linux-Kernel)
  • Re: [Lse-tech] Re: [Patch 7/7] Generic netlink interface (delay accounting)
    ... Assume several apps in user space and a target in the kernel (this ... The response is unicast; the ... effect of what they affected may cause an event which may be multicast. ... Suppose C issued a GET to find details about a specific pid, ...
    (Linux-Kernel)
  • Re: kern/138666: [multicast] [panic] not working multicast through igmpproxy
    ... I got kernel panic after running mrouted, igmpproxy, or xorp. ... turning off the transmit checksum offloading on the upstream ... and I can see multicast UDP traffic coming in on the upstream ...
    (freebsd-net)
  • Re: IP_MAX_MEMBERSHIPS
    ... This limit in no way affects multicast routing, ... break your kernel for modules compiled without such a change. ... I think you might be hitting the IGMP limit. ... The 244.0.0.5/6 multicast address is joined using IGMP and there is a kernel variable that needs to get bumped up higher to peer with more than 20 neighbors. ...
    (freebsd-stable)