Red Hat Bugzilla – Bug 70927
Problem with SIS900 network driver (code is just wrong)
Last modified: 2013-07-02 22:06:42 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.5) Gecko/20011013
Description of problem:
Many (I would guess most) SIS900 based network interfaces are designed to use
the embedded PHY built into the chip instead of an external PHY. This is
certainly true of SIS Chipsets which have the SIS900 embedded into them (e.g.
SIS630, SIS730 etc.). The SIS900 is designed with a special register for
accessing this internal PHY refered to in the documentation as the "Enhanced PHY
Control Register" or EHPHY. However, the current device driver ignores this
register and simply attempts to talk to any of 32 possible external PHY's which
may be connected via the MDIO signals. This works fine in many (possibly most)
cases because the internal PHY is ALSO connected to the MDIO bus. Unfortunately
it is NOT connected to the MDIO bus in ALL cases. Certain steppings of the
SIS630 (SIS630 ET for instance) apparently don't connect the SIS900 internal PHY
in this way.
I have modified the SIS900 driver to use the EHPHY register to control the PHY
for PHY address 0 if possible. If it cannot communicate to the PHY using the
EHPHY register it attempts to use MDIO. For all other possible PHY addresses
(PHY1 - PHY31) it uses MDIO.
I have the source and can provide it to you. I have seen many posts where
people have had the identical problem. This problem goes back many releases and
should be fixed ASAP.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1.Attempt to load the SIS900 driver module (sis900.o) on a SIS600ET based system.
Actual Results: Driver complains that there are no PHYs attached. Will not
load and therefore, cannot use the built in network adapter on the motherboard.
Expected Results: Module should load, auto-negotiate and provide network interface.
I can send you the modified source files (sis900.c and sis900.h) or I can diff
them and send you those. I set the Severity to HIGH because without a fix,
there are a lot of people out there who will never figure out how to get their
network interface to work. Also they can't do a network install which in my
opinion is a major problem. This problem shows up in a number of low-cost
machines and could cause people trying Linux for the first time on these
machines to "give up". That's bad for the community eh?
while I can't guarantee inclusion (I would need to see it first), I'm more than
willing to take a look!
I sent the modified files (sis900.c and sis900,h) to firstname.lastname@example.org along
with a brief description of the changes I made.
Bugs 21514, 70927, 78576 "problem with module sis900.o"
Motherboard with integrated ethernet card SiS900/7016
RH 8.0 do not sets eth0 automatically as usually on other computers.
I suppose it shut work with sis900.o?
Command "modprobe sis900" gives such ansver:
"No such device
Hint: insmod errors can be caused by incorrect module parameters,
including invalid IO or IRQ prameters."
I tried to set IO and IRQ, but the command
"modprobe sis900 IRQ=11 IO=d400" warns:
"Warning: ignoring IRQ=11, no such parameter in this module
Warning: ignoring IO=d400, no such parameter in this module"
The original bug I reported in 7.3 was apparently fixed in 8.0 which installed
flawlessly on all 3 motherboards I have which use an embedded SIS900. It turns
out that the SIS630ET needs an additional bit to be set in it's SIS900 variant
in order for MDIO to work. I believe the original SIS900 documentation says all
bits in the register in question are "reserved" so somebody knows something we
don't. The original hack I proposed will work in 7.3 and I imagine in 8.0 as
well, so if newer SIS Chipsets have similar problems, it might help. How could
I make my hacked SIS900 driver files available to the community?
I belive the updates came from SiS