ADVERTISEMENT

C18.zip

Sterowniki do karty Realtek RTL8029AS na Windows XP SP1 - brak kompatybilnych?

A wiec wydaje sie, ze nie mozesz zainstalowac sterownikow poniewaz masz sterowniki do innego windowsa, nie powiesz chyba ze na tym 133 zainstalowales XP, bo na tym nowym komputerze pewnie masz pewnie windowsa XP tak? A wiec wyszukalem w sieci sterownki do twojego RTL8029AS do roznych systemow, ktore powinny ci pomoc. Dosc dlugo szukalem bo ta twoja sieciowka to chyba zabytek bo nigdzie nie bylo sterow pod win XP same do win 95 lub win 98, jednak udalo mi sie znalezc takie ogolne do wszystkich systemow. Jesli zainstalujesz i dalj bedzie lipa, to niestety musisz albo zmienic system na starszy albo kupic nowa sieciowke <--- koszt 15 zl.


Download file - link to post
  • C18.zip
    • NETRTP.INF
    • RTL8029.SYS


C18.zip > MAINMENU.TXT

Diskette Contents
Files on Configuration Disk
Installing Novell network drivers
Workstation for DOS ODI Client
Workstation for OS/2 ODI Client
Server Driver for NetWare 3.11
Server Driver for NetWare 3.12
Server Driver for NetWare 4.1
Server Driver for NetWare 4.11
Client 32 for Windows 95
Installing IBM network drivers
LAN Server for OS/2 2.3
LAN Server for OS/2 4.0
Installing Microsoft network drivers
Microsoft Network Client for DOS
LAN Manager Workstation/Server
Windows for Workgroups v3.10
Windows for Workgroups v3.11
Windows NT 3.1
Windows NT 3.5, 3.51 &amp; 4.0
Windows 95 &amp; OSR2
Installing UNIX network drivers
SCO UNIX 4.X
SCO UNIX 5.X
Other Network Operating System Information
Packet Driver
LANtastic 4.0
LANtastic 5.0
LANtastic 6.0 with NDIS driver


C18.zip > VERSION.DOC

RTL8029 Driver Disk Version 3.55
date:1998.08.17



C18.zip > HISTORY.TXT

Driver History:

------------------------------------------------------------------------------------------------
RSET8029:

V 1.00 - 1995.04.11 - \New
V 2.00 - 1995.05.25 - \Add \t Text log function.

V 2.01 - 1995.08.15 - \Fix the bug of network diagnosis.

V 3.00 - 1996.01.20 - \Add the flow-control function for the 8029AS.

V 3.01 - 1997.04.01 - \Read the 8029AS ID from the EEPROM to differ the behavior of 8029
from the that of 8029as.
- \Fix the bug of the EEPROM test for 8029as.

V 3.02 - 1998.08.15 - \Change the method of EEPROM test to keep the correct EEPROM content.
(NEW)

------------------------------------------------------------------------------------------------

Boot Rom: Novell/Microsoft/IBM RPL Boot Rom Program

V 1.00 - 1995.03.17 - \New
V 1.10 - 1995.08.09 - \Add support Boot Rom for Microsoft Winnt , Lan Manager.
V 1.20 - 1996.08.29 - \Fixed for Winnt a: c: floppy and add version &amp; Date.
V 1.30 - 1997.07.02 - \Link newer PCIODI (pciodi.610) driver
V 3.00 - 1998.02.12 - \Link newer PCIODI (pciodi.620) driver
V 3.10 - 1998.07.31 - \Support remote-boot win95 image and installation document.
(NEW)
------------------------------------------------------------------------------------------------

DOSODI :Netware DOS ODI client .

V 1.00 - 1994.11.30 - \New

V 1.10 - 1995.01.23 - \Link with new LDDK
- \Card index begin from 1 not 0.
- \Fix smoe look aheader problem.
- \Bus type change.


V 5.11 - 1995.02.22 - \Fixed FIFO problem.


V 5.50 - 1995.05.05 - \In multiple-card case, user can use &quot; EtherID &quot; Keyword in
NET.CFG to specify the desired card this driver to attach. If
there are multi-card and user does not specify &quot; EtherID &quot; , driver
will prompt user to select one.

V 5.51 - 1995.05.20 - \Fixed the bug of pciodi.550 while there are one card only.

V 5.60 - 1995.08.02 - \To reserve more variabl length for patch file.

V 6.00 - 1996.01.17 - \Migrate PCIODI.560 to LDDK 3.02

V 6.10 - 1997.06.06 - \Fix the bug, which will result in compare errors,
in early receive.
- \If in promiscuous mode, execute normal read instead of
data prefetch, because ERGood will always trigger
interrupt and the Current reg is not yet updated.

V 6.20 - 1997.11.13 - \Add share interrupt function and fix driver unload bug.

V 6.30 - 1998.07.06 - \As in VerifyIRQ routine, do not enable promiscuous mode.
- \Call MSMUnSetIRQ when VerifyIRQ error.

------------------------------------------------------------------------------------------------

PCIOS2 :Netware OS/2 ODI client.

V 1.00 - 1995.07.05 - \New

V 1.01 - 1995.10.04 - \Preseved more characters in strings for patching string.

V 1.20 - 1996.11.04 - \Fixed it to tester for OS/2 certify.


-------------------------------------------------------------------------------------------------

PCISRV :Netware 3.x , 4.x , 5.x Server Driver

V 5.00 - 1995.03.22 - \Add early receive function in driver_isr proc.
- \Used direct scan in driver_init proc to find rtl8029.

V 5.01 - 1995.04.06 - \Replace msm31x.nlm &amp; msm.nlm with the Novell standary file.

V 5.02 - 1995.08.03 - \Reserve variable length for patch file.

V 6.00 - 1996.01.16 - \Migrate PCISRV.502 to LDDK 3.02

V 7.00 - 1997.02.04 - \Migrate PCISRV.600 to LDDK 4.00
- \Fixed some bugs for Client32

V 7.10 - 1997.06.06 - \Fix the bug, which will result in RxPagingError,
in early receive.
- \If in promiscuous mode, execute normal read instead of
data prefetch, because ERGood will always trigger
interrupt and the Current reg is not yet updated.

