kern/60250: [patch] rl(4) driver incorrect reset TX descriptors
after network errors
Andrew Belashov
bel at orel.ru
Mon Dec 15 02:50:23 PST 2003
>Number: 60250
>Category: kern
>Synopsis: [patch] rl(4) driver incorrect reset TX descriptors after network errors
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Dec 15 02:50:17 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: Andrew Belashov
>Release: FreeBSD 5.1-RELEASE sparc64
>Organization:
JSC "CenterTelecom"
>Environment:
System: FreeBSD white 5.1-RELEASE FreeBSD 5.1-RELEASE #1: Wed Dec 10 16:15:47 MSK 2003 bel at orel.ru:/usr/obj/usr/src/sys/WHITE sparc64
>Description:
Kernel panic with message "panic: trap: memory address not aligned"
on FreeBSD/sparc64 after network errors on rl(4) interface.
The reason: Driver incorrect reset array of TX descriptors (DVMA
address).
>How-To-Repeat:
>Fix:
Use this patch.
--- if_rl.c.diff begins here ---
--- sys/pci/if_rl.c.orig Sun Jul 6 10:11:14 2003
+++ sys/pci/if_rl.c Wed Dec 10 16:07:14 2003
@@ -1832,7 +1832,8 @@
sc->rl_cdata.rl_tx_dmamap[i]);
m_freem(sc->rl_cdata.rl_tx_chain[i]);
sc->rl_cdata.rl_tx_chain[i] = NULL;
- CSR_WRITE_4(sc, RL_TXADDR0 + i, 0x0000000);
+ CSR_WRITE_4(sc, RL_TXADDR0 + (i * sizeof(u_int32_t)),
+ 0x0000000);
}
}
--- if_rl.c.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list