2003-02-03 21:32:49

by Cameron Goble

[permalink] [raw]
Subject: SIS900 module detects two transceivers, picks the wrong one

Hello,

I am having trouble with the SIS900 driver module v1.08.04. The module
installs correctly and does not return an error, but ... well...

Perhaps dmesg will explain better:

eth0: AMD79C901 HomePNA PHY transceiver found at address 2.
eth0: AMD79C901 10BASE-T PHY transceiver found at address 3.
eth0: using transceiver found at address 2 as default
eth0: SiS 900 PCI Fast Ethernet at 0xec400, IRQ 11, 00:30:67:09:53:81.

So the network interface is a multi-function device, built onto the
motherboard. The driver picks the HomePNA transceiver, but I want to use
the 10BASE-T transceiver. Is there an option I can pass, or some code I
can edit that force the driver to pick the 10BASE-T transceiver at
address 3?

I have attempted to manually configure the device with ifconfig, but I
get the feeling that ifconfig talks to the hardware through the driver,
and since the driver is pointing to the wrong place... I have gotten
nowhere with that approach.

This is an AMD EasyNow PC -- The POST does not display useful
information (it's a graphic of the computer that lights up). I have yet
to find a way into the BIOS configuration screen, or I would try turning
the HomePNA device off from there.

The documentation for this module lists [email protected] and
[email protected] as maintainers for the SIS900 module, but my e-mail
to them apparently did not go through.

Thanks in advance for any help that can be offered. Please cc: replies
to me at [email protected] .
Cameron Goble
Albuquerque NM USA
[email protected]


2003-02-03 22:00:18

by Richard B. Johnson

[permalink] [raw]
Subject: Re: SIS900 module detects two transceivers, picks the wrong one

On Mon, 3 Feb 2003, Cameron Goble wrote:

> Hello,
>
> I am having trouble with the SIS900 driver module v1.08.04. The module
> installs correctly and does not return an error, but ... well...
>
> Perhaps dmesg will explain better:
>
> eth0: AMD79C901 HomePNA PHY transceiver found at address 2.
> eth0: AMD79C901 10BASE-T PHY transceiver found at address 3.
> eth0: using transceiver found at address 2 as default
> eth0: SiS 900 PCI Fast Ethernet at 0xec400, IRQ 11, 00:30:67:09:53:81.
>
> So the network interface is a multi-function device, built onto the
> motherboard. The driver picks the HomePNA transceiver, but I want to use
> the 10BASE-T transceiver. Is there an option I can pass, or some code I
> can edit that force the driver to pick the 10BASE-T transceiver at
> address 3?
>

The HomePNA protocol usually uses the exact same kind of wire at
10BASE-T. It's just wired differently. I don't think you have two
such connectors on your board.

This looks as though your wire is just connected backwards, i.e.,
you have a reversed patch-cord.

Are you connected to a Hub? Does the LED on the hub show that
the wire is connected properly an does the LED on/near the connector on
your PC show that its connected correctly also?

If you really do have to such connectors, just use eth1 instead of
eth0, i.e., `ifconfig eth1 ip-address ...`

Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
Why is the government concerned about the lunatic fringe? Think about it.


2003-02-03 22:35:48

by Cameron Goble

[permalink] [raw]
Subject: Re: SIS900 module detects two transceivers, picks the wrong one

>>> "Richard B. Johnson" [email protected]> 02/03/03 03:12PM >>

Thanks for the quick response, Richard!

> Perhaps dmesg will explain better:
>
> eth0: AMD79C901 HomePNA PHY transceiver found at address 2.
> eth0: AMD79C901 10BASE-T PHY transceiver found at address 3.
> eth0: using transceiver found at address 2 as default
> eth0: SiS 900 PCI Fast Ethernet at 0xec400, IRQ 11,
00:30:67:09:53:81.

>This looks as though your wire is just connected backwards, i.e.,
>you have a reversed patch-cord.

The patch cable I've got has worked on other machines and hub set up
for 10Base-T.

>Are you connected to a Hub? Does the LED on the hub show that
>the wire is connected properly an does the LED on/near the connector
on
>your PC show that its connected correctly also?

Both the hub and the PC show link lights when connected, yes. The hub
is 10Base-T also.

>If you really do have to such connectors, just use eth1 instead of
>eth0, i.e., `ifconfig eth1 ip-address ...`

I will certainly give this a try. It's turning out to be quite an
experience in how the Linux kernel thinks of devices. :) I don't really
care which eth port it uses, as long as it works.

So my ifconfig would be:
ifconfig eth1 address 192.168.0.4 netmask 255.255.255.0
- right?

I'm curious though - does ipconfig actually *create* the device ethx?
Isn't that what the SIS900 module is doing -- detecting a device and
mapping it onto eth0? dmesg does not reveal a similar report for eth1.
In that case, how do I force it to use the transceiver at address 3 (see
the dmesg above), or will it decide to use that one automatically? Sorry
for my ignorance.

