View | Details | Raw Unified | Return to bug 140647
Collapse All | Expand All

(-)if_em.c (-3 / +22 lines)
Lines 1277-1282 Link Here
1277
				    (IFF_PROMISC | IFF_ALLMULTI)) {
1277
				    (IFF_PROMISC | IFF_ALLMULTI)) {
1278
					em_disable_promisc(adapter);
1278
					em_disable_promisc(adapter);
1279
					em_set_promisc(adapter);
1279
					em_set_promisc(adapter);
1280
					/* em_set_multi() will set
1281
					   multicast promiscuous mode
1282
					   when there is a large number
1283
					   of groups.  Therefore, if we
1284
					   play around with the
1285
					   promiscuous flags, we should
1286
					   call em_set_multi to give it
1287
					   a chance to re-enable
1288
					   multicast promiscuous mode,
1289
					   if required. */
1290
					em_set_multi(adapter);
1280
				}
1291
				}
1281
			} else
1292
			} else
1282
				em_init_locked(adapter);
1293
				em_init_locked(adapter);
Lines 2555-2566 Link Here
2555
	}
2566
	}
2556
	if_maddr_runlock(ifp);
2567
	if_maddr_runlock(ifp);
2557
2568
2569
	reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL);
2558
	if (mcnt >= MAX_NUM_MULTICAST_ADDRESSES) {
2570
	if (mcnt >= MAX_NUM_MULTICAST_ADDRESSES) {
2559
		reg_rctl = E1000_READ_REG(&adapter->hw, E1000_RCTL);
2560
		reg_rctl |= E1000_RCTL_MPE;
2571
		reg_rctl |= E1000_RCTL_MPE;
2561
		E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl);
2572
	} else {
2562
	} else
2573
		/* Turn off multicast promiscuous mode if it
2574
		   is on and it doesn't need to be enabled
2575
		   according to the if_flags. */
2576
		if ((reg_rctl & E1000_RCTL_MPE) &&
2577
		    !(ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC))) {
2578
			reg_rctl &= (~E1000_RCTL_MPE);
2579
		}
2563
		e1000_update_mc_addr_list(&adapter->hw, mta, mcnt);
2580
		e1000_update_mc_addr_list(&adapter->hw, mta, mcnt);
2581
	}
2582
	E1000_WRITE_REG(&adapter->hw, E1000_RCTL, reg_rctl);
2564
2583
2565
	if (adapter->hw.mac.type == e1000_82542 && 
2584
	if (adapter->hw.mac.type == e1000_82542 && 
2566
	    adapter->hw.revision_id == E1000_REVISION_2) {
2585
	    adapter->hw.revision_id == E1000_REVISION_2) {

Return to bug 140647