請問net device driver的小問題 煩請幫忙

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

請問net device driver的小問題 煩請幫忙

文章rz600000 » 週三 1月 09, 2008 6:11 pm

就是 針對 net device driver 中的 8139too來說

一般我要註冊 傳送封包的function


dev->hard_start_xmit = rtl8139_start_xmit;

會以上面那行 用以告知kernel說 以後要用傳送封包的話

要用rtl8139_start_xmit 很像就是EXPORT_SYMBOL 的觀念說

我把這個function 提供給上面kernel 使用

但是現在 接收封包的 function 是 rtl8139_rx()

我找不到 任何註冊的動作 也沒有任何東西 指向rtl8139_rx()

這樣在接收封包的時候 要怎麼知道呢????


我想問的就是 在哪裡有註冊rtl8139_rx()這個functions的地方
rz600000
可愛的小學生
可愛的小學生
 
文章: 44
註冊時間: 週日 10月 22, 2006 10:18 pm

文章rz600000 » 週三 1月 09, 2008 6:19 pm

我知道有數據收到應該是驅動程式來通知系統的 但也應該

告知driver 是該用哪個當做收封包的functions
rz600000
可愛的小學生
可愛的小學生
 
文章: 44
註冊時間: 週日 10月 22, 2006 10:18 pm

文章rz600000 » 週四 1月 10, 2008 12:50 am

在 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
rz600000
可愛的小學生
可愛的小學生
 
文章: 44
註冊時間: 週日 10月 22, 2006 10:18 pm

文章richliu » 週五 1月 11, 2008 9:33 am

因為 RX 是要靠 interrupt 驅動的, 主要在這一行.

retval = request_irq (dev->irq, rtl8139_interrupt, IRQF_SHARED, dev->name, dev);

這一行是給 NAPI 用的, 也是 receive function 的一部份.
dev->poll = rtl8139_poll;
richliu
可愛的小學生
可愛的小學生
 
文章: 12
註冊時間: 週二 8月 16, 2005 11:22 pm
來自: 中華民國


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客