View | Details | Raw Unified | Return to bug 238411 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/dev/e1000/if_em.c (-5 / +23 lines)
Lines 3279-3290 em_reset(if_ctx_t ctx) Link Here
3279
3279
3280
	/* Issue a global reset */
3280
	/* Issue a global reset */
3281
	e1000_reset_hw(hw);
3281
	e1000_reset_hw(hw);
3282
	if (hw->mac.type >= igb_mac_min) {
3283
		E1000_WRITE_REG(hw, E1000_WUC, 0);
3284
	} else {
3285
		E1000_WRITE_REG(hw, E1000_WUFC, 0);
3286
		em_disable_aspm(sc);
3282
		em_disable_aspm(sc);
3287
	}
3283
		
3288
	if (sc->flags & IGB_MEDIA_RESET) {
3284
	if (sc->flags & IGB_MEDIA_RESET) {
3289
		e1000_setup_init_funcs(hw, true);
3285
		e1000_setup_init_funcs(hw, true);
3290
		e1000_get_bus_info(hw);
3286
		e1000_get_bus_info(hw);
Lines 4425-4430 em_get_wakeup(if_ctx_t ctx) Link Here
4425
	case e1000_pch2lan:
4421
	case e1000_pch2lan:
4426
	case e1000_pch_lpt:
4422
	case e1000_pch_lpt:
4427
	case e1000_pch_spt:
4423
	case e1000_pch_spt:
4424
	case e1000_pch_cnp:
4425
	case e1000_pch_tgp:
4426
	case e1000_pch_adp:
4427
	case e1000_pch_mtp:
4428
	case e1000_82575:	/* listing all igb devices */
4428
	case e1000_82575:	/* listing all igb devices */
4429
	case e1000_82576:
4429
	case e1000_82576:
4430
	case e1000_82580:
4430
	case e1000_82580:
Lines 4514-4526 em_enable_wakeup(if_ctx_t ctx) Link Here
4514
	 */
4514
	 */
4515
	if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) == 0)
4515
	if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) == 0)
4516
		sc->wol &= ~E1000_WUFC_MAG;
4516
		sc->wol &= ~E1000_WUFC_MAG;
4517
	else
4518
		sc->wol |= E1000_WUFC_MAG;
4517
4519
4518
	if ((if_getcapenable(ifp) & IFCAP_WOL_UCAST) == 0)
4520
	if ((if_getcapenable(ifp) & IFCAP_WOL_UCAST) == 0)
4519
		sc->wol &= ~E1000_WUFC_EX;
4521
		sc->wol &= ~E1000_WUFC_EX;
4522
	else
4523
		sc->wol |= E1000_WUFC_EX;
4520
4524
4521
	if ((if_getcapenable(ifp) & IFCAP_WOL_MCAST) == 0)
4525
	if ((if_getcapenable(ifp) & IFCAP_WOL_MCAST) == 0)
4522
		sc->wol &= ~E1000_WUFC_MC;
4526
		sc->wol &= ~E1000_WUFC_MC;
4523
	else {
4527
	else {
4528
		sc->wol |= E1000_WUFC_MC;
4524
		rctl = E1000_READ_REG(&sc->hw, E1000_RCTL);
4529
		rctl = E1000_READ_REG(&sc->hw, E1000_RCTL);
4525
		rctl |= E1000_RCTL_MPE;
4530
		rctl |= E1000_RCTL_MPE;
4526
		E1000_WRITE_REG(&sc->hw, E1000_RCTL, rctl);
4531
		E1000_WRITE_REG(&sc->hw, E1000_RCTL, rctl);
Lines 4664-4671 em_disable_aspm(struct e1000_softc *sc) Link Here
4664
{
4669
{
4665
	int base, reg;
4670
	int base, reg;
4666
	u16 link_cap,link_ctrl;
4671
	u16 link_cap,link_ctrl;
4672
	u32 wuc;
4667
	device_t dev = sc->dev;
4673
	device_t dev = sc->dev;
4674
	struct e1000_hw *hw = &sc->hw;
4668
4675
4676
	/*
4677
	 * untouch PME_EN and APME bits
4678
	 * wake on lan isn't fully disabled but any events isn't connectted
4679
	 */
4680
	wuc = E1000_READ_REG(hw, E1000_WUC);
4681
	wuc &= (E1000_WUC_PME_EN | E1000_WUC_APME);
4682
	E1000_WRITE_REG(hw, E1000_WUC, wuc);
4683
4684
	/* disconnet all events from wakeup */
4685
	E1000_WRITE_REG(hw, E1000_WUFC, 0);
4686
 
4669
	switch (sc->hw.mac.type) {
4687
	switch (sc->hw.mac.type) {
4670
	case e1000_82573:
4688
	case e1000_82573:
4671
	case e1000_82574:
4689
	case e1000_82574:

Return to bug 238411