Home
- Startseite
Linux (english)
- AAM with hdparm
- CapiSuite
- VDR
- LTTng usage examples
Diverses
- Vallox KWL Steuerung
- Golf V Plus Autoradioausbau
Privat
- Über mich
- Links
Infos
- Impressum
Using the fiber interface on epic100-cards (SMC9432FTX)

Sorry an die deutschen Leser, aber die Linux-Seiten sind nur auf englisch vorhanden...

Here you'll find a patch to use the fiber interface of epic cards with the Level One LXT970 Transceiver (especially the SMC9432FTX).

This patch has been tested successfully with the following configurations:

  • SMC 9432 BTX (card with BNC and TP connector) using TP
  • SMC 9432 TX-MP (card with TP connector only)
  • SMC 9432 FTX-SC (card with fiber and TP connector): tested thoroughly since some weeks on 48 workstations and 2 servers running 24/7

It adds some additional code which is only executed if the fiber-capable transceiver LXT970 is found, so it shouldn't break anything on other cards.

Here's the patch: epic100-fx-2.4.20.patch; to apply it:

I personally don't have the hardware any more, but Andreas Kiessling sent me a version updated for 2.6.8: epic100-fx-2.6.8.zip. Thanks!

cd /usr/src/linux
patch -p1 < /path/to/epic100-fx-2.4.20.patch

BTW: It's already applied in SuSE Linux since version 8.0 but not accepted by the kernel maintainers until now...

There's also an older version available for 2.4.19: epic100_fx_2.4.19.diff

How it works...

We mainly made some additions to the epic_open() function which is called when the interface is opened (e.g. with ifconfig ethX up). The following steps are executed:

  • read PHY_ID (done in epic_init_one())
  • if the PHY_ID == the ID of LXT970 (this means we have the SMC9432FTX with the fiber interface)
    • disable auto-negotiation (not supported for fiber by LXT970)
    • enable fiber interface
    • wait 1.5 seconds for fiber interface to get ready
    • read link status
  • if we have no link
    • disable fiber interface
    • re-enable auto-negotiation
    • use utp / bnc interface (old code)

During our work with the driver, we also noticed three places in the MII related code where short udelays were necessary - leaving them out leads to "no MII found"-warnings in syslog often - perhaps you've already noticed this with the old driver. This should be gone now. I already received a feedback that some SMC card (using TP) that didn't used to work before in some machines works now - although I never noticed this by myself.

How to use

There are four important points I want to mention here:

  1. As the medium-switch code is only executed in epic_open(), it's necessary to open the interface to get the link. So don't worry if you see no link after modprobe epic100 - just do ifconfig ethX up to get a link.
  2. Also it's necessary to reopen the interface if you want to change the medium the NIC is connected to. So, if you pull out your TP cable and plug in your fiber cable, please do ifconfig down ethX, ifconfig up ethX
  3. As auto-negotiation isn't supported for the fiber interface, you'll have to manually enable full-duplex by doing modprobe epic100 full_duplex=1
  4. If you have an unattended server connected only to fiber, it could be useful to force the use of this interface to prevent the driver from choosing utp in error. This can be done with modprobe epic100 options=6 (see also modinfo epic100)

Additional infos

I collected the data sheets for the transceivers I found on SMC cards for future reference. If you want to know what transceiver your card has: it's the chip with the second most pins, usually named "U2" on the circuit board. If your NIC has another receiver than listed here, please report to me! Thx...

  • Quality Semiconductor QS6612, used on the SMC9432TX-MP and the SMC9432BTX: data sheet (only the HTML version of google as I didn't find the pdf any more on the web, hosted locally)
  • Altima AC101-TF, used on the SMC9432BTX: data sheet (hosted on altimacom.com)
  • Level One LXT970, used on the SMC9432FTX, mainly used for this patch: data sheet (host locally as level1.com doesn't exist any more)

Addendum

The real work was done by Christoph Dolina. I did some code cleanup and made some improvements. Christoph doesn't want his email-address to be shown here, so please don't hesitate to contact me if you have any questions.

Many thanks go to

  • SMC Networks Germany for providing me with a SMC9432BTX and a SMC9432TX-MP for testing purposes
  • UAS Landshut (my college) for providing us with a SMC9432FTX and a media converter for testing purposes and for the support given
  • Jürgen Quade of Niederrhein UAS for giving us some feedback and kernel hacking tips

© 2002-9 Gernot Hillier
letzte Änderung: 2024-07-27 18:51:12
Valid XHTML 1.0!Valid CSS!