Re: [問題] 請問net device driver的小問題 煩請幫忙
在 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
01/10 04:13, 1F
→
01/10 04:15, , 2F
01/10 04:15, 2F
→
01/10 04:17, , 3F
01/10 04:17, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 7 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章
27
74