netdev
[Top] [All Lists]

Re: Queue and SMP locking discussion (was Re: 3c59x.c)

To: jamal <hadi@xxxxxxxxxx>, Donald Becker <becker@xxxxxxxxx>, netdev@xxxxxxxxxxx, kuznet@xxxxxxxxxxxxx
Subject: Re: Queue and SMP locking discussion (was Re: 3c59x.c)
From: Andrew Morton <andrewm@xxxxxxxxxx>
Date: Fri, 31 Mar 2000 02:43:36 +0000
References: <Pine.LNX.4.10.10003301359200.2499-100000@vaio.greennet> <Pine.GSO.4.20.0003301529070.14621-100000@shell.cyberus.ca> <38E40D26.D34D72CB@uow.edu.au>
Sender: owner-netdev@xxxxxxxxxxx
Andrew Morton wrote:
> 
> It appears to me that netif_wake_queue can be called multiple times
> within this loop,

Spit.  I missed the test_and_set_bit(__LINK_STATE_XOFF...

I still question it though:

status = inw(ioaddr + EL3_STATUS);
do {
    ...
    if (status & TxAvailable) {
        outw(AckIntr | TxAvailable, ioaddr + EL3_CMD);
        netif_wake_queue(dev);
    }
    ....
} while ((status = inw(ioaddr + EL3_STATUS)) & (IntLatch | RxComplete));

Will 'inw(ioaddr + EL3_STATUS)' continue to have the TxAvailable bit set
even after it has been acked?

-- 
-akpm-

<Prev in Thread] Current Thread [Next in Thread>