bug in Intel 8255x ethernet controller driver (if_fxp.c)

Eugene Denisov dea at sendmail.ru
Tue Mar 16 10:10:15 UTC 2004


Hello all.

Recently I attempted to use RTEMS 4.6.0pre5 'if_fxp' driver for Intel
EEPro100+ adapter (PCI IDs: 0x8086 / 0x1229).

Original drier doesn't wor so I made two modifications in the driver:

First I uncomment PCI ID for this adapter:

static struct fxp_ident fxp_ident_table[] = {
 /* currently untested */
/* dea: uncommenting i82557 chip */
        { 0x1229,  "Intel Pro 10/100B/100+ Ethernet" },
...

Second I made workaround for one bug in fxp_init() function (added line
mareked by 'dea'):

static void
fxp_init(void *xsc)
{
 struct fxp_softc *sc = xsc;
 struct ifnet *ifp = &sc->sc_if;
 struct fxp_cb_config *cbp;
 struct fxp_cb_ias *cb_ias;
 struct fxp_cb_tx *txp;
 int i, prm, s;

rtems_task_wake_after(100);
 DBGLVL_PRINTK(2,"fxp_init called\n");

 s = splimp();
 /*
  * Cancel any pending I/O
  */

        /* dea: preventing hung... ugly? */
        sc->stat_ch = fxp_timeout_stopped;

        fxp_stop(sc);

....


I have no time to investigate accurtely where is the problem, but fxp_stop()
call causes hung because it waits for timer routine that was not planned yet
(I think the problem is in inaccurate initialisation of 'sc' struture).

Sorry, I have no time to make full bugreport and patch.

Best regards.

Denisov Eugene.




More information about the users mailing list