Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Aug 2010 00:57:39 +0300
From:      "Vladislav V. Prodan" <universite@ukr.net>
To:        freebsd-net@freebsd.org
Subject:   Error: em0: Watchdog timeout -- resetting
Message-ID:  <4C744053.6010403@ukr.net>

next in thread | raw e-mail | index | archive | help
The server is sometimes off the network card.
It helps just to restart via KVM-IPMI.

MotherBoard: X8SIL/X8SIL-F
BIOS Version:	1.0c
Build Date:	02/05/10

OS: FreeBSD 8.1-RELEASE, FreeBSD 8.1-STABLE, FreeBSD 9.0-CURRENT

What would you recommend to address the problem?


# uname -a
FreeBSD solo.XXX.biz 9.0-CURRENT FreeBSD 9.0-CURRENT #0: Tue Aug 24
15:52:21 EEST 2010     root@solo.XXX.biz:/usr/obj/usr/src/sys/solo.2  amd64

#pciconf -lv
...
em0@pci0:2:0:0: class=0x020000 card=0x060515d9 chip=0x10d38086 rev=0x00
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
    class      = network
    subclass   = ethernet
em1@pci0:3:0:0: class=0x020000 card=0x060515d9 chip=0x10d38086 rev=0x00
hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Intel 82574L Gigabit Ethernet Controller (82574L)'
    class      = network
    subclass   = ethernet
...

In /usr/src/sys/dev/e1000/if_em.c:

static void
em_local_timer(void *arg)
{
	struct adapter	*adapter = arg;
	struct ifnet	*ifp = adapter->ifp;
	struct tx_ring	*txr = adapter->tx_rings;

	EM_CORE_LOCK_ASSERT(adapter);

	em_update_link_status(adapter);
	em_update_stats_counters(adapter);

	/* Reset LAA into RAR[0] on 82571 */
	if (e1000_get_laa_state_82571(&adapter->hw) == TRUE)
		e1000_rar_set(&adapter->hw, adapter->hw.mac.addr, 0);

	/*
	** Check for time since any descriptor was cleaned
	*/
	for (int i = 0; i < adapter->num_queues; i++, txr++) {
		EM_TX_LOCK(txr);
		if (txr->watchdog_check == FALSE) {
			EM_TX_UNLOCK(txr);
			continue;
		}
		if ((ticks - txr->watchdog_time) > EM_WATCHDOG)
			goto hung;
		EM_TX_UNLOCK(txr);
	}

	callout_reset(&adapter->timer, hz, em_local_timer, adapter);
	return;
hung:
	device_printf(adapter->dev, "Watchdog timeout -- resetting\n");
	ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
	adapter->watchdog_events++;
	EM_TX_UNLOCK(txr);
	em_init_locked(adapter);
}

Someone will finish the piece for debugging, to further diagnose the error?




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C744053.6010403>