Fix ethernet multicast for ucc_geth.
hw_add_addr_in_hash() already swaps byte order, don't do it in ucc_geth_set_multi() too. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Acked-by: ucc_geth maintainer Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
5e7bf8cc60
commit
9030b3dd67
|
@ -2214,9 +2214,7 @@ static void ucc_geth_set_multi(struct net_device *dev)
|
||||||
struct dev_mc_list *dmi;
|
struct dev_mc_list *dmi;
|
||||||
struct ucc_fast *uf_regs;
|
struct ucc_fast *uf_regs;
|
||||||
struct ucc_geth_82xx_address_filtering_pram *p_82xx_addr_filt;
|
struct ucc_geth_82xx_address_filtering_pram *p_82xx_addr_filt;
|
||||||
u8 tempaddr[6];
|
int i;
|
||||||
u8 *mcptr, *tdptr;
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
ugeth = netdev_priv(dev);
|
ugeth = netdev_priv(dev);
|
||||||
|
|
||||||
|
@ -2255,19 +2253,10 @@ static void ucc_geth_set_multi(struct net_device *dev)
|
||||||
if (!(dmi->dmi_addr[0] & 1))
|
if (!(dmi->dmi_addr[0] & 1))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* The address in dmi_addr is LSB first,
|
|
||||||
* and taddr is MSB first. We have to
|
|
||||||
* copy bytes MSB first from dmi_addr.
|
|
||||||
*/
|
|
||||||
mcptr = (u8 *) dmi->dmi_addr + 5;
|
|
||||||
tdptr = (u8 *) tempaddr;
|
|
||||||
for (j = 0; j < 6; j++)
|
|
||||||
*tdptr++ = *mcptr--;
|
|
||||||
|
|
||||||
/* Ask CPM to run CRC and set bit in
|
/* Ask CPM to run CRC and set bit in
|
||||||
* filter mask.
|
* filter mask.
|
||||||
*/
|
*/
|
||||||
hw_add_addr_in_hash(ugeth, tempaddr);
|
hw_add_addr_in_hash(ugeth, dmi->dmi_addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue