Ticket #1465: greth_autoneg_fix.diff

File greth_autoneg_fix.diff, 855 bytes (added by Joris van Rantwijk, on 02/04/12 at 08:42:25)

Fix arithmetic in calculation of GRETH autonegotiation timeout

  • c/src/libchip/network/greth.c

    diff --git a/c/src/libchip/network/greth.c b/c/src/libchip/network/greth.c
    index aff4d0f..4d284e8 100644
    a b greth_initialize_hardware (struct greth_softc *sc) 
    339339            while (!(((phystatus = read_mii(phyaddr, 1)) >> 5) & 1)) {
    340340                    if ( rtems_clock_get_tod_timeval(&tnow) != RTEMS_SUCCESSFUL )
    341341                      printk("rtems_clock_get_tod_timeval failed\n\r");
    342                     msecs = (tnow.tv_sec-tstart.tv_sec)*1000+(tnow.tv_usec-tstart.tv_usec)/1000;
     342                    msecs = (tnow.tv_sec-tstart.tv_sec)*1000+tnow.tv_usec/1000-tstart.tv_usec/1000;
    343343                    if ( msecs > GRETH_AUTONEGO_TIMEOUT_MS ){
    344344                            sc->auto_neg_time = msecs;
    345345                            sc->auto_neg = -1; /* Failed */