V 7.50 - 1998.03.11 - \Migrate PCISRV.710 to LDDK 5.00

V 7.51 - 1998.08.14 - \Migrate MSM.NLM and ETHERTSM.NLM for SFT III Server4.11 test
(NEW)
------------------------------------------------------------------------------------------------

Lantastic 4.x driver:

V 1.00 - 1994.11.30 - \New.
V 1.10 - 1995.08.04 - \Add support patch file to change driver name and title.

------------------------------------------------------------------------------------------------

Lantastic 5.x driver:

V 1.00 - 1994.11.30 - \New.
V 1.10 - 1995.08.04 - \Add support patch file to change driver name and title.

------------------------------------------------------------------------------------------------

Packet Driver:

V 1.00 - 1995.04.11 - \New
V 1.01 - 1995.08.04 - \Make it a patch-able driver with RTPATCH.EXE.

V 1.02 - 1997.12.24 - \Support Shared Interrupt.

-------------------------------------------------------------------------------------------------

NDIS 2 :support DOS/OS2 standard NDIS2 driver.

V 1.00 - 1994.11.11 - \New
V 1.10 - 1994.12.20 - \Add support Lan Manager OS/2 driver.
v 1.20 - 1995.01.04 - \Fix some main board detect iobase and irq.

v 1.30 - 1995.08.07 - \Modify ndis2 driver that it can adapt to RTPATCH.EXE.
v 1.40 - 1995.11.07 - \Fix PCIND.DOS in the Lan Manager 2.1 RPL services bug.
V 1.50 - 1996.05.21 - \Fix bug that PCIND.OS2 multiple card driver in lan server and lan manager
2.1 server.
V 2.00 - 1996.10.28 - \Fix bug that PCIND.DOS multiple card driver and add keyword NETADDRESS.
BUSNO , DEVICENO keyword for multiple cards.

V 2.10 - 1998.08.14 - \Modify low throughput for sending packet under
(NEW) MSCLIENT using TCPIP protocol.


-------------------------------------------------------------------------------------------------

NDIS 3:Windows for Workgroup 3.11 .386 driver.

V 1.00 - 1994.01.16 - \New

V 1.10 - 1995.08.08 - \Support driver to RTPATCH.EXE .


V 1.20 - 1996.10.09 - \Change driver name into PCIND$.

-------------------------------------------------------------------------------------------------

Miniport driver : ndis3 / ndis4 miniport driver for NT 3.5X ,NT 4.0 and win95 win98.

V 1.00 - 1995.02.13 - \New.

V 2.00 - 1995.05.05 - \Change MAX_IOBASEADDR to 0xffff in 8029HW.H
- \Add initial value before filling the Multicast address.
- \Remove NdisReadNetworkAddress in order not to support software settable
station addresses
- \Add NdisReadPciSlotInformation to get PCI resources for
- \Win NT 3.5, directly scanning is still used in NT 3.1


V 2.20 - 1997.03.05 - \Modified for NDISTEST issue in OSR2.

V 3.00 - 1997.11.20 - \Implement share-interrupt.
\Add &quot; duplex mode selection &quot; in driver.

V 3.50 - 1998.01.20 - \Modified for WHQL PC97 certification.

V 3.53 - 1998.07.24 - \Add direct scan pci configuration space to find RTL8029(AS) by the Boot
(NEW) Rom request .


-------------------------------------------------------------------------------------------------

SCO 4.x 5.x :SCO UNIX Driver Program

V 1.00 - 1995.03.01 - \New
V 1.01 - 1995.04.13 - \Use the double word to fetch IO &amp; IRQ to solve the
problem for particular mother board


V 1.02 - 1995.08.04 - \Use the patch file to patch the binary code (driver.o)
provide patch.txt to modify the orginal driver.

V 1.03 - 1995.08.18 - \Modify the setup file
- \Modify the remove file to be used under the sco unix 5.0.
- \Modify the driver name to avoid the conflict because of
the same driver name in the system.

V 2.00 - 1996.02.06 - \Add new driver in the directory 5.x.
- \This driver will follow the new MDI specification
for the SCO UNIX Open Server 5.0.

V 2.01 - 1997.04.15 - \Add share interrupt for the multiple cards.


------------------------------------------------------------------------------------------------


C18.zip > LINUX29.TXT

RTL8029 Linux Installation guide::

The procedure to activate rtl8029 on linux :
Hint:RTL8029 is ne2000 compatable.

step 1: make sure that kernel source code is included
(check /usr/src/linux)

step 2: recompile kernel:
cd to /usr/src/linux, them type 'make menuconfig'

select the following options(mark them as '*')
.enable module support
.networking support
.TCP/IP networking
.network device support
.ethernet
.ne2000/ne1000 support
step 3: after options are selected, exit and run
make dep;make clean;make zImage;
if no serious error happens, the new kernel 'zImage' will be in
/usr/src/linux/arch/i386/boot/zImage.
copy this file to root.
modify '/etc/lilo.conf' file to point to this new file.
run 'lilo'
reboot


step 4: when system boots, the driver will be load. check the /proc/pci
file if RTL8029 device is detected.

step 5: run netconfig to setup TCP/IP
(run 'ifconfig' or 'netstat -i' to see if there is a interface
'ne0')


C18.zip > Space.c

/*
* INET An implementation of the TCP/IP protocol suite for the LINUX
* operating system. INET is implemented using the BSD Socket
* interface as the means of communication with the user level.
*
* Holds initial configuration information for devices.
*
* NOTE: This file is a nice idea, but its current format does not work
* well for drivers that support multiple units, like the SLIP
* driver. We should actually have only one pointer to a driver
* here, with the driver knowing how many units it supports.
* Currently, the SLIP driver abuses the &quot; base_addr &quot; integer
* field of the 'device' structure to store the unit number...
* -FvK
*
* Version: @(#)Space.c 1.0.7 08/12/93
*
* Authors: Ross Biro, &amp; lt; bir7@leland.Stanford.Edu &amp; gt;
* Fred N. van Kempen, &amp; lt; waltje@uWalt.NL.Mugnet.ORG &amp; gt;
* Donald J. Becker, &amp; lt; becker@super.org &amp; gt;
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include &amp; lt; linux/config.h &amp; gt;
#include &amp; lt; linux/netdevice.h &amp; gt;
#include &amp; lt; linux/errno.h &amp; gt;

#define NEXT_DEV NULL


/* A unified ethernet device probe. This is the easiest way to have every
ethernet adaptor have the name &quot; eth[0123...] &quot; .
*/

