Deleted Added
full compact
if_bce.c (194781) if_bce.c (195049)
1/*-
2 * Copyright (c) 2006-2009 Broadcom Corporation
3 * David Christensen <davidch@broadcom.com>. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

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

24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28 * THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2006-2009 Broadcom Corporation
3 * David Christensen <davidch@broadcom.com>. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

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

24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28 * THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#include <sys/cdefs.h>
32__FBSDID("$FreeBSD: head/sys/dev/bce/if_bce.c 194781 2009-06-23 22:19:27Z davidch $");
32__FBSDID("$FreeBSD: head/sys/dev/bce/if_bce.c 195049 2009-06-26 11:45:06Z rwatson $");
33
34/*
35 * The following controllers are supported by this driver:
36 * BCM5706C A2, A3
37 * BCM5706S A2, A3
38 * BCM5708C B1, B2
39 * BCM5708S B1, B2
40 * BCM5709C A1, C0

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

7255 for (i = 0; i < NUM_MC_HASH_REGISTERS; i++) {
7256 REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), 0xffffffff);
7257 }
7258 sort_mode |= BCE_RPM_SORT_USER0_MC_EN;
7259 } else {
7260 /* Accept one or more multicast(s). */
7261 DBPRINT(sc, BCE_INFO_MISC, "Enabling selective multicast mode.\n");
7262
33
34/*
35 * The following controllers are supported by this driver:
36 * BCM5706C A2, A3
37 * BCM5706S A2, A3
38 * BCM5708C B1, B2
39 * BCM5708S B1, B2
40 * BCM5709C A1, C0

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

7255 for (i = 0; i < NUM_MC_HASH_REGISTERS; i++) {
7256 REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), 0xffffffff);
7257 }
7258 sort_mode |= BCE_RPM_SORT_USER0_MC_EN;
7259 } else {
7260 /* Accept one or more multicast(s). */
7261 DBPRINT(sc, BCE_INFO_MISC, "Enabling selective multicast mode.\n");
7262
7263 IF_ADDR_LOCK(ifp);
7263 if_maddr_rlock(ifp);
7264 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
7265 if (ifma->ifma_addr->sa_family != AF_LINK)
7266 continue;
7267 h = ether_crc32_le(LLADDR((struct sockaddr_dl *)
7268 ifma->ifma_addr), ETHER_ADDR_LEN) & 0xFF;
7269 hashes[(h & 0xE0) >> 5] |= 1 << (h & 0x1F);
7270 }
7264 TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
7265 if (ifma->ifma_addr->sa_family != AF_LINK)
7266 continue;
7267 h = ether_crc32_le(LLADDR((struct sockaddr_dl *)
7268 ifma->ifma_addr), ETHER_ADDR_LEN) & 0xFF;
7269 hashes[(h & 0xE0) >> 5] |= 1 << (h & 0x1F);
7270 }
7271 IF_ADDR_UNLOCK(ifp);
7271 if_maddr_runlock(ifp);
7272
7273 for (i = 0; i < NUM_MC_HASH_REGISTERS; i++)
7274 REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), hashes[i]);
7275
7276 sort_mode |= BCE_RPM_SORT_USER0_MC_HSH_EN;
7277 }
7278
7279 /* Only make changes if the recive mode has actually changed. */

--- 3098 unchanged lines hidden ---
7272
7273 for (i = 0; i < NUM_MC_HASH_REGISTERS; i++)
7274 REG_WR(sc, BCE_EMAC_MULTICAST_HASH0 + (i * 4), hashes[i]);
7275
7276 sort_mode |= BCE_RPM_SORT_USER0_MC_HSH_EN;
7277 }
7278
7279 /* Only make changes if the recive mode has actually changed. */

--- 3098 unchanged lines hidden ---