Re: nve(4) patch - please test!

From: Bjoern A. Zeeb <bzeeb-lists_at_lists.zabbadoz.net>
Date: Sat, 10 Dec 2005 12:56:33 +0000 (UTC)
On Fri, 9 Dec 2005, Bjoern A. Zeeb wrote:

Hi,

> everyone out there who had only seen timeouts like
> 	nve0: device timeout (4)
> on nve and __never got it working at all__ please try this patch[1]
> which made my nve working from 0 to 99.
>
> I still can get timeouts by for example flood pinging another machine
> on the local LAN but it all recovers on it's own and I can work on
> that machine and do things like find / over ssh without losing
> connectivity. Fixing the timeouts will be another problem that needs
> to be addressed later.

After removing hw.physmem="3G" from my loader.conf of my 4GB RAM
machine I noticed that nve again was not working.

Anyone with >= 4GB RAM might want to try the updated version of the
patch which helps here.


[1] http://sources.zabbadoz.net/freebsd/patchset/nve-20051210-01.diff

Index: if_nve.c
===================================================================
RCS file: /shared/mirror/FreeBSD/r/ncvs/src/sys/dev/nve/if_nve.c,v
retrieving revision 1.19
diff -u -p -r1.19 if_nve.c
--- if_nve.c	7 Dec 2005 17:38:03 -0000	1.19
+++ if_nve.c	10 Dec 2005 12:53:06 -0000
_at__at_ -643,6 +643,10 _at__at_ nve_init_locked(struct nve_softc *sc)
  	nve_stop(sc);
  	DEBUGOUT(NVE_DEBUG_INIT, "nve: do pfnInit\n");

+	/* Setup multicast filter */
+	nve_setmulti(sc);
+	nve_ifmedia_upd_locked(ifp);
+
  	/* Setup Hardware interface and allocate memory structures */
  	error = sc->hwapi->pfnInit(sc->hwapi->pADCX,
  	    0, /* force speed */ 
_at__at_ -661,10 +665,6 _at__at_ nve_init_locked(struct nve_softc *sc)
  	sc->hwapi->pfnEnableInterrupts(sc->hwapi->pADCX);
  	sc->hwapi->pfnStart(sc->hwapi->pADCX);

-	/* Setup multicast filter */
-	nve_setmulti(sc);
-	nve_ifmedia_upd_locked(ifp);
-
  	/* Update interface parameters */
  	ifp->if_drv_flags |= IFF_DRV_RUNNING;
  	ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
_at__at_ -1306,7 +1306,7 _at__at_ nve_osalloc(PNV_VOID ctx, PMEMORY_BLOCK
  	sc = (struct nve_softc *)ctx;

  	mem->pLogical = (PVOID)contigmalloc(mem->uiLength, M_DEVBUF,
-	    M_NOWAIT | M_ZERO, 0, ~0, PAGE_SIZE, 0);
+	    M_NOWAIT | M_ZERO, 0, 0xffffffff, PAGE_SIZE, 0);

  	if (!mem->pLogical) {
  		device_printf(sc->dev, "memory allocation failed\n");

-- 
Bjoern A. Zeeb				bzeeb at Zabbadoz dot NeT
Received on Sat Dec 10 2005 - 12:02:45 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:49 UTC