lkml.org 
[lkml]   [1999]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    SubjectRe: PROBLEM: Losing network connectivity with 2.2.10
    Date
    On Thu, 17 Jun 1999 14:16:09 +0100 (GMT), 
    Chris Evans <chris@ferret.lmh.ox.ac.uk> wrote:
    >Oh dear, we don't still suffer from this bug do we?
    >
    >Maybe it's worth looking at what the tulip.c and de4x5.c do differently

    There is one definite problem with tulip.c that tends to show up under
    heavy load. The MAC filter is incorrectly set so the card can send but
    not receive.

    "The ownership bit of the first descriptor of the frame should be set
    after all subsequent descriptors belonging to the same frame have been
    set. This avoids a possible race condition between the 21143 fetching a
    descriptor and the driver setting an ownership bit."


    Index: linux/drivers/net/tulip.c
    --- linux-2.2.10/drivers/net/tulip.c Fri, 05 Feb 1999 09:47:48 +1100 keith (linux-2.2/m/b/31_tulip.c 1.1 644)
    +++ linux/drivers/net/tulip.c Fri, 18 Jun 1999 00:14:39 +1000 keith (linux-2.2/m/b/31_tulip.c 1.3 644)
    @@ -2698,7 +2698,7 @@
    /* Same setup recently queued, we need not add it. */
    } else {
    unsigned long flags;
    - unsigned int entry;
    + unsigned int entry, dummy = 0;

    save_flags(flags); cli();
    entry = tp->cur_tx++ % TX_RING_SIZE;
    @@ -2709,7 +2709,8 @@
    tp->tx_ring[entry].length =
    (entry == TX_RING_SIZE-1) ? 0x02000000 : 0;
    tp->tx_ring[entry].buffer1 = 0;
    - tp->tx_ring[entry].status = 0x80000000;
    + /* race with chip, set DescOwned later */
    + dummy = entry;
    entry = tp->cur_tx++ % TX_RING_SIZE;
    }

    @@ -2724,6 +2725,8 @@
    dev->tbusy = 1;
    tp->tx_full = 1;
    }
    + if (dummy >= 0)
    + tp->tx_ring[dummy].status = DescOwned;
    restore_flags(flags);
    /* Trigger an immediate transmit demand. */
    outl(0, ioaddr + CSR1);
    There are also other problems that I see on a Xircom RBEM56G pcmcia
    (2114x based), to do with changing CSR6 while the transmitter and/or
    receiver are running. I plan to send all my updates to Donald Becker
    later this month, he is away at the moment.


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:52    [W:0.022 / U:29.908 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site