lkml.org 
[lkml]   [2001]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] Yellowfin bug fix for Symbios cards
    Short version: My last patch to the yellowfin driver forced
    full-duplex on for Symbios 10/100 cards, causing severe packet loss on
    hubs and some switches.

    Long version: Reading the MAC address from the EEPROM didn't work on
    the Symbios card, so I turned on the IsGigabit flag to read it
    correctly. This also forces full-duplex on, which is wrong. So I
    added a flag controlling only the MAC address reading behavior and
    turned off the IsGigabit flag for Symbios cards.

    Patch (against latest 2.4) is at the end of this mail.

    Thanks to Tim Moloney for reporting this bug.

    -VAL

    diff -Nru a/drivers/net/yellowfin.c b/drivers/net/yellowfin.c
    --- a/drivers/net/yellowfin.c Thu Oct 18 20:59:43 2001
    +++ b/drivers/net/yellowfin.c Thu Oct 18 20:59:43 2001
    @@ -38,10 +38,13 @@
    * Fix three endian-ness bugs
    * Support dual function SYM53C885E ethernet chip

    + LK1.1.5 (val@nmt.edu):
    + * Fix forced full-duplex bug I introduced
    +
    */

    #define DRV_NAME "yellowfin"
    -#define DRV_VERSION "1.05+LK1.1.3"
    +#define DRV_VERSION "1.05+LK1.1.5"
    #define DRV_RELDATE "May 10, 2001"

    #define PFX DRV_NAME ": "
    @@ -256,7 +259,7 @@
    };
    enum capability_flags {
    HasMII=1, FullTxStatus=2, IsGigabit=4, HasMulticastBug=8, FullRxStatus=16,
    - HasMACAddrBug=32, /* Only on early revs. */
    + HasMACAddrBug=32, DontUseEeprom=64, /* Only on early revs. */
    };
    /* The PCI I/O space extent. */
    #define YELLOWFIN_SIZE 0x100
    @@ -282,7 +285,7 @@
    PCI_IOTYPE, YELLOWFIN_SIZE,
    FullTxStatus | IsGigabit | HasMulticastBug | HasMACAddrBug},
    {"Symbios SYM83C885", { 0x07011000, 0xffffffff},
    - PCI_IOTYPE, YELLOWFIN_SIZE, HasMII | IsGigabit | FullTxStatus },
    + PCI_IOTYPE, YELLOWFIN_SIZE, HasMII | DontUseEeprom },
    {0,},
    };

    @@ -453,7 +456,7 @@
    #endif
    irq = pdev->irq;

    - if (drv_flags & IsGigabit)
    + if (drv_flags & DontUseEeprom)
    for (i = 0; i < 6; i++)
    dev->dev_addr[i] = inb(ioaddr + StnAddr + i);
    else {
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 13:08    [W:0.025 / U:124.428 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site