函数列表
主要是
dm9000_init
dm9000_open
dm9000_interrupt
dm9000_start_xmit
astonnet
astonnet_open 中只做了一件事
netif_start_queue(dev);
astonnet 没有实现中断,astonnet_rx 中做了一件事
1. 申请了skb
2. 将网卡中的数据放置到 skb_put(skb, len)
3. netif_rx(skb);
astonnet_tx 中做了一件事
1. 将len 和data 从 skb->len 和 skb->data 中取出
2. 控制硬件发出数据
3. dev_kfree_skb(skb);
dm9000
dm9000_open
初始化dm9000的mac 和phy
注册中断
打开(unmask)dm9000(设备侧)的中断
netif_start_queue(dev);
mii_check_media(&db->mii, netif_msg_link(db), 1);
dm9000_start_xmit
上锁
拷贝数据到ram
控制 dm9000 , 发送数据
去锁
dm9000_interrupt : link change
上锁
读取中断源(因为多合一),关闭(mask)dm9000设备侧中断
如果中断源 为 ISR_LNKCHNG , mii_check_media(&db->mii, netif_msg_link(db), 1);
打开 dm9000 中断
去锁
dm9000_interrupt : 收到数据
上锁
读取中断源(因为多合一),关闭(mask)dm9000设备侧中断
如果中断源 为 ISR_PRS
申请skb
读取ram,获取 len & data ,填充到sbk
netif_rx(skb);
打开 dm9000 中断
去锁