zoukankan      html  css  js  c++  java
  • 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   |                      }
    
  • 相关阅读:
    一个完整的AjaxPro例子(转)
    sql2000存储过程
    System.Configuration命名空间下找不到ConfigurationManager类
    编译器错误信息: CS0016
    (转)AjaxPro使用说明
    数据库中去逗号的函数
    asp.net 验证码
    sql2005存储过程
    简单控件分页
    身份证号码验证
  • 原文地址:https://www.cnblogs.com/honpey/p/10263452.html
Copyright © 2011-2022 走看看