Re: [問題] 請問net device driver的小問題 煩請幫忙

看板LinuxDev作者 (suedeN  ￾   )時間17年前 (2008/01/09 23:55), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串4/7 (看更多)
在 rtl8139_init中 有這幾行 dev->open = rtl8139_open; dev->hard_start_xmit = rtl8139_start_xmit; dev->poll = rtl8139_poll; dev->weight = 64; dev->stop = rtl8139_close; dev->get_stats = rtl8139_get_stats; dev->set_multicast_list = rtl8139_set_rx_mode; dev->do_ioctl = netdev_ioctl; dev->ethtool_ops = &rtl8139_ethtool_ops; dev->tx_timeout = rtl8139_tx_timeout; dev->watchdog_timeo = TX_TIMEOUT; 這幾行是將 rtl8139自己實作出來的functions 指向給kernel 告訴kernel 當你要用 hard_start_xmit 時 你就去呼叫 rtl8139_start_xmit 但 沒有一行是跟kernel說 我要收封包時應該要用哪個function 去收封包 即沒有一行告訴kernel 說我該使用rtl8139_rx()這function 我知道是網卡收完封包後 才 interrupt給kernel知道說我收到封包了 但是至少也應該指出 用哪個function收封包吧.. ※ 引述《rz600000 (suedeN  ￾   )》之銘言: : 那個request irq 所註冊的 interrupr service function 中 : 好像沒有 您說的 有call到rtl8139_rx() : 我知道收到packet 後 會先拆掉 mac header 然後就call netif_rx() : 但是 在哪裡 有註冊 rtl8139_rx()這個東西 : :q! : ※ 引述《Spig (Spig)》之銘言: : : 去找 request_irq(), 他會註冊一組中斷函式(ISR) : : 這個中斷函式會執行 Rx 的部份, 最後用 netif_rx() 往上送 : : 簡單來說 : : Tx: Kernel -> xmit() -> Hardware -> Ethernet : : Rx: Ethernet -> Hardware -> ISR(tasklet) -> netif_rx() -> Kernel -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.176.182

01/10 04:13, , 1F
dev->poll = rtl8139_poll
01/10 04:13, 1F

01/10 04:15, , 2F
POLL 是napi用的???
01/10 04:15, 2F

01/10 04:17, , 3F
我沒有開啟NAPI..的話呢?
01/10 04:17, 3F
文章代碼(AID): #17XEwCDX (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #17XEwCDX (LinuxDev)