博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vpp代码dpdk-input node后加feature node 不能trace原因
阅读量:4055 次
发布时间:2019-05-25

本文共 1994 字,大约阅读时间需要 6 分钟。

trace功能

在使能trace功能后,发现dpdk-input的feature节点是没有开启trace的,因为

查看代码\vpp-1701\vnet\vnet\devices\dpdk\node.c

关键函数是

static_always_inline u32dpdk_device_input (dpdk_main_t * dm, dpdk_device_t * xd,		   vlib_node_runtime_t * node, u32 cpu_index, u16 queue_id){  ......  while (n_buffers > 0)    {      ......      vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next);      while (n_buffers > 8 && n_left_to_next > 4)	{		}          while (n_buffers > 0 && n_left_to_next > 0)	{	  /* Do we have any driver RX features configured on the interface? */	  vnet_feature_start_device_input_x1 (xd->vlib_sw_if_index, &next0,					      b0, l3_offset0);	  vlib_validate_buffer_enqueue_x1 (vm, node, next_index,					   to_next, n_left_to_next,					   bi0, next0);	  n_buffers--;	  mb_index++;	}      vlib_put_next_frame (vm, node, next_index, n_left_to_next);    }  if (PREDICT_FALSE (vec_len (xd->d_trace_buffers[cpu_index]) > 0))    {      dpdk_rx_trace (dm, node, xd, queue_id, xd->d_trace_buffers[cpu_index],		     vec_len (xd->d_trace_buffers[cpu_index]));      vlib_set_trace_count (vm, node, n_trace -			    vec_len (xd->d_trace_buffers[cpu_index]));    }  vlib_increment_combined_counter    (vnet_get_main ()->interface_main.combined_sw_if_counters     + VNET_INTERFACE_COUNTER_RX,     cpu_index, xd->vlib_sw_if_index, mb_index, n_rx_bytes);  dpdk_worker_t *dw = vec_elt_at_index (dm->workers, cpu_index);  dw->aggregate_rx_packets += mb_index;  return mb_index;}

dpdk_rx_trace开始使能node trace,注意上面函数dpdk_rx_trace函数的执行位置。

if (PREDICT_FALSE (vec_len (xd->d_trace_buffers[cpu_index]) > 0))    {      dpdk_rx_trace (dm, node, xd, queue_id, xd->d_trace_buffers[cpu_index],		     vec_len (xd->d_trace_buffers[cpu_index]));      vlib_set_trace_count (vm, node, n_trace -			    vec_len (xd->d_trace_buffers[cpu_index]));    }

在dpdk-input node 后添加feature node 后,vlib_put_next_frame (vm, node, next_index, n_left_to_next)中 next_index,会是feature node的索引,

而dpdk_rx_trace里的下一节点索引还是默认的,所以feature node 就不会trace了

转载地址:http://dbqci.baihongyu.com/

你可能感兴趣的文章
Android/Linux 内存监视
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
iphone开发之SDK研究(待续)
查看>>
计算机网络复习要点
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++模板与泛型编程
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
android 代码实现圆角
查看>>