On Tuesday, August 30, 2011 01:44:40 Ajay Bhargav wrote:
> +static void update_hash_table_mac_address(struct armdfec_device *darmdfec,
> +                                       u8 *oaddr, u8 *addr)
> +{
> +     u32 mach;
> +     u32 macl;
> +
> +     /* Delete old entry */
> +     if (oaddr) {
> +             mach = (oaddr[0] << 8) | oaddr[1];
> +             macl = (oaddr[2] << 24) | (oaddr[3] << 16) |
> +                     (oaddr[4] << 8) | oaddr[5];
> +             add_del_hash_entry(darmdfec, mach, macl, 1, 0, HASH_DELETE);
> +     }
> +
> +     /* Add new entry */
> +     mach = (addr[0] << 8) | addr[1];
> +     macl = (addr[2] << 24) | (addr[3] << 16) | (addr[4] << 8) | addr[5];
> +     add_del_hash_entry(darmdfec, mach, macl, 1, 0, HASH_ADD);
> +}
> ...
> +static int armdfec_init(struct eth_device *dev, bd_t *bd)
> +{
> ...
> +     update_hash_table_mac_address(darmdfec, dev->enetaddr, dev->enetaddr);

i think something got lost along the way here :)

you'll probably want to have oaddr[] be a static local in 
update_hash_table_mac_address and use that to delete the old one when it 
differs from the new one, and then copy the new one into the static local.
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to