ne2kデバドラの送信完了(?)割り込み

バイスからの割り込みを受けるハンドラっぽい

drivers/net/ehternet/8390/lib8390.c

static irqreturn_t __ei_interrupt(int irq, void *dev_id)
{
...
/* Push the next to-transmit packet through. */
if (interrupts & ENISR_TX)
ei_tx_intr(dev);
else if (interrupts & ENISR_TX_ERR)
ei_tx_err(dev);
...

ne2kから、なぜ割り込みが来たのかを示すne2kのレジスタ
INTERRUPT STATUS REGISTER (ISR) 07H (READ/WRITE)
(詳細はデータシート参照:http://www.ti.com/lit/ds/symlink/dp8390d.pdf)
の状態を取得して、それに応じて処理をしている

PACKET TRANSMITTED: Indicates packet transmitted with no errors
の場合は、この関数に処理がわたって・・・
/**
* ei_tx_intr - transmit interrupt handler
* @dev: network device for which tx intr is handled
*
* We have finished a transmit: check for errors and then trigger the next
* packet to be sent. Called with lock held.
*/

static void ei_tx_intr(struct net_device *dev)
{
...
/*
* There are two Tx buffers, see which one finished, and trigger
* the send of another one if it exists.
*/
...
なんか、ne2kの状態を管理している構造体の値を更新したりとかしてる?
...
netif_wake_queue(dev);
}

そして、netif_wake_queueキターーー!!!!

ne2kには送信バッファが2つあるらしい?
デバドラが2つあるように見せかけてるだけ??


あ!?そういえば、ne2kではなく、8390って言わないと不正確なのか??

netif_wake_queue以降はこんな処理
http://wiki.bit-hive.com/linuxkernelmemo/pg/%C1%F7%BC%F5%BF%AE