Date: Fri, 13 Apr 2001 15:56:04 -0700 (PDT) From: Doug Ambrisko <ambrisko@ambrisko.com> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/26547: "lnc" problem with shared memory mode with PCnet-ISA II Message-ID: <200104132256.f3DMu4L42247@ambrisko.com>
next in thread | raw e-mail | index | archive | help
>Number: 26547
>Category: kern
>Synopsis: "lnc" problem with shared memory mode with PCnet-ISA II
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Apr 13 16:00:13 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Doug Ambrisko
>Release: FreeBSD 4.3-RC i386
>Organization:
Whistle/IBM
>Environment:
System: FreeBSD server2.ambrisko.com 4.3-RC FreeBSD 4.3-RC #3: Sat Apr 7 14:18:35 PDT 2001 ambrisko@server2.ambrisko.com:/usr/src/sys/compile/SERVER i386
>Description:
The Airport base station can only use this chips in shared
memory mode. The kernel configuration was being ignored
for this chip and in some cases using the iobase for the
shmem base. If shared memory set in the kernel then this
fix listens to it.
>How-To-Repeat:
Netboot an Airport base station and it will fail without
this. Code for the netboot coming later.
>Fix:
Index: if_lnc.c
===================================================================
RCS file: /cvs/freebsd/src/sys/i386/isa/Attic/if_lnc.c,v
retrieving revision 1.68.2.4
diff -c -r1.68.2.4 if_lnc.c
*** if_lnc.c 2001/01/08 15:37:59 1.68.2.4
--- if_lnc.c 2001/04/13 22:48:06
***************
*** 887,892 ****
--- 887,899 ----
printf("Vendor Specific Word = %x\n", vsw);
#endif
+ sc->nic.mem_mode=0;
+ sc->recv_ring = (struct host_ring_entry *)isa_dev->id_maddr;
+ if(sc->recv_ring){
+ isa_dev->id_msize=0x10000;
+ sc->nic.mem_mode=SHMEM;
+ }
+
nports = bicc_probe(sc, iobase);
if (nports == 0)
nports = ne2100_probe(sc, iobase);
***************
*** 990,996 ****
sc->nic.ic = pcnet_probe(sc);
if ((sc->nic.ic > 0) && (sc->nic.ic < PCnet_PCI)) {
sc->nic.ident = NE2100;
! sc->nic.mem_mode = DMA_FIXED;
/* XXX - For now just use the defines */
sc->nrdre = NRDRE;
--- 997,1004 ----
sc->nic.ic = pcnet_probe(sc);
if ((sc->nic.ic > 0) && (sc->nic.ic < PCnet_PCI)) {
sc->nic.ident = NE2100;
! if(sc->nic.mem_mode != SHMEM)
! sc->nic.mem_mode = DMA_FIXED;
/* XXX - For now just use the defines */
sc->nrdre = NRDRE;
***************
*** 1357,1363 ****
sc->trans_next = 0;
if (sc->nic.mem_mode == SHMEM)
! lnc_mem = (char *) sc->nic.iobase;
else
lnc_mem = (char *) (sc->trans_ring + NDESC(sc->ntdre));
--- 1365,1371 ----
sc->trans_next = 0;
if (sc->nic.mem_mode == SHMEM)
! lnc_mem = (char *) (sc->trans_ring + NDESC(sc->ntdre));
else
lnc_mem = (char *) (sc->trans_ring + NDESC(sc->ntdre));
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104132256.f3DMu4L42247>
