Subject: Re: half-working Conexant LANfinity driver
To: None <port-i386@netbsd.org>
From: Rui Paulo <rpaulo@fnop.net>
List: port-i386
Date: 03/25/2006 15:09:55
Frank Wille <frank@phoenix.owl.de> writes:

> Hi!
>
> While trying to install NetBSD on a friend's Compaq Presario 1700 laptop I
> realized that the onboard Conexant LANfinity NIC (based on the RS7112 chip)
> is not supported.
>
> So I gathered information about the chip and found out, by inspecting the
> FreeBSD and Linux drivers, that it should be compatible to the DEC/Intel
> "Tulip" driver.
>
> Although I have no experience with NetBSD driver programming and no
> knowledge about network chips I started to adapt the FreeBSD and Linux
> drivers to the NetBSD 3.0 source.
>
> The status:
>
> The chip is recognized and initialized, the MAC address is read from the
> ROM and the supported media types are displayed (the second Conexant
> product is an integrated 56k modem, which I don't care about):
>
> ---8<---
> tlp0 at pci0 dev 9 function 0: Conexant RS7112 Ethernet, pass 0.8
> tlp0: interrupting at irq 9
> tlp0: Ethernet address 00:50:8b:fa:30:03
> ukphy0 at tlp0 phy 1: Generic IEEE 802.3u media interface
> ukphy0: OUI 0x0010a1, model 0x0032, rev. 0
> ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
> Conexant Systems product 0x1815 (miscellaneous communications, revision 0x05) at pci0 dev 9 function 1 not configured
> ---8<---
>
> The driver also detects the currently connected media type and that a
> carrier is present (ifconfig tlp0):
> ---8<---
> tlp0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
>     address: 00:50:8b:fa:30:03
>     media: Ethernet autoselect (10baseT)
>     status: active
> ---8<---
>
> But when assigning an IPv4 address and bringing the interface up, the trouble
> starts. I get lots of those messages:
> tlp0: receive process failed to idle: state RUNNING - WAIT
> tlp0: receive process failed to idle: state RUNNING - WAIT
> tlp0: transmit timeout
>
> So I enabled the TLP_DEBUG mode in sys/devs/ic/tulip.c and inserted a
> printf, starting with "-- status=", in the main-loop of the interrupt service
> routine tlp_intr(), which prints the chip's status register and the masked
> rxstatus and txstatus.
> The following happens after an "ifconfig tlp0 inet 192.168.0.17 up debug":
>
> ---8<---
> tlp0: receive process failed to idle: state RUNNING - WAIT
> -- status=f0670005 rxtatus=00000000 txstatus=00000001
> tlp0: receive process failed to idle: state RUNNING - WAIT

[...]

Can you show us your patch to the tlp driver ?
From what I can see in the FreeBSD dc driver the RS7112 is a simple
21143 with some small quirks.

-- 
  Rui Paulo			<rpaulo@{NetBSD{,-PT}.org,fnop.net}>