Commit e2a85aecebc03d165bc2dcd233deadd5dd97ea9f

Authored by Andrea Galbusera
Committed by David S. Miller
1 parent a9cf73ea7f

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>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 2 changed files with 6 additions and 6 deletions Side-by-side Diff

arch/powerpc/include/asm/8xx_immap.h
... ... @@ -393,8 +393,8 @@
393 393 uint fec_addr_low; /* lower 32 bits of station address */
394 394 ushort fec_addr_high; /* upper 16 bits of station address */
395 395 ushort res1; /* reserved */
396   - uint fec_hash_table_high; /* upper 32-bits of hash table */
397   - uint fec_hash_table_low; /* lower 32-bits of hash table */
  396 + uint fec_grp_hash_table_high; /* upper 32-bits of hash table */
  397 + uint fec_grp_hash_table_low; /* lower 32-bits of hash table */
398 398 uint fec_r_des_start; /* beginning of Rx descriptor ring */
399 399 uint fec_x_des_start; /* beginning of Tx descriptor ring */
400 400 uint fec_r_buff_size; /* Rx buffer size */
drivers/net/fs_enet/mac-fec.c
... ... @@ -226,8 +226,8 @@
226 226 }
227 227  
228 228 FC(fecp, r_cntrl, FEC_RCNTRL_PROM);
229   - FW(fecp, hash_table_high, fep->fec.hthi);
230   - FW(fecp, hash_table_low, fep->fec.htlo);
  229 + FW(fecp, grp_hash_table_high, fep->fec.hthi);
  230 + FW(fecp, grp_hash_table_low, fep->fec.htlo);
231 231 }
232 232  
233 233 static void set_multicast_list(struct net_device *dev)
... ... @@ -273,8 +273,8 @@
273 273 /*
274 274 * Reset all multicast.
275 275 */
276   - FW(fecp, hash_table_high, fep->fec.hthi);
277   - FW(fecp, hash_table_low, fep->fec.htlo);
  276 + FW(fecp, grp_hash_table_high, fep->fec.hthi);
  277 + FW(fecp, grp_hash_table_low, fep->fec.htlo);
278 278  
279 279 /*
280 280 * Set maximum receive buffer size.