Date: Thu, 12 Jun 1997 04:11:42 -0700 (PDT) From: chi@rd.njk.co.jp To: freebsd-gnats-submit@FreeBSD.ORG Subject: kern/3853: netboot/ns8390.c breaks NS datasheet Message-ID: <199706121111.EAA23129@hub.freebsd.org> Resent-Message-ID: <199706121120.EAA23457@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 3853 >Category: kern >Synopsis: netboot/ns8390.c breaks NS datasheet >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Jun 12 04:20:01 PDT 1997 >Last-Modified: >Originator: Chiharu Shibata >Organization: NJK Corporation >Release: FreeBSD 2.1.0 or later >Environment: FreeBSD 2.1.0-Release i386 >Description: About DP8390 chip(NE2000 or compatible), NS datasheet claims that writing all 0 to bit3,4,5(means RD0,RD1,RD2) of Command Register is "Not Allowed". But in netboot/ns8390.c, a few statements do so. We can get the datasheet from <http://www.national.com/pf/DP/DP83902A.html> (This datasheet is DP83902A, but according to "Features", it is 100% software compatible with DP8390) >How-To-Repeat: None >Fix: --- /usr/src/sys/i386/boot/netboot/ns8390.c.orig Thu Jun 12 13:33:50 1997 +++ /usr/src/sys/i386/boot/netboot/ns8390.c Thu Jun 12 13:36:07 1997 @@ -480,9 +480,19 @@ if (!(rstat & D8390_RSTAT_PRX)) return(0); bound = inb(eth_nic_base+D8390_P0_BOUND)+1; if (bound == eth_memsize) bound = eth_tx_start + D8390_TXBUF_SIZE; - outb(eth_nic_base+D8390_P0_COMMAND, D8390_COMMAND_PS1); + if (eth_flags & FLAG_790) + outb(eth_nic_base+D8390_P0_COMMAND, D8390_COMMAND_PS1 | + D8390_COMMAND_STA); + else + outb(eth_nic_base+D8390_P0_COMMAND, D8390_COMMAND_PS1 | + D8390_COMMAND_RD2 | D8390_COMMAND_STA); curr = inb(eth_nic_base+D8390_P1_CURR); - outb(eth_nic_base+D8390_P0_COMMAND, D8390_COMMAND_PS0); + if (eth_flags & FLAG_790) + outb(eth_nic_base+D8390_P0_COMMAND, D8390_COMMAND_PS0 | + D8390_COMMAND_STA); + else + outb(eth_nic_base+D8390_P0_COMMAND, D8390_COMMAND_PS0 | + D8390_COMMAND_RD2 | D8390_COMMAND_STA); if (curr == eth_memsize) curr=eth_tx_start + D8390_TXBUF_SIZE; if (curr == bound) return(0); if (eth_vendor == VENDOR_WD) { >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706121111.EAA23129>