Deleted Added
full compact
if_mge.c (194024) if_mge.c (195049)
1/*-
2 * Copyright (C) 2008 MARVELL INTERNATIONAL LTD.
3 * All rights reserved.
4 *
5 * Developed by Semihalf.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 20 unchanged lines hidden (view full) ---

29 * SUCH DAMAGE.
30 */
31
32#ifdef HAVE_KERNEL_OPTION_HEADERS
33#include "opt_device_polling.h"
34#endif
35
36#include <sys/cdefs.h>
1/*-
2 * Copyright (C) 2008 MARVELL INTERNATIONAL LTD.
3 * All rights reserved.
4 *
5 * Developed by Semihalf.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 20 unchanged lines hidden (view full) ---

29 * SUCH DAMAGE.
30 */
31
32#ifdef HAVE_KERNEL_OPTION_HEADERS
33#include "opt_device_polling.h"
34#endif
35
36#include <sys/cdefs.h>
37__FBSDID("$FreeBSD: head/sys/dev/mge/if_mge.c 194024 2009-06-11 17:14:54Z avg $");
37__FBSDID("$FreeBSD: head/sys/dev/mge/if_mge.c 195049 2009-06-26 11:45:06Z rwatson $");
38
39#include <sys/param.h>
40#include <sys/systm.h>
41#include <sys/endian.h>
42#include <sys/mbuf.h>
43#include <sys/lock.h>
44#include <sys/mutex.h>
45#include <sys/kernel.h>

--- 1680 unchanged lines hidden (view full) ---

1726
1727 if (ifp->if_flags & IFF_ALLMULTI) {
1728 for (i = 0; i < MGE_MCAST_REG_NUMBER; i++)
1729 smt[i] = omt[i] = (v << 24) | (v << 16) | (v << 8) | v;
1730 } else {
1731 memset(smt, 0, sizeof(smt));
1732 memset(omt, 0, sizeof(omt));
1733
38
39#include <sys/param.h>
40#include <sys/systm.h>
41#include <sys/endian.h>
42#include <sys/mbuf.h>
43#include <sys/lock.h>
44#include <sys/mutex.h>
45#include <sys/kernel.h>

--- 1680 unchanged lines hidden (view full) ---

1726
1727 if (ifp->if_flags & IFF_ALLMULTI) {
1728 for (i = 0; i < MGE_MCAST_REG_NUMBER; i++)
1729 smt[i] = omt[i] = (v << 24) | (v << 16) | (v << 8) | v;
1730 } else {
1731 memset(smt, 0, sizeof(smt));
1732 memset(omt, 0, sizeof(omt));
1733
1734 IF_ADDR_LOCK(ifp);
1734 if_maddr_rlock(ifp);
1735 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
1736 if (ifma->ifma_addr->sa_family != AF_LINK)
1737 continue;
1738
1739 mac = LLADDR((struct sockaddr_dl *)ifma->ifma_addr);
1740 if (memcmp(mac, special, sizeof(special)) == 0) {
1741 i = mac[5];
1742 smt[i >> 2] |= v << ((i & 0x03) << 3);
1743 } else {
1744 i = mge_crc8(mac, ETHER_ADDR_LEN);
1745 omt[i >> 2] |= v << ((i & 0x03) << 3);
1746 }
1747 }
1735 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
1736 if (ifma->ifma_addr->sa_family != AF_LINK)
1737 continue;
1738
1739 mac = LLADDR((struct sockaddr_dl *)ifma->ifma_addr);
1740 if (memcmp(mac, special, sizeof(special)) == 0) {
1741 i = mac[5];
1742 smt[i >> 2] |= v << ((i & 0x03) << 3);
1743 } else {
1744 i = mge_crc8(mac, ETHER_ADDR_LEN);
1745 omt[i >> 2] |= v << ((i & 0x03) << 3);
1746 }
1747 }
1748 IF_ADDR_UNLOCK(ifp);
1748 if_maddr_runlock(ifp);
1749 }
1750
1751 for (i = 0; i < MGE_MCAST_REG_NUMBER; i++) {
1752 MGE_WRITE(sc, MGE_DA_FILTER_SPEC_MCAST(i), smt[i]);
1753 MGE_WRITE(sc, MGE_DA_FILTER_OTH_MCAST(i), omt[i]);
1754 }
1755}
1756

--- 73 unchanged lines hidden ---
1749 }
1750
1751 for (i = 0; i < MGE_MCAST_REG_NUMBER; i++) {
1752 MGE_WRITE(sc, MGE_DA_FILTER_SPEC_MCAST(i), smt[i]);
1753 MGE_WRITE(sc, MGE_DA_FILTER_OTH_MCAST(i), omt[i]);
1754 }
1755}
1756

--- 73 unchanged lines hidden ---