Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Mar 2000 18:05:41 -0500 (EST)
From:      "Matthew N. Dodd" <winter@jurai.net>
To:        Mitsuru IWASAKI <iwasaki@jp.FreeBSD.org>
Cc:        freebsd-stable@FreeBSD.ORG
Subject:   Re: FIXED -->  Thanks! Re: ep0 eeprom failed to come ready...
Message-ID:  <Pine.BSF.4.21.0003251758220.50194-100000@sasami.jurai.net>
In-Reply-To: <200003252256.HAA22589@tasogare.imasy.or.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 26 Mar 2000, Mitsuru IWASAKI wrote:
> BTW, thanks for your explanations and advices.  I bought and install
> FD drive, then configure my 509B NIC with 3c5x9cfg.exe in Non-PnP
> mode.  Now I'm able to use it on 4-stable and 5-current (but still
> have problems in PnP mode)!  As you said, my 3c509's EEPROM seems have
> some corruption, that's why FreeBSD 4-stable and 5-current can't
> handle it while it works fine on 3-stable or Linux with no problems.
> 
> With 3c5x9cfg.exe, I configured my NIC, IRQ = 10, port = 0x300, PnP
> enabled first, I got following boot messages and networking very slow
> because of IRQ (5) conflicts with my SB sound card (non-PnP ISA), I
> suspect.

Do you have drivers installed for your sound card?  If not then the PnP
system has no way of knowing that irq 5 is used.  You might also try
setting irq 5 to 'legacy/ISA' in your BIOS.

> TCM5090: adding irq mask 0x9ea8
> TCM5090: adding io range 0x210-0x3ef, size=0x10, align=0x10
> 	:
> isa0: if_ep: <3Com 3C509-TP EtherLink III> at 0x300 in PnP mode!
> 	:                                       ^^^ configured io-port address
> isa_probe_children: probing PnP devices
> ep0: <3Com 3C509B-TP EtherLink III (PnP)> at port 0x210-0x21f irq 5 on isa0
>                                                     ^^^ not 300   ^ not 10

Yep, this is exactly correct.  The driver is using the PnP instance which
configures the card for the first available port and irq.

> Now I have a proposal.  How about the restoration of traditional isa
> ep configuration like this?
> 
> device ep0 at isa? port 0x300 irq 10

No, thats not the solution.

If I do anything it will be to validate the EEPROM checksum in the driver
'probe' routine and bail if a board has an invalid checksum.

> Giving configuraion hints would be useful for NIC which has corrupted
> EEPROM by long time usage or can conflict on resources with other
> devices unkown by kernel.  I have 3 more boxes with 509B running on
> 3-stable.  None of them have FD drive unfortunately, so I won't
> upgrade them to 4-stable.
>
> # I probably install Linux for them in the future :)

Go for it.  Their 3c509 support is worse than ours.

> This is my understanding what is happening now:
> > 
> > 	- The PnP enumerator runs and identifies PnP devices.
> > 	  - The 3c509 board is found and a device is created.
> 
> sys/isa/pnp.c:pnp_identify(), pnp_isolation_protocol(),
> pnp_create_devices() and sys/isa/pnpparse.c:pnp_parse_resources() are
> doing this, and output these messages.
> 
> Trying Read_Port at 243
> TCM5090: adding irq mask 0x9ea8
> TCM5090: adding io range 0x210-0x3ef, size=0x10, align=0x10
> 
> > 	- ep_isa_identify() runs and finds -the same board- and
> > 	  pulls the last configured (with 3c5x9cfg.exe) settings
> > 	  from the EEPROM.  The board is activated.
> 
> ep_isa_identify() reads settings from EEPROM and retrieves IRQ and IOPORT,
> then just prints this without creating device if PnP mode.
> 
> isa0: if_ep: <3Com 3C509-TP EtherLink III> at 0x300 in PnP mode!

But it wasn't printing this message earlier!

It sounds like everything works as it is supposed to after you ran the
3C5X9CFG.EXE util.

> > 	- ep_isa_probe() runs against the device created by
> > 	  ep_isa_identify().
> 
> Now in PnP mode, ep_isa_probe() can't be called because the device
> wasn't created.

But it was created before when the card was in PnP mode but not reporting
it via the EEPROM.

> > 	- The PnP system activates the 3c509 device that the
> > 	  enumerator found and assigns it resources.
> 
> sys/isa/isa_common.c:isa_probe_children(), isa_assign_resources()
> determine resources to allocate for the device based on struct
> isa_config entries created by pnp_parse_resources() (?), they aren't
> the same as the last configured settings from EEPROM.  Unfortunately
> assigned IRQ conflicts with SB card which not probed by kernel.
> This makes networking very slow I guess.

No, the resources that are in the EEPROM and the resources PnP activated
boards use are totally different.  The settings in the EEPROM are actually
just 'hints'; I could make the driver override them and use whatever I
want.  Until the adapter is 'activated' to a specific configuration it has
no IRQ/port.

-- 
| Matthew N. Dodd  | '78 Datsun 280Z | '75 Volvo 164E | FreeBSD/NetBSD  |
| winter@jurai.net |       2 x '84 Volvo 245DL        | ix86,sparc,pmax |
| http://www.jurai.net/~winter | This Space For Rent  | ISO8802.5 4ever |



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0003251758220.50194-100000>