reduce Tx/Rx maximum number of words (as PDF says) in one DMA

transaction to 8.  value 32 triggers occational watchdog() Tx
timeout when higher system load.  This symptom is observed in
ipforwarding across two PCI devices case so far, and it remains
unidentified what really happens for Tx DMA activity.  16 seems
ok, 8 is conservative and heuristic value.  may need more adjustment
work in other parts.
This commit is contained in:
nisimura 2007-11-16 10:31:57 +00:00
parent 31b46e1b7e
commit 035cfa139a

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_kse.c,v 1.10 2007/10/19 12:00:46 ad Exp $ */ /* $NetBSD: if_kse.c,v 1.11 2007/11/16 10:31:57 nisimura Exp $ */
/* /*
* Copyright (c) 2006 Tohru Nishimura * Copyright (c) 2006 Tohru Nishimura
@ -30,7 +30,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1.10 2007/10/19 12:00:46 ad Exp $"); __KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1.11 2007/11/16 10:31:57 nisimura Exp $");
#include "bpfilter.h" #include "bpfilter.h"
@ -292,7 +292,7 @@ do { \
KSE_CDRXSYNC((sc), (x), BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); \ KSE_CDRXSYNC((sc), (x), BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); \
} while (/*CONSTCOND*/0) } while (/*CONSTCOND*/0)
u_int kse_burstsize = 32; /* DMA burst length tuning knob */ u_int kse_burstsize = 8; /* DMA burst length tuning knob */
#ifdef KSEDIAGNOSTIC #ifdef KSEDIAGNOSTIC
u_int kse_monitor_rxintr; /* fragmented UDP csum HW bug hook */ u_int kse_monitor_rxintr; /* fragmented UDP csum HW bug hook */