Hi NeverGoesSmooth,
First of all, let me 100% agree with your nickname! It really rocks! 
Beside this, I wanted you to know we recently faced your exact same problem with our MPC5121FEC and UDP multicast application. Thank you for cross linking that other thread, which helped me a lot in solving this issue.
After digging a while for an already made patch and after finding none other than enabling promiscuous mode (not really a _solution_). I had to dive into the driver code. This provided me with an easy and working solution. Without going into details, the fec driver appears to fill the wrong register when initializing the multicast group address you join to.
The following should fix:
diff --exclude CVS --exclude .git -uNr linux-2.6.24/drivers/net/fs_enet/mac-fec.c linux-2.6.24.modified/drivers/net/fs_enet/mac-fec.c--- linux-2.6.24/drivers/net/fs_enet/mac-fec.c 2010-07-20 15:07:25.000000000 +0200+++ linux-2.6.24.modified/drivers/net/fs_enet/mac-fec.c 2010-07-20 14:26:52.000000000 +0200@@ -250,8 +250,8 @@ } FC(fecp, r_cntrl, FEC_RCNTRL_PROM);- FW(fecp, hash_table_high, fep->fec.hthi);- FW(fecp, hash_table_low, fep->fec.htlo);+ FW(fecp, grp_hash_table_high, fep->fec.hthi);+ FW(fecp, grp_hash_table_low, fep->fec.htlo); } static void set_multicast_list(struct net_device *dev)@@ -306,8 +306,8 @@ /* * Reset all multicast. */- FW(fecp, hash_table_high, fep->fec.hthi);- FW(fecp, hash_table_low, fep->fec.htlo);+ FW(fecp, grp_hash_table_high, fep->fec.hthi);+ FW(fecp, grp_hash_table_low, fep->fec.htlo); /* * Set maximum receive buffer size.
Please, let me know if this solves for you. I'm going to stress-test it from now on but, at first glance, it looks to be working fine.
Attached is the patch for 2.6.24 kernel: I'm building with ltib for a mpc5121ads derived board. The patch may require some rework for newer kernels. When I find some time I will try to post the patch upstream to the relevant lists.
Regards,
Andrea