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