以e1000e为例
一些初始化过程
module init 注册pci driver
ret = pci_register_driver(&e1000_driver);
pci_driver e1000_driver.probe = e1000_probe
e1000_probe probe device探测device即有新的device被pci总线发现
e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
- netdev = alloc_etherdev(sizeof(struct e1000_adapter));内存布局 net_device 按32字节对齐,然后是 e1000_adapter,参考 netdev_priv(netdev)
- netdev->irq = pdev->irq;
- netdev->netdev_ops = &e1000e_netdev_ops;
- netif_napi_add(netdev, &adapter->napi, e1000e_poll , 64);
- 【napi_struct->poll就会被初始化为e1000e_poll】
- e1000_sw_init(adapter);
- e1000_alloc_queues(adapter);
- set_bit(__E1000_DOWN, &adapter->stat