extern int ultra_probe(struct device *dev);
extern int wd_probe(struct device *dev);
extern int el2_probe(struct device *dev);
extern int ne_probe(struct device *dev);
extern int r8e_probe(struct device *dev);
extern int r9e_probe(struct device *dev);
extern int hp_probe(struct device *dev);
extern int hp_plus_probe(struct device *dev);
extern int znet_probe(struct device *);
extern int express_probe(struct device *);
extern int el3_probe(struct device *);
extern int at1500_probe(struct device *);
extern int at1700_probe(struct device *);
extern int depca_probe(struct device *);
extern int apricot_probe(struct device *);
extern int ewrk3_probe(struct device *);
extern int de4x5_probe(struct device *);
extern int el1_probe(struct device *);
#if defined(CONFIG_WAVELAN)
extern int wavelan_probe(struct device *);
#endif /* defined(CONFIG_WAVELAN) */
extern int el16_probe(struct device *);
extern int elplus_probe(struct device *);
extern int ac3200_probe(struct device *);
extern int e2100_probe(struct device *);
extern int ni52_probe(struct device *);
extern int ni65_probe(struct device *);
extern int SK_init(struct device *);

/* Detachable devices ( &quot; pocket adaptors &quot; ) */
extern int atp_init(struct device *);
extern int de600_probe(struct device *);
extern int de620_probe(struct device *);

static int
ethif_probe(struct device *dev)
{
short base_addr = dev- &amp; gt; base_addr;

if (base_addr &amp; lt; 0 || base_addr == 1)
return 1; /* ENXIO */

if (1
#if defined(CONFIG_ULTRA)
&amp; &amp; ultra_probe(dev)
#endif
#if defined(CONFIG_WD80x3) || defined(WD80x3)
&amp; &amp; wd_probe(dev)
#endif
#if defined(CONFIG_EL2) || defined(EL2) /* 3c503 */
&amp; &amp; el2_probe(dev)
#endif
#if defined(CONFIG_NE2000) || defined(NE2000)
&amp; &amp; ne_probe(dev)
#endif
#if defined(CONFIG_RTL8019) || defined(RTL8019)
&amp; &amp; r8e_probe(dev)
#endif
#if defined(CONFIG_RTL8029) || defined(RTL8029)
&amp; &amp; r9e_probe(dev)
#endif
#if defined(CONFIG_HPLAN) || defined(HPLAN)
&amp; &amp; hp_probe(dev)
#endif
#if defined(CONFIG_HPLAN_PLUS)
&amp; &amp; hp_plus_probe(dev)
#endif
#ifdef CONFIG_AT1500
&amp; &amp; at1500_probe(dev)
#endif
#ifdef CONFIG_AT1700
&amp; &amp; at1700_probe(dev)
#endif
#ifdef CONFIG_EL3 /* 3c509 */
&amp; &amp; el3_probe(dev)
#endif
#ifdef CONFIG_ZNET /* Zenith Z-Note and some IBM Thinkpads. */
&amp; &amp; znet_probe(dev)
#endif
#ifdef CONFIG_EEXPRESS /* Intel EtherExpress */
&amp; &amp; express_probe(dev)
#endif
#ifdef CONFIG_DEPCA /* DEC DEPCA */
&amp; &amp; depca_probe(dev)
#endif
#ifdef CONFIG_EWRK3 /* DEC EtherWORKS 3 */
&amp; &amp; ewrk3_probe(dev)
#endif
#ifdef CONFIG_DE4X5 /* DEC DE425, DE434, DE435 adapters */
&amp; &amp; de4x5_probe(dev)
#endif
#ifdef CONFIG_APRICOT /* Apricot I82596 */
&amp; &amp; apricot_probe(dev)
#endif
#ifdef CONFIG_EL1 /* 3c501 */
&amp; &amp; el1_probe(dev)
#endif
#if defined(CONFIG_WAVELAN) /* WaveLAN */
&amp; &amp; wavelan_probe(dev)
#endif /* defined(CONFIG_WAVELAN) */
#ifdef CONFIG_EL16 /* 3c507 */
&amp; &amp; el16_probe(dev)
#endif
#ifdef CONFIG_ELPLUS /* 3c505 */
&amp; &amp; elplus_probe(dev)
#endif
#ifdef CONFIG_AC3200 /* Ansel Communications EISA 3200. */
&amp; &amp; ac3200_probe(dev)
#endif
#ifdef CONFIG_E2100 /* Cabletron E21xx series. */
&amp; &amp; e2100_probe(dev)
#endif
#ifdef CONFIG_DE600 /* D-Link DE-600 adapter */
&amp; &amp; de600_probe(dev)
#endif
#ifdef CONFIG_DE620 /* D-Link DE-620 adapter */
&amp; &amp; de620_probe(dev)
#endif
#if defined(CONFIG_SK_G16)
&amp; &amp; SK_init(dev)
#endif
#ifdef CONFIG_NI52
&amp; &amp; ni52_probe(dev)
#endif
#ifdef CONFIG_NI65
&amp; &amp; ni65_probe(dev)
#endif
&amp; &amp; 1 ) {
return 1; /* -ENODEV or -EAGAIN would be more accurate. */
}
return 0;
}



/* Run-time ATtachable (Pocket) devices have a different (not &quot; eth# &quot; ) name. */
#ifdef CONFIG_ATP /* AT-LAN-TEC (RealTek) pocket adaptor. */
static struct device atp_dev = {
&quot; atp0 &quot; , 0, 0, 0, 0, 0, 0, 0, 0, 0, NEXT_DEV, atp_init, /* ... */ };
# undef NEXT_DEV
# define NEXT_DEV ( &amp; atp_dev)
#endif

