netdev
[Top] [All Lists]

More questions...

To: netdev <netdev@xxxxxxxxxxx>
Subject: More questions...
From: Andrew Morton <andrewm@xxxxxxxxxx>
Date: Sun, 02 Apr 2000 11:35:39 +0000
Sender: owner-netdev@xxxxxxxxxxx
- dev_kfree_skb_irq can be called from non-IRQ context
  in 3c59x.c  This looks safe.  But should one
  wrap the call in local_irq_save()/restore() for
  future-safety?

- Should dev_kfree_skb_irq() be doing a local_irq_save()
  even though it's for IRQ context only?

- Are Alan and JeffG on this list?

- What does the final_version macro do?

- I have reviewed the "official" (pah) Linux 3c59x driver wrt Donald's. 
The differences are:

  - netif stuff
  - PCI resource allocation and PCI memory handling
  - Some new features in Donald's driver which, although important
    are probably not appropriate to 2.3.99-pre..
  - One substantive change to vortex_interrupt:

if (status & DownComplete) {
        unsigned int dirty_tx = vp->dirty_tx;

        while (vp->cur_tx - dirty_tx > 0) {
                int entry = dirty_tx % TX_RING_SIZE;
                if (inl(ioaddr + DownListPtr) ==
                        virt_to_bus(&vp->tx_ring[entry]))
                        break;                  /* It still hasn't been
processed. */
                if (vp->tx_skbuff[entry]) {
                        DEV_FREE_SKB(vp->tx_skbuff[entry]);
                        vp->tx_skbuff[entry] = 0;
                }
                /* vp->stats.tx_packets++;  Counted below. */
                dirty_tx++;
        }
        vp->dirty_tx = dirty_tx;
>>>>>   outw(AckIntr | DownComplete, ioaddr + EL3_CMD);
        if (vp->tx_full && (vp->cur_tx - dirty_tx <= TX_RING_SIZE - 1))
{
                vp->tx_full= 0;
                clear_bit(0, (void*)&dev->tbusy);
                mark_bh(NET_BH);
        }
}

The interrupt ack has been moved.  Donald has it prior to the loop.  Can
you remember why?

Thanks.  

-- 
-akpm-

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