Thanks very much,
Cameron Goble



2003-02-03 23:09:48

by Richard B. Johnson

[permalink] [raw]
Subject: Re: SIS900 module detects two transceivers, picks the wrong one

On Mon, 3 Feb 2003, Cameron Goble wrote:

> >>> "Richard B. Johnson" [email protected]> 02/03/03 03:12PM >>
>
> Thanks for the quick response, Richard!
>
> > Perhaps dmesg will explain better:
> >
> > eth0: AMD79C901 HomePNA PHY transceiver found at address 2.
> > eth0: AMD79C901 10BASE-T PHY transceiver found at address 3.
> > eth0: using transceiver found at address 2 as default
> > eth0: SiS 900 PCI Fast Ethernet at 0xec400, IRQ 11,
> 00:30:67:09:53:81.
>
> >This looks as though your wire is just connected backwards, i.e.,
> >you have a reversed patch-cord.
>
> The patch cable I've got has worked on other machines and hub set up
> for 10Base-T.
>
> >Are you connected to a Hub? Does the LED on the hub show that
> >the wire is connected properly an does the LED on/near the connector
> on
> >your PC show that its connected correctly also?
>
> Both the hub and the PC show link lights when connected, yes. The hub
> is 10Base-T also.
>

Hmmm. That shows that whatever is connected is connected okay.

> >If you really do have to such connectors, just use eth1 instead of
> >eth0, i.e., `ifconfig eth1 ip-address ...`
>
> I will certainly give this a try. It's turning out to be quite an
> experience in how the Linux kernel thinks of devices. :) I don't really
> care which eth port it uses, as long as it works.
>
> So my ifconfig would be:
> ifconfig eth1 address 192.168.0.4 netmask 255.255.255.0
> - right?
>

That's what I'd try --for a start.

> I'm curious though - does ipconfig actually *create* the device ethx?
> Isn't that what the SIS900 module is doing -- detecting a device and
> mapping it onto eth0? dmesg does not reveal a similar report for eth1.
> In that case, how do I force it to use the transceiver at address 3 (see
> the dmesg above), or will it decide to use that one automatically? Sorry
> for my ignorance.
>

Well most all the devices are virtual. Some ethernet drivers handle
multiple configurations as multiple devices, others do not. I'm
just guessing since I do not use the SIS900 module here.

What I see from the source is that the HomePNA is set because
the board reported a certain identification, 0x6b90. Now, that
doesn't mean too much because a further reading of the source shows....
"If no one link is on, select PHY whose types is HOME as default." sic

So, I would guess, that MAYBE you booted your machine without the
cable connected to your hub and that's why it defaulted to HomePNA?

Anyway, `rmmod sis900;ifconfig eth0 192.168.0.4 etc...` to remove and
reinstall to see if that fixes it...

Cheers,
Dick Johnson
Penguin : Linux version 2.4.18 on an i686 machine (797.90 BogoMips).
Why is the government concerned about the lunatic fringe? Think about it.


2003-02-04 02:51:08

by Ion Badulescu

[permalink] [raw]
Subject: Re: SIS900 module detects two transceivers, picks the wrong one

On Mon, 03 Feb 2003 14:42:08 -0700, Cameron Goble <[email protected]> wrote:

> I am having trouble with the SIS900 driver module v1.08.04. The module
> installs correctly and does not return an error, but ... well...
>
> Perhaps dmesg will explain better:
>
> eth0: AMD79C901 HomePNA PHY transceiver found at address 2.
> eth0: AMD79C901 10BASE-T PHY transceiver found at address 3.
> eth0: using transceiver found at address 2 as default
> eth0: SiS 900 PCI Fast Ethernet at 0xec400, IRQ 11, 00:30:67:09:53:81.
>
> So the network interface is a multi-function device, built onto the
> motherboard. The driver picks the HomePNA transceiver, but I want to use
> the 10BASE-T transceiver. Is there an option I can pass, or some code I
> can edit that force the driver to pick the 10BASE-T transceiver at
> address 3?

There is no such option, unfortunately. The driver attempts to find a
transceiver with a link up, and uses that as a default. If it can't find
any, then it defauls to using the HomePNA (type HOME) transceiver.

So you have two choices:

1. make sure the interface is connected to a hub/switch when the driver
initializes;

or, if that doesn't work:

2. apply the following patch to the driver:

--- sis900.c.old Mon Aug 26 14:43:22 2002
+++ sis900.c Mon Feb 3 21:59:26 2003
@@ -513,6 +513,9 @@
u16 mii_status;
int i;

+ if (phy_addr == 2)
+ continue;
+
mii_phy = NULL;
for(i = 0; i < 2; i++)
mii_status = mdio_read(net_dev, phy_addr, MII_STATUS);

It's a crude hack, but it ought to work on your box.

Ion

--
It is better to keep your mouth shut and be thought a fool,
than to open it and remove all doubt.