#ifdef CONFIG_ARCNET
extern int arcnet_probe(struct device *dev);
static struct device arcnet_dev = {
&quot; arc0 &quot; , 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, arcnet_probe, };
# undef NEXT_DEV
# define NEXT_DEV ( &amp; arcnet_dev)
#endif

/* The first device defaults to I/O base '0', which means autoprobe. */
#ifndef ETH0_ADDR
# define ETH0_ADDR 0
#endif
#ifndef ETH0_IRQ
# define ETH0_IRQ 0
#endif
/* &quot; eth0 &quot; defaults to autoprobe (== 0), other use a base of 0xffe0 (== -0x20),
which means &quot; don't probe &quot; . These entries exist to only to provide empty
slots which may be enabled at boot-time. */

static struct device eth3_dev = {
&quot; eth3 &quot; , 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, NEXT_DEV, ethif_probe };
static struct device eth2_dev = {
&quot; eth2 &quot; , 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &amp; eth3_dev, ethif_probe };
static struct device eth1_dev = {
&quot; eth1 &quot; , 0,0,0,0,0xffe0 /* I/O base*/, 0,0,0,0, &amp; eth2_dev, ethif_probe };

static struct device eth0_dev = {
&quot; eth0 &quot; , 0, 0, 0, 0, ETH0_ADDR, ETH0_IRQ, 0, 0, 0, &amp; eth1_dev, ethif_probe };

# undef NEXT_DEV
# define NEXT_DEV ( &amp; eth0_dev)

#if defined(PLIP) || defined(CONFIG_PLIP)
extern int plip_init(struct device *);
static struct device plip2_dev = {
&quot; plip2 &quot; , 0, 0, 0, 0, 0x278, 2, 0, 0, 0, NEXT_DEV, plip_init, };
static struct device plip1_dev = {
&quot; plip1 &quot; , 0, 0, 0, 0, 0x378, 7, 0, 0, 0, &amp; plip2_dev, plip_init, };
static struct device plip0_dev = {
&quot; plip0 &quot; , 0, 0, 0, 0, 0x3BC, 5, 0, 0, 0, &amp; plip1_dev, plip_init, };
# undef NEXT_DEV
# define NEXT_DEV ( &amp; plip0_dev)
#endif /* PLIP */

#if defined(SLIP) || defined(CONFIG_SLIP)
extern int slip_init(struct device *);

#ifdef SL_SLIP_LOTS

static struct device slip15_dev={ &quot; sl15 &quot; ,0,0,0,0,15,0,0,0,0,NEXT_DEV,slip_init};
static struct device slip14_dev={ &quot; sl14 &quot; ,0,0,0,0,14,0,0,0,0, &amp; slip15_dev,slip_init};
static struct device slip13_dev={ &quot; sl13 &quot; ,0,0,0,0,13,0,0,0,0, &amp; slip14_dev,slip_init};
static struct device slip12_dev={ &quot; sl12 &quot; ,0,0,0,0,12,0,0,0,0, &amp; slip13_dev,slip_init};
static struct device slip11_dev={ &quot; sl11 &quot; ,0,0,0,0,11,0,0,0,0, &amp; slip12_dev,slip_init};
static struct device slip10_dev={ &quot; sl10 &quot; ,0,0,0,0,10,0,0,0,0, &amp; slip11_dev,slip_init};
static struct device slip9_dev={ &quot; sl9 &quot; ,0,0,0,0,9,0,0,0,0, &amp; slip10_dev,slip_init};
static struct device slip8_dev={ &quot; sl8 &quot; ,0,0,0,0,8,0,0,0,0, &amp; slip9_dev,slip_init};
static struct device slip7_dev={ &quot; sl7 &quot; ,0,0,0,0,7,0,0,0,0, &amp; slip8_dev,slip_init};
static struct device slip6_dev={ &quot; sl6 &quot; ,0,0,0,0,6,0,0,0,0, &amp; slip7_dev,slip_init};
static struct device slip5_dev={ &quot; sl5 &quot; ,0,0,0,0,5,0,0,0,0, &amp; slip6_dev,slip_init};
static struct device slip4_dev={ &quot; sl4 &quot; ,0,0,0,0,4,0,0,0,0, &amp; slip5_dev,slip_init};
# undef NEXT_DEV
# define NEXT_DEV ( &amp; slip4_dev)
#endif /* SL_SLIP_LOTS */

static struct device slip3_dev = {
&quot; sl3 &quot; , /* Internal SLIP driver, channel 3 */
0x0, /* recv memory end */
0x0, /* recv memory start */
0x0, /* memory end */
0x0, /* memory start */
0x3, /* base I/O address */
0, /* IRQ */
0, 0, 0, /* flags */
NEXT_DEV, /* next device */
slip_init /* slip_init should set up the rest */
};
static struct device slip2_dev = {
&quot; sl2 &quot; , /* Internal SLIP driver, channel 2 */
0x0, /* recv memory end */
0x0, /* recv memory start */
0x0, /* memory end */
0x0, /* memory start */
0x2, /* base I/O address */
0, /* IRQ */
0, 0, 0, /* flags */
&amp; slip3_dev, /* next device */
slip_init /* slip_init should set up the rest */
};
static struct device slip1_dev = {
&quot; sl1 &quot; , /* Internal SLIP driver, channel 1 */
0x0, /* recv memory end */
0x0, /* recv memory start */
0x0, /* memory end */
0x0, /* memory start */
0x1, /* base I/O address */
0, /* IRQ */
0, 0, 0, /* flags */
&amp; slip2_dev, /* next device */
slip_init /* slip_init should set up the rest */
};
static struct device slip0_dev = {
&quot; sl0 &quot; , /* Internal SLIP driver, channel 0 */
0x0, /* recv memory end */
0x0, /* recv memory start */
0x0, /* memory end */
0x0, /* memory start */
0x0, /* base I/O address */
0, /* IRQ */
0, 0, 0, /* flags */
&amp; slip1_dev, /* next device */
slip_init /* slip_init should set up the rest */
};
# undef NEXT_DEV
# define NEXT_DEV ( &amp; slip0_dev)
#endif /* SLIP */

