Commit e2a85aecebc03d165bc2dcd233deadd5dd97ea9f
Committed by
David S. Miller
1 parent
a9cf73ea7f
Exists in
master
and in
7 other branches
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. |