- 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-
|