#if defined(CONFIG_PPP)
extern int ppp_init(struct device *);
static struct device ppp3_dev = {
&quot; ppp3 &quot; , 0x0, 0x0, 0x0, 0x0, 3, 0, 0, 0, 0, NEXT_DEV, ppp_init, };
static struct device ppp2_dev = {
&quot; ppp2 &quot; , 0x0, 0x0, 0x0, 0x0, 2, 0, 0, 0, 0, &amp; ppp3_dev, ppp_init, };
static struct device ppp1_dev = {
&quot; ppp1 &quot; , 0x0, 0x0, 0x0, 0x0, 1, 0, 0, 0, 0, &amp; ppp2_dev, ppp_init, };
static struct device ppp0_dev = {
&quot; ppp0 &quot; , 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, &amp; ppp1_dev, ppp_init, };
#undef NEXT_DEV
#define NEXT_DEV ( &amp; ppp0_dev)
#endif /* PPP */

#ifdef CONFIG_DUMMY
extern int dummy_init(struct device *dev);
static struct device dummy_dev = {
&quot; dummy &quot; , 0x0, 0x0, 0x0, 0x0, 0, 0, 0, 0, 0, NEXT_DEV, dummy_init, };
# undef NEXT_DEV
# define NEXT_DEV ( &amp; dummy_dev)
#endif

extern int loopback_init(struct device *dev);
struct device loopback_dev = {
&quot; lo &quot; , /* Software Loopback interface */
0x0, /* recv memory end */
0x0, /* recv memory start */
0x0, /* memory end */
0x0, /* memory start */
0, /* base I/O address */
0, /* IRQ */
0, 0, 0, /* flags */
NEXT_DEV, /* next device */
loopback_init /* loopback_init should set up the rest */
};

struct device *dev_base = &amp; loopback_dev;


C18.zip > rtl8029.c

/* rtl8029.c: A general non-shared-memory RTL8019 ethernet driver for linux. */
/*
Written 1992-94 by Donald Backer.

Copyright 1993 United States Government as represented by the
Director, National Security Agency.

This software may be used and distributed according to the terms
of the GNU Public License, incorporated herein by reference.

The author may be reached as becker@CESDIS.gsfc.nasa.gov, or C/O
Center of Excellence in Space Data and Information Sciences
Code 930.5, Goddard Space Flight Center, Greenbelt MD 20771

*/

/* Routines for the Realtek-based designs (RTL8029). */

static char *version =
&quot; rtl8029.c:v1.10 10/23/96 \n &quot; ;

#include &amp; lt; linux/kernel.h &amp; gt;
#include &amp; lt; linux/sched.h &amp; gt;
#include &amp; lt; linux/errno.h &amp; gt;
#include &amp; lt; linux/pci.h &amp; gt;
#include &amp; lt; linux/bios32.h &amp; gt;
#include &amp; lt; asm/system.h &amp; gt;
#include &amp; lt; asm/io.h &amp; gt;
#include &amp; lt; linux/config.h &amp; gt;
#include &amp; lt; linux/string.h &amp; gt;
#include &amp; lt; linux/ptrace.h &amp; gt;
#include &amp; lt; linux/ioport.h &amp; gt;
#include &amp; lt; linux/malloc.h &amp; gt;
#include &amp; lt; linux/interrupt.h &amp; gt;
#include &amp; lt; asm/bitops.h &amp; gt;
#include &amp; lt; asm/dma.h &amp; gt;

#include &amp; lt; linux/netdevice.h &amp; gt;
#include &amp; lt; linux/etherdevice.h &amp; gt;
#include &quot; 8390.h &quot;


extern struct device *init_etherdev(struct device *dev, int sizeof_private,
unsigned long *mem_startp);

#define NE_BASE (dev- &amp; gt; base_addr)
#define NE_CMD 0x00
#define NE_DATAPORT 0x10 /* NatSemi-defined port window offset. */
#define NE_RESET 0x1f /* Issue a read to reset, a write to clear. */
#define NE_IO_EXTENT 0x20

#define NE1SM_START_PG 0x20 /* First page of TX buffer */
#define NE1SM_STOP_PG 0x40 /* Last page +1 of RX ring */
#define NESM_START_PG 0x40 /* First page of TX buffer */
#define NESM_STOP_PG 0x80 /* Last page +1 of RX ring */

#define NE_RDC_TIMEOUT 0x02 /* Max wait in jiffies for Tx RDC */
static unsigned char pci_irq_line;

int r9e_probe(struct device *dev);
static int r9e_probe1(struct device *dev, int ioaddr);

static void r9e_reset_8390(struct device *dev);
static int r9e_block_input(struct device *dev, int count,
char *buf, int ring_offset);
static void r9e_block_output(struct device *dev, const int count,
const unsigned char *buf, const int start_page);



#ifdef HAVE_DEVLIST
struct netdev_entry netcard_drv =
{ &quot; r9e &quot; , r9e_probe1, NE_IO_EXTENT};
#else

int r9e_probe(struct device *dev)
{
int exist=0;
unsigned long pci_addr=0;
if(pcibios_present()) {
int pci_index;
printk( &quot; RTL8029: PCI bios is present \n &quot; );
for (pci_index=0; pci_index &amp; lt; 8;pci_index++) {
unsigned char pci_bus, pci_device_fn;
if(pcibios_find_device(PCI_VENDOR_ID_RTL,PCI_DEVICE_ID_RTL_8029
,pci_index, &amp; pci_bus, &amp; pci_device_fn)!=0)
break;
/* fetch IO and IRQ on the pci_configuration_table */
pcibios_read_config_byte(pci_bus,pci_device_fn,PCI_INTERRUPT_LINE,
&amp; pci_irq_line);
pcibios_read_config_dword(pci_bus,pci_device_fn,PCI_BASE_ADDRESS_0,
&amp; pci_addr);

pci_addr=pci_addr &amp; 0x0000fffe; /* mask the bit0 */
r9e_probe1(dev,pci_addr);
exist=1;
}

}
if(exist==1) /* 8029 adapter exist */
return 0;

return ENODEV;
}
#endif

