A20 网卡驱动分析
網卡芯片為realteak 8201
1.? net_device結構體的分配和注冊
???? 1) "/drivers/net/ethernet/sun7i/sun7i_wemac.c"
???? wemac_probe()
???????????? ndev = alloc_etherdev(sizeof(struct wemac_board_info));?????分配
???????????? ret = register_netdev(ndev);???????????????????????????????????????????????????注冊
???? 2) alloc_etherdev定義在?"/include/linux/etherdevice.h"
????#define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1)
???? #define alloc_etherdev_mq(sizeof_priv, count) alloc_etherdev_mqs(sizeof_priv, count, count)
????3) alloc_etherdev_mqs定義在 "/net/ethernet/eth.c"
???? struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs,
?? ??? ??? ??? ?????? unsigned int rxqs)
???? {
?? ?????????? return alloc_netdev_mqs(sizeof_priv, "eth%d", ether_setup, txqs, rxqs);
???? }
2. 發包函數
???"/drivers/net/ethernet/sun7i/sun7i_wemac.c"
??? /*
?????? *? Hardware start transmission.
?????? *? Send a packet to media from the upper layer.
??? */
???? static int wemac_start_xmit(struct sk_buff *skb, struct net_device *dev)
???????????? 1) dev->stats.tx_bytes += skb->len;??????????????發包統計信息
???????????? 2)將skb數據寫入網卡
???????????? /* set TX len */
?? ??? ????? writel(skb->len, db->emac_vbase + EMAC_TX_PL0_REG);
?? ??? ????? /* start translate from fifo to phy */
?? ??? ???? writel(readl(db->emac_vbase + EMAC_TX_CTL0_REG)
?? ??? ??? ??? ?| 1, db->emac_vbase + EMAC_TX_CTL0_REG);
?? ??? ????? dev->trans_start = jiffies;?? ?/* save the time stamp */
???????????? 3) 釋放skb
???????????? dev_kfree_skb(skb); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 釋放skb
???????????? 4) netif_stop_queue(dev);?????????????????????????停止隊列,數據發送完后由中斷處理程序來喚醒隊列
3. 中斷處理程序
??? static irqreturn_t wemac_interrupt(int irq, void *dev_id)
???? 1)? wemac_tx_done(dev, db, int_status)
????????? 當數據發送完后,產生中斷,此函數調用,然后調用netif_wake_queue(dev)來喚醒隊列
????2)? wemac_rx(dev)
????????? 接收數據包,最終調用netif_rx接收skb
4. MAC地址設置
?? "/drivers/net/ethernet/sun7i/sun7i_wemac.c"
?? static int wemac_set_mac_address(struct net_device *dev, void *p)
總結
以上是生活随笔為你收集整理的A20 网卡驱动分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《生化危机4:重制版》性感脸模美女曝光:
- 下一篇: 公司破产老板卖奔驰为百人发工资 网友深扒