见 codebox/net/qdisk/xmit.log中保存了一份记录
调用关系
sch_direct_xmit --> dev_hard_start_xmit --> xmit_one --> netdev_start_xmit -->__netdev_start_xmit ---> ops->ndo_start_xmit --> e1000_xmit_frame
可以好好看看e1000_xmit_frame函数的实现,这是驱动的代码.
也就是时候从ip_finish_local一路下来就到驱动了
6506 0) | ip_finish_output() { 6507 0) 0.023 us | ipv4_mtu(); 6508 0) | ip_finish_output2() { 6509 0) 0.027 us | skb_push(); 6510 0) | dev_queue_xmit() { 6511 0) | __dev_queue_xmit() { 6512 0) 0.035 us | dst_release(); 6513 0) 0.151 us | netdev_pick_tx(); 6514 0) 0.029 us | _raw_spin_lock(); 6515 0) | sch_direct_xmit() { 6516 0) | validate_xmit_skb_list() { 6517 0) | validate_xmit_skb.isra.97.part.98() { 6518 0) | netif_skb_features() { 6519 0) 0.024 us | passthru_features_check(); 6520 0) 0.026 us | skb_network_protocol(); 6521 0) 0.788 us | } 6522 0) 1.137 us | } 6523 0) 1.453 us | } 6524 0) 0.024 us | _raw_spin_lock(); 6525 0) | dev_hard_start_xmit() { 6526 0) | e1000_xmit_frame [e1000e]() { 6527 0) 0.151 us | e1000_maybe_stop_tx [e1000e](); 6528 0) 0.028 us | e1000_maybe_stop_tx [e1000e](); 6529 0) 2.932 us | } 6530 0) 3.668 us | } 6531 0) 0.026 us | _raw_spin_lock(); 6532 0) 6.545 us | } 6533 0) 0.038 us | __local_bh_enable_ip(); 6534 0) 9.135 us | } 6535 0) 9.525 us | } 6536 0) 0.039 us | __local_bh_enable_ip(); 6537 0) + 10.858 us | } 6538 0) + 11.445 us | }