static int r9e_probe1(struct device *dev, int ioaddr)
{
int i;
unsigned char SA_prom[32];
int wordlength = 2;
char *name = NULL;
int start_page, stop_page;
int reg0 = inb_p(ioaddr);

if (reg0 == 0xFF)
return ENODEV;

/* Do a preliminary verification that we have a 8390. */
{ int regd;
outb_p(E8390_NODMA+E8390_PAGE1+E8390_STOP, ioaddr + E8390_CMD);
regd = inb_p(ioaddr + 0x0d);
outb_p(0xff, ioaddr + 0x0d);
outb_p(E8390_NODMA+E8390_PAGE0, ioaddr + E8390_CMD);
inb_p(ioaddr + EN0_COUNTER0); /* Clear the counter by reading. */
if (inb_p(ioaddr + EN0_COUNTER0) != 0) {
outb_p(reg0, ioaddr);
outb_p(regd, ioaddr + 0x0d); /* Restore the old values. */
return ENODEV;
}
}

printk( &quot; RTL8029 ethercard probe at %#3x: &quot; , ioaddr);

/* Read the 16 bytes of station address PROM.
We must first initialize registers, similar to NS8390_init(eifdev, 0).
We can't reliably read the SAPROM address without this.
(I learned the hard way!). */
{
struct {unsigned char value, offset; } program_seq[] = {
{E8390_NODMA+E8390_PAGE0+E8390_STOP, E8390_CMD}, /* Select page 0*/
{0x48, EN0_DCFG}, /* Set byte-wide (0x48) access. */
{0x00, EN0_RCNTLO}, /* Clear the count regs. */
{0x00, EN0_RCNTHI},
{0x00, EN0_IMR}, /* Mask completion irq. */
{0xFF, EN0_ISR},
{E8390_RXOFF, EN0_RXCR}, /* 0x20 Set to monitor */
{E8390_TXOFF, EN0_TXCR}, /* 0x02 and loopback mode. */
{32, EN0_RCNTLO},
{0x00, EN0_RCNTHI},
{0x00, EN0_RSARLO}, /* DMA starting at 0x0000. */
{0x00, EN0_RSARHI},
{E8390_RREAD+E8390_START, E8390_CMD},
};
for (i = 0; i &amp; lt; sizeof(program_seq)/sizeof(program_seq[0]); i++)
outb_p(program_seq[i].value, ioaddr + program_seq[i].offset);

}
for(i = 0; i &amp; lt; 32 /*sizeof(SA_prom)*/; i+=2) {
SA_prom[i] = inb(ioaddr + NE_DATAPORT);
SA_prom[i+1] = inb(ioaddr + NE_DATAPORT);
if (SA_prom[i] != SA_prom[i+1])
wordlength = 1;
}

/* We must set the 8390 for word mode. */
outb_p(0x49, ioaddr + EN0_DCFG);
/* We used to reset the ethercard here, but it doesn't seem
to be necessary. */
/* Un-double the SA_prom values. */
for (i = 0; i &amp; lt; 16; i++)
SA_prom[i] = SA_prom[i+i];
start_page = NESM_START_PG;
stop_page = NESM_STOP_PG;

for(i = 0; i &amp; lt; ETHER_ADDR_LEN; i++) {
dev- &amp; gt; dev_addr[i] = SA_prom[i];
printk( &quot; %2.2x &quot; , SA_prom[i]);
}


/* Set up the rest of the parameters. */
name = &quot; RTL8029 &quot; ;
dev = init_etherdev(0, sizeof(struct ei_device), 0);

dev- &amp; gt; irq=pci_irq_line;

{
int irqval = request_irq (dev- &amp; gt; irq, ei_interrupt, 0, &quot; RTL8029 &quot; );
if (irqval) {
printk ( &quot; unable to get IRQ %d (irqval=%d).\n &quot; , dev- &amp; gt; irq, irqval);
return EAGAIN;
}
}
dev- &amp; gt; base_addr = ioaddr;

request_region(ioaddr, NE_IO_EXTENT, &quot; RTL8029 &quot; );

for(i = 0; i &amp; lt; ETHER_ADDR_LEN; i++)
dev- &amp; gt; dev_addr[i] = SA_prom[i];

ethdev_init(dev);
printk( &quot; \n%s: %s found at %#x, using IRQ %d.\n &quot; ,
dev- &amp; gt; name, name, ioaddr, dev- &amp; gt; irq);

if (ei_debug &amp; gt; 0)
printk(version);

ei_status.name = name;
ei_status.tx_start_page = start_page;
ei_status.stop_page = stop_page;
ei_status.word16 = (wordlength == 2);

ei_status.rx_start_page = start_page + TX_PAGES;
#ifdef PACKETBUF_MEMSIZE
/* Allow the packet buffer size to be overridden by know-it-alls. */
ei_status.stop_page = ei_status.tx_start_page + PACKETBUF_MEMSIZE;
#endif

ei_status.reset_8390 = &amp; r9e_reset_8390;
ei_status.block_input = &amp; r9e_block_input;
ei_status.block_output = &amp; r9e_block_output;
NS8390_init(dev, 0);
return 0;
}

/* Hard reset the card. This used to pause for the same period that a
8390 reset command required, but that shouldn't be necessary. */
static void
r9e_reset_8390(struct device *dev)
{
int tmp = inb_p(NE_BASE + NE_RESET);
int reset_start_time = jiffies;

if (ei_debug &amp; gt; 1) printk( &quot; resetting the 8390 t=%ld... &quot; , jiffies);
ei_status.txing = 0;

outb_p(tmp, NE_BASE + NE_RESET);
/* This check _should_not_ be necessary, omit eventually. */
while ((inb_p(NE_BASE+EN0_ISR) &amp; ENISR_RESET) == 0)
if (jiffies - reset_start_time &amp; gt; 2) {
printk( &quot; %s: r9e_reset_8390() did not complete.\n &quot; , dev- &amp; gt; name);
break;
}
}

/* Block input and output, similar to the Crynwr packet driver. If you
porting to a new ethercard look at the packet driver source for hints.
The NEx000 doesn't share it on-board packet memory -- you have to put
the packet out through the &quot; remote DMA &quot; dataport using outb. */

static int
r9e_block_input(struct device *dev, int count, char *buf, int ring_offset)
{
#ifdef CONFIG_NE_SANITY
int xfer_count = count;
#endif
int nic_base = dev- &amp; gt; base_addr;

/* This *shouldn't* happen. If it does, it's the last thing you'll see */
if (set_bit(0,(void*) &amp; ei_status.dmaing)) {
if (ei_debug &amp; gt; 0)
printk( &quot; %s: DMAing conflict in ne_block_input &quot;
&quot; [DMAstat:%d][irqlock:%d][intr:%d].\n &quot; ,
dev- &amp; gt; name, ei_status.dmaing, ei_status.irqlock,
dev- &amp; gt; interrupt);
return 0;
}
ei_status.dmaing |= 0x02;
outb_p(E8390_NODMA+E8390_PAGE0+E8390_START, nic_base+ NE_CMD);
outb_p(count &amp; 0xff, nic_base + EN0_RCNTLO);
outb_p(count &amp; gt; &amp; gt; 8, nic_base + EN0_RCNTHI);
outb_p(ring_offset &amp; 0xff, nic_base + EN0_RSARLO);
outb_p(ring_offset &amp; gt; &amp; gt; 8, nic_base + EN0_RSARHI);
outb_p(E8390_RREAD+E8390_START, nic_base + NE_CMD);
if (ei_status.word16) {
insw(NE_BASE + NE_DATAPORT,buf,count &amp; gt; &amp; gt; 1);
if (count &amp; 0x01) {
buf[count-1] = inb(NE_BASE + NE_DATAPORT);
#ifdef CONFIG_NE_SANITY
xfer_count++;
#endif
}
} else {
insb(NE_BASE + NE_DATAPORT, buf, count);
}

/* This was for the ALPHA version only, but enough people have
been encountering problems so it is still here. If you see
this message you either 1) have a slightly incompatible clone
or 2) have noise/speed problems with your bus. */
#ifdef CONFIG_NE_SANITY
if (ei_debug &amp; gt; 1) { /* DMA termination address check... */
int addr, tries = 20;
do {
/* DON'T check for 'inb_p(EN0_ISR) &amp; ENISR_RDC' here
-- it's broken for Rx on some cards! */
int high = inb_p(nic_base + EN0_RSARHI);
int low = inb_p(nic_base + EN0_RSARLO);
addr = (high &amp; lt; &amp; lt; 8) + low;
if (((ring_offset + xfer_count) &amp; 0xff) == low)
break;
} while (--tries &amp; gt; 0);
if (tries &amp; lt; = 0)
printk( &quot; %s: RX transfer address mismatch, &quot;
&quot; %#4.4x (expected) vs. %#4.4x (actual).\n &quot; ,
dev- &amp; gt; name, ring_offset + xfer_count, addr);
}
#endif
outb_p(ENISR_RDC, nic_base + EN0_ISR); /* Ack intr. */
ei_status.dmaing &amp; = ~0x03;
return ring_offset + count;
}

static void
r9e_block_output(struct device *dev, int count,
const unsigned char *buf, const int start_page)
{
#ifdef CONFIG_NE_SANITY
int retries = 0;
#endif
int nic_base = NE_BASE;
unsigned long dma_start;

/* Round the count up for word writes. Do we need to do this?
What effect will an odd byte count have on the 8390?
I should check someday. */
if (ei_status.word16 &amp; &amp; (count &amp; 0x01))
count++;

/* This *shouldn't* happen. If it does, it's the last thing you'll see */
if (set_bit(0,(void*) &amp; ei_status.dmaing)) {
if (ei_debug &amp; gt; 0)
printk( &quot; %s: DMAing conflict in ne_block_output. &quot;
&quot; [DMAstat:%d][irqlock:%d][intr:%d]\n &quot; ,
dev- &amp; gt; name, ei_status.dmaing, ei_status.irqlock,
dev- &amp; gt; interrupt);
return;
}
ei_status.dmaing |= 0x04;
/* We should already be in page 0, but to be safe... */
outb_p(E8390_PAGE0+E8390_START+E8390_NODMA, nic_base + NE_CMD);

#ifdef CONFIG_NE_SANITY
retry:
#endif

#ifdef CONFIG_NE_RW_BUGFIX
/* Handle the read-before-write bug the same way as the
Crynwr packet driver -- the NatSemi method doesn't work.
Actually this doesn't always work either, but if you have
problems with your NEx000 this is better than nothing! */
outb_p(0x42, nic_base + EN0_RCNTLO);
outb_p(0x00, nic_base + EN0_RCNTHI);
outb_p(0x42, nic_base + EN0_RSARLO);
outb_p(0x00, nic_base + EN0_RSARHI);
outb_p(E8390_RREAD+E8390_START, nic_base + NE_CMD);
/* Make certain that the dummy read has occurred. */
SLOW_DOWN_IO;
SLOW_DOWN_IO;
SLOW_DOWN_IO;
#endif /* rw_bugfix */

outb_p(ENISR_RDC, nic_base + EN0_ISR);

/* Now the normal output. */
outb_p(count &amp; 0xff, nic_base + EN0_RCNTLO);
outb_p(count &amp; gt; &amp; gt; 8, nic_base + EN0_RCNTHI);
outb_p(0x00, nic_base + EN0_RSARLO);
outb_p(start_page, nic_base + EN0_RSARHI);

outb_p(E8390_RWRITE+E8390_START, nic_base + NE_CMD);
if (ei_status.word16) {
outsw(NE_BASE + NE_DATAPORT, buf, count &amp; gt; &amp; gt; 1);
} else {
outsb(NE_BASE + NE_DATAPORT, buf, count);
}

dma_start = jiffies;

#ifdef CONFIG_NE_SANITY
/* This was for the ALPHA version only, but enough people have
been encountering problems so it is still here. */
if (ei_debug &amp; gt; 1) { /* DMA termination address check... */
int addr, tries = 20;
do {
int high = inb_p(nic_base + EN0_RSARHI);
int low = inb_p(nic_base + EN0_RSARLO);
addr = (high &amp; lt; &amp; lt; 8) + low;
if ((start_page &amp; lt; &amp; lt; 8) + count == addr)
break;
} while (--tries &amp; gt; 0);
if (tries &amp; lt; = 0) {
printk( &quot; %s: Tx packet transfer address mismatch, &quot;
&quot; %#4.4x (expected) vs. %#4.4x (actual).\n &quot; ,
dev- &amp; gt; name, (start_page &amp; lt; &amp; lt; 8) + count, addr);
if (retries++ == 0)
goto retry;
}
}
#endif

while ((inb_p(nic_base + EN0_ISR) &amp; ENISR_RDC) == 0)
if (jiffies - dma_start &amp; gt; NE_RDC_TIMEOUT) {
printk( &quot; %s: timeout waiting for Tx RDC.\n &quot; , dev- &amp; gt; name);
r9e_reset_8390(dev);
NS8390_init(dev,1);
break;
}

outb_p(ENISR_RDC, nic_base + EN0_ISR); /* Ack intr. */
ei_status.dmaing &amp; = ~0x05;
return;
}


/*
* Local variables:
* compile-command: &quot; gcc -DKERNEL -Wall -O6 -fomit-frame-pointer -I/usr/src/linux/net/tcp -c rtl8029.c &quot;
* version-control: t
* kept-new-versions: 5
* End:
*/



C18.zip > README.TXT

Our driver just support kernel 1.2.13
If you use the newer kernel, you can refer the guide(linux29.txt).


C18.zip > SPACE.H

/*
* @(#) space.h 7.1 94/11/27 SCOINC
*
* Copyright (C) The Santa Cruz Operation, 1994.
* This Module contains Proprietary Information of
* The Santa Cruz Operation and should be treated
* as Confidential.
*/

/* interrupt number */
#define R3E_0_IRQ 0x0
#define R3E_1_IRQ 0x0
#define R3E_2_IRQ 0x0
#define R3E_3_IRQ 0x0

/* Base I/O address */
#define R3E_0_BASE_IO 0x0
#define R3E_1_BASE_IO 0x0
#define R3E_2_BASE_IO 0x0
#define R3E_3_BASE_IO 0x0

/* transceiver type - 0 is BNC/TP, 1 is AUI */



C18.zip > README.DOC

3/1/1995
SCO UNIX PCI Driver
RTL PCISCO Installation
==================================================


The following files will be used in this installation:

Files Contents
----------- -----------------------------------------
driver.o RTL SCOPCI Driver Program
setup Transfer dos format to unix format setup program
info Used by netconfig
init Used by netconfig
master Used by netconfig
node Used by netconfig
reconf Used by netconfig
remove Used by netconfig
space.c Used by netconfig
system Used by netconfig


1. Login as root user. (On maintenance mode)

2. (a) Installtion Diskette in UNIX format.

# custom

Select Install
Select A New Product
Select entire to install all of the packages

(b) Installation Diskette in DOS format.
Put RTL SCO UNIX Driver diskette to floppy A: and use doscp
command to copy RTL SCO UNIX PCI Driver into UNIX's directories.

# cd /
# doscp A:/sco/setup /setup

!! if you don't have the directory ,namely, &quot; a:/sco/. &quot; in
the disk, you should modify the content of the setup file in the
the floppy. Please check the content of the setup file.

# chmod +x /setup
# ./setup


4. Use netconfig utility

Avaiable options:

# netconfig

1) Add a chain
2) Remove a chain
3) Reconfigure an element in a chain
4) Quit Select 1. Add a chain


5. Select top level of chain to Add or q to quit: 4. sco_tcp
(SCO TCP/IP for UNIX)
6. Select next level of chain to Add or q to quit: Select RTL PCI Family
Ethernet Driver board 0
7. Add chain sco_tcp - &amp; gt; pci0 (y/n) type 'y'

8. Enter the internet Address of this interface n.n.n.n

9. Enter the netmask for this interface (default 255.255.255.0)

10. Does the interface use a broadcast address of all 1's (y/n) default : y

11. Enter the boardcast address for this interface default: n.n.n.n

12. Are these values correct ? (y/n) y

13. Pseudo ttys are currently configured, do you want to:

1) Add Pseudo ttys
2) Remove Pseudo ttys
Select an option or enter q to quit [q] q

14.Available options:

1) Add a chain
2) Remove a chain
3) Reconfigure a element in a chain
q. Quit Select option: q

15. Do you want to relink to kernel now ? y

16. Do you want this kernel to boot by default (y/n) y

17. Do you want the kernel environment rebuilt (y/n) y

18. Reboot unix

# shutdown -y -g0




C18.zip > SPACE.C

#include &quot; sys/types.h &quot;
#include &quot; sys/stream.h &quot;
#include &quot; sys/socket.h &quot;
#include &quot; /etc/conf/cf.d/config.h &quot;
/* #include &quot; config.h &quot; */


/* interrupt level per board */

#if defined(R1E3_UNITS)
#define R1EUNIT 4
ushort r1eicintl[R1EUNIT] =
{ R1E_0_VECT,R1E1_0_VECT,R1E2_0_VECT,R1E3_0_VECT };
ushort r1eicioaddr[R1EUNIT] =
{ R1E_0_SIOA,R1E1_0_SIOA,R1E2_0_SIOA,R1E3_0_SIOA };

#elif defined(R1E2_UNITS)
#define R1EUNIT 3
ushort r1eicintl[R0EUNIT] =
{ R1E_0_VECT,R1E1_0_VECT,R1E2_0_VECT };
ushort r1eicioaddr[R1EUNIT] =
{ R1E_0_SIOA,R1E1_0_SIOA,R1E2_0_SIOA };


#elif defined(R1E1_UNITS)
#define R1EUNIT 2
ushort r1eicintl[R1EUNIT] = { R1E_0_VECT,R1E1_0_VECT };
ushort r1eicioaddr[R1EUNIT] = { R1E_0_SIOA,R1E1_0_SIOA };


#elif defined(R1E_UNITS)
#define R1EUNIT 1
ushort r1eicintl[R1EUNIT] = { R1E_0_VECT };
ushort r1eicioaddr[R1EUNIT] = { R1E_0_SIOA };
#endif

ushort r1e_BOARDS = R1EUNIT;