eth0 is mutlicast capable. However, it is not receiving any multicast UDP datagrams unless it is set to promiscuous mode, i.e.: ifconfig eth0 promisc The ports are open and the interface is a member of the multicast group. it is also possible to observe igmpv3 requests on wireshark. However, as I mentioned above, datagrams can only be received in promiscuous mode. My guess is, there's an error in the ipv4 multicast address - mac address mapping in Linux. I also found a similar issue on an older kernel: https://bugzilla.kernel.org/show_bug.cgi?id=4482 but the file which should be edited does not exist on my system.
This is almost certainly a driver issue. What ethernet driver is this hardware using?
Thanks for the reply. The only information I was able to extract from the system so far was 'fs_enet', which apparently stands for freescale ethernet driver.
Note: I found the following patch http://lkml.indiana.edu/hypermail/linux/kernel/1104.2/01544.html but mac-fec.c does not exist on my system!
(In reply to Stephen Hemminger from comment #1) > This is almost certainly a driver issue. What ethernet driver is this > hardware using?
I managed to get some more info: / # cat /proc/cpuinfo processor : 0 cpu : e300c4 clock : 220.000000MHz revision : 1.0 (pvr 8086 2010) bogomips : 54.88 timebase : 27500000 platform : MPC5121 ADS /sys/devices/80000000.soc/80002800.ethernet # cat uevent DRIVER=fs_enet PHYSDEVBUS=of_platform PHYSDEVDRIVER=fs_enet OF_NAME=ethernet OF_TYPE=network OF_COMPATIBLE_0=fsl,mpc5121-fec OF_COMPATIBLE_N=1 MODALIAS=of:NethernetTnetworkCfsl,mpc5121-fec found an appropriate patch : https://community.freescale.com/thread/67228 However, I still need the source code, which is not present on my platform. I contacted Freescale for support, but they simply pointed me to some useless PDF files.
Freescale has been doing a poor job of participating in the upstream networking lists and merging their patches.
Fixed in kernel 2.6.39 commit e2a85aecebc03d165bc2dcd233deadd5dd97ea9f Author: Andrea Galbusera <gizero@gmail.com> Date: Thu Apr 21 02:21:21 2011 +0000 powerpc: Fix multicast problem in fs_enet driver mac-fec.c was setting individual UDP address registers instead of multicast group address registers when joining a multicast group. This prevented from correctly receiving UDP multicast packets. According to datasheet, replaced hash_table_high and hash_table_low with grp_hash_table_high and grp_hash_table_low respectively. Also renamed hash_table_* with grp_hash_table_* in struct fec declaration for 8xx: these registers are used only for multicast there. Tested on a MPC5121 based board. Build tested also against mpc866_ads_defconfig. Signed-off-by: Andrea Galbusera <gizero@gmail.com>