• dev_queue_xmit 发生了什么?skb还会在哪里缓存


    见 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   |                      }
    
  • 相关阅读:
    docker
    SAML(Security assertion markUp language) 安全断言标记语言
    kafka消息系统
    OBS 对象存储技术学习
    AOP之AspectJ
    sql查漏补缺
    todolist
    springboot 注解整理
    前端之jQuery
    前端之BOM和DOM
  • 原文地址:https://www.cnblogs.com/honpey/p/10263452.html
Copyright © 2020-2023  润新知