Subject: RE: Intel Ether Express 16
To: 'netbsd-bugs' <netbsd-bugs@NetBSD.ORG>
From: John A. Maier <root@beta.datastorm.com>
List: netbsd-ports
Date: 02/13/1996 14:22:58
------ =_NextPart_000_01BAFA1E.E42B0F20
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Digging though the src/sys/dev/isa/if_ie.c prob code, I discovered that =
the probe code only recognizes EXP16 cards with the memory-mapped buffer =
set to 32Kbytes.
1) My card was set to no memory-mapping (factory default), which is okay =
if you're running DOS ODI network drivers.
2) After looking through the code I realized I had to have =
memory-mapping turned on, so I ran the DOS Exp16 setup program softset. =
So that point I didn't realize that the memory-mapping was set to only =
16Kbytes and the auto probe code wanted a 32K region.
3) I started hacking on the code and found that the memory-map codes =
being returned by my card were different from the code. So I read the =
comments again and then realized that the memory-mapped area had to be a =
32K region. Changed it via softset.exe and things began to work.
4) Just for fun I hacked the if_ie.c file to support 16K memory-mapped =
areas. The comments imply that this wont work, but it does, at least =
for me.
/* 16K buffer support, John A. Maier 02/13/96 14:22
*
* Table for 16K buffers
* value msize location
* =3D=3D=3D=3D=3D =3D=3D=3D=3D=3D =
=3D=3D=3D=3D=3D=3D=3D=3D
* 0x01 0x4000 0xCC000
* 0x02 0x4000 0xD0000
* 0x04 0x4000 0xD4000
* 0x08 0x4000 0xD8000
*
* Table for 32K buffers
* value msize location
* =3D=3D=3D=3D=3D =3D=3D=3D=3D=3D =
=3D=3D=3D=3D=3D=3D=3D=3D
* 0x03 0x8000 0xCC000
* 0x06 0x8000 0xD0000
* 0x0C 0x8000 0xD4000
* 0x18 0x8000 0xD8000
*
*/
if ((ia->ia_maddr =3D=3D MADDRUNK) || (ia->ia_msize =3D=3D 0)) {
i =3D (ee16_read_eeprom(sc, 6) & 0x00ff ) >> 3;
switch(i) {
case 0x01: /* 16K buffer size */
ia->ia_maddr =3D 0xCC000;
ia->ia_msize =3D 0xx4000;
break;
case 0x02: /* 16K buffer size */
ia->ia_maddr =3D 0xCC000;
ia->ia_msize =3D 0x4000;
break;
case 0x03: /* 32K buffer size */
ia->ia_maddr =3D 0xCC000;
ia->ia_msize =3D 0x8000;
break;
case 0x04: /* 16K buffer size */
ia->ia_maddr =3D 0xCC000;
ia->ia_msize =3D 0x4000;
break;
case 0x06: /* 32K buffer size */
ia->ia_maddr =3D 0xD0000;
ia->ia_msize =3D 0x8000;
break;
case 0x08: /* 16K buffer size */
ia->ia_maddr =3D 0xCC000;
ia->ia_msize =3D 0x4000;
break;
case 0x0c: /* 32K buffer size */
ia->ia_maddr =3D 0xD4000;
ia->ia_msize =3D 0x8000;
break;
case 0x18: /* 32K buffer size */
ia->ia_maddr =3D 0xD8000;
ia->ia_msize =3D 0x8000;
break;
default:
printf("ie: An EtherExpress 16 was =
detected but memory-mapping is turned off.\n);
printf("ie: Run the Exp16 DOS setup =
program softset.exe to correct this error.\n");
printf("ie: Set the Memory-Mapped =
Buffering to 32 Kbytes for optimal performance.\n");
return 0 ;
break; /* NOTREACHED */
}
}
/*
* If the buffer is set to 16K inform the user to bump
* the buffering up for better performance.
*/
if(ia->ia_msize =3D=3D 0x4000)
printf("ie: Set the Memory-Mapped Buffering to 32 Kbytes =
for optimal performance.\n");
=20
/* need to set these after checking for MADDRUNK */
sc->sc_maddr =3D ISA_HOLE_VADDR(ia->ia_maddr);
sc->sc_msize =3D ia->ia_msize;
/* need to put the 586 in RESET, and leave it */
outb( PORT + IEE16_ECTRL, IEE16_RESET_586);
/* read the eeprom and checksum it, should =3D=3D IEE16_ID */
for(i=3D0 ; i< 0x40 ; i++)
checksum +=3D ee16_read_eeprom(sc, i);
if (checksum !=3D IEE16_ID)
return 0;
/*
* Size and test the memory on the board. The size of the =
memory
* can be one of 16k, 32k, 48k or 64k. It can be located in the
* address range 0xC0000 to 0xEFFFF on 16k boundaries.
*
* If the size does not match the passed in memory allocation =
size
* issue a warning, but continue with the minimum of the two =
sizes.
*/
switch (ia->ia_msize) {
case 65536:
case 32768:
case 16384:
break;
case 49512:
default:
printf("ieprobe mapped memory size out of =
range\n");
return 0;
break; /* NOTREACHED */
}
I realize that a 32K buffer is better than 32K, but just getting the =
Intel EtherExpress 16 to work would have make me happier. If there is =
some problem with using 16K buffers, it would be nice to at least inform =
the user, during auto-probe, to run the Intel EtherExpress 16 setup =
program and set the buffer size to 32K. If a user doesn't have =
memory-mapping turned on, return a message informing the user to turn =
memory-mapping on.
if ((ia->ia_maddr =3D=3D MADDRUNK) || (ia->ia_msize =3D=3D 0)) {
i =3D (ee16_read_eeprom(sc, 6) & 0x00ff ) >> 3;
switch(i) {
case 0x03: /* 32K buffer size */
ia->ia_maddr =3D 0xCC000;
ia->ia_msize =3D 0x8000;
break;
case 0x06: /* 32K buffer size */
ia->ia_maddr =3D 0xD0000;
ia->ia_msize =3D 0x8000;
break;
case 0x0c: /* 32K buffer size */
ia->ia_maddr =3D 0xD4000;
ia->ia_msize =3D 0x8000;
break;
case 0x18: /* 32K buffer size */
ia->ia_maddr =3D 0xD8000;
ia->ia_msize =3D 0x8000;
break;
case 0x01: /* 16K buffer size at 0xCC000*/
case 0x02: /* 16K buffer size at 0xD0000*/
case 0x04: /* 16K buffer size at 0xD4000*/
case 0x08: /* 16K buffer size at 0xD8000*/
printf("ie: In DOS, run the =
EtherExpress16 setup program, softset.exe");
printf("ie: Change Memory-Mapped Buffer =
to 32K.\n");=20
return 0 ;
break; /* 16K buffer size isn't current =
supported */
default:
printf("ie: An EtherExpress 16 was =
detected but memory-mapping is turned off.\n);
printf("ie: Run the Exp16 DOS setup =
program softset.exe to correct this error.\n");
printf("ie: Be sure to set the =
Memory-Mapped Buffering to 32 Kbytes.\n");
return 0 ;
break; /* NOTREACHED */
}
}
------ =_NextPart_000_01BAFA1E.E42B0F20
Content-Type: application/ms-tnef
Content-Transfer-Encoding: base64
eJ8+IjEUAQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAENgAQAAgAAAAIAAgABBJAG
APQEAAAEAAAADAAAAAMAADAMAAAACwAPDgEAAAACAf8PAQAAAGwAAAAAAAAAtTvCwCx3EBqhvAgA
KypWwhUAAAAMbNoIw4bOEbjsAKoAU2VMJIIAAAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAAG5ldGJz
ZC1idWdzAFNNVFAAbmV0YnNkLWJ1Z3NATmV0QlNELk9SRwAeAAIwAQAAAAUAAABTTVRQAAAAAB4A
AzABAAAAFwAAAG5ldGJzZC1idWdzQE5ldEJTRC5PUkcAAAMAFQwBAAAAAwD+DwYAAAAeAAEwAQAA
AA4AAAAnbmV0YnNkLWJ1Z3MnAAAAAgELMAEAAAAcAAAAU01UUDpORVRCU0QtQlVHU0BORVRCU0Qu
T1JHAAMAADkAAAAACwBAOgAAAAACAfYPAQAAAAQAAAAAAAAMDAAAAAMAADANAAAACwAPDgEAAAAC
Af8PAQAAAGwAAAAAAAAAtTvCwCx3EBqhvAgAKypWwhUAAAAMbNoIw4bOEbjsAKoAU2VM5IIAAAAA
AACBKx+kvqMQGZ1uAN0BD1QCAAAAAG5ldGJzZC1oZWxwAFNNVFAAbmV0YnNkLWhlbHBATmV0QlNE
Lk9SRwAeAAIwAQAAAAUAAABTTVRQAAAAAB4AAzABAAAAFwAAAG5ldGJzZC1oZWxwQE5ldEJTRC5P
UkcAAAMAFQwCAAAAAwD+DwYAAAAeAAEwAQAAAA4AAAAnbmV0YnNkLWhlbHAnAAAAAgELMAEAAAAc
AAAAU01UUDpORVRCU0QtSEVMUEBORVRCU0QuT1JHAAMAADkAAAAACwBAOgAAAAACAfYPAQAAAAQA
AAAAAAANDAAAAAMAADAOAAAACwAPDgAAAAACAf8PAQAAAG4AAAAAAAAAtTvCwCx3EBqhvAgAKypW
whUAAAAMbNoIw4bOEbjsAKoAU2VMhIIAAAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAAG5ldGJzZC1w
b3J0cwBTTVRQAG5ldGJzZC1wb3J0c0BOZXRCU0QuT1JHAAAAHgACMAEAAAAFAAAAU01UUAAAAAAe
AAMwAQAAABgAAABuZXRic2QtcG9ydHNATmV0QlNELk9SRwADABUMAgAAAAMA/g8GAAAAHgABMAEA
AAAPAAAAJ25ldGJzZC1wb3J0cycAAAIBCzABAAAAHQAAAFNNVFA6TkVUQlNELVBPUlRTQE5FVEJT
RC5PUkcAAAAAAwAAOQAAAAALAEA6AQAAAAIB9g8BAAAABAAAAAAAAA4MAAAAAwAAMA8AAAALAA8O
AAAAAAIB/w8BAAAAbgAAAAAAAAC1O8LALHcQGqG8CAArKlbCFQAAAAxs2gjDhs4RuOwAqgBTZUxk
gAAAAAAAAIErH6S+oxAZnW4A3QEPVAIAAAAASmFzb24gUi4gVGhvcnBlAFNNVFAAdGhvcnBlakBu
YXMubmFzYS5nb3YAAAAeAAIwAQAAAAUAAABTTVRQAAAAAB4AAzABAAAAFQAAAHRob3JwZWpAbmFz
Lm5hc2EuZ292AAAAAAMAFQwBAAAAAwD+DwYAAAAeAAEwAQAAABIAAAAnSmFzb24gUi4gVGhvcnBl
JwAAAAIBCzABAAAAGgAAAFNNVFA6VEhPUlBFSkBOQVMuTkFTQS5HT1YAAAADAAA5AAAAAAsAQDoB
AAAAAgH2DwEAAAAEAAAAAAAAD1f1AQiABwAYAAAASVBNLk1pY3Jvc29mdCBNYWlsLk5vdGUAMQgB
BIABABwAAABSRTogSW50ZWwgRXRoZXIgRXhwcmVzcyAxNiAAtggBBYADAA4AAADMBwIADQAOABYA
OgACAEIBASCAAwAOAAAAzAcCAA0ADgAWADoAAgBCAQEJgAEAIQAAAEE3MjJEMjg0MDQ2NkNGMTFC
OEVEMDBBQTAwNTM2NTRDAAgHAQOQBgC8DQAAEgAAAAsAIwAAAAAAAwAmAAAAAAALACkAAAAAAAMA
NgAAAAAAQAA5AOADuBBR+roBHgBwAAEAAAAcAAAAUkU6IEludGVsIEV0aGVyIEV4cHJlc3MgMTYg
AAIBcQABAAAAFgAAAAG6+lEQnoTSIrJmBBHPuO0AqgBTZUwAAB4AHgwBAAAAAwAAAE1TAAAeAB8M
AQAAABUAAABEU1VTL0RTVVNNQUlML0pvaG5BTQAAAAADAAYQdILGUgMABxDqDwAAHgAIEAEAAABl
AAAARElHR0lOR1RIT1VHSFRIRVNSQy9TWVMvREVWL0lTQS9JRklFQ1BST0JDT0RFLElESVNDT1ZF
UkVEVEhBVFRIRVBST0JFQ09ERU9OTFlSRUNPR05JWkVTRVhQMTZDQVJEU1dJVAAAAAACAQkQAQAA
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
AFJFOiAAAAAAono=
------ =_NextPart_000_01BAFA1E.E42B0F20--