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 --- |