Bug 60703 - multicast only in promiscuous mode
Summary: multicast only in promiscuous mode
Status: RESOLVED CODE_FIX
Alias: None
Product: Networking
Classification: Unclassified
Component: IPV4 (show other bugs)
Hardware: PPC-32 Linux
: P1 high
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-08-06 12:59 UTC by hhachem00
Modified: 2013-08-08 15:58 UTC (History)
0 users

See Also:
Kernel Version: 2.6.24
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description hhachem00 2013-08-06 12:59:41 UTC
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.
Comment 1 Stephen Hemminger 2013-08-06 15:20:25 UTC
This is almost certainly a driver issue. What ethernet driver is this hardware using?
Comment 2 hhachem00 2013-08-07 06:48:49 UTC
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.
Comment 3 hhachem00 2013-08-07 07:07:53 UTC
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!
Comment 4 hhachem00 2013-08-07 15:03:49 UTC
(In reply to Stephen Hemminger from comment #1)
> This is almost certainly a driver issue. What ethernet driver is this
> hardware using?
Comment 5 hhachem00 2013-08-08 08:45:10 UTC
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.
Comment 6 Stephen Hemminger 2013-08-08 15:51:05 UTC
Freescale has been doing a poor job of participating in the upstream networking lists and merging their patches.
Comment 7 Stephen Hemminger 2013-08-08 15:58:36 UTC
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>

Note You need to log in before you can comment on or make changes to this bug.