以testpmd为例分析DPDK网卡启动流程

以testpmd为例分析DPDK网卡启动流程:
1、调rte_eal_init进行DPDK初始化;
2、调rte_log_register进行日志的注册、调rte_log_set_level进行日志等级注册;
3、register_eth_event_callback:注册网卡中断的回调函数;
4、rte_pdump_init:将收发包的抓包打印回调函数添加到action_entry上,entry->name为PDUMP_MP;
5、 count = 0; RTE_ETH_FOREACH_DEV(port_id) { ports_ids[count] = port_id; count++; } nb_ports = (portid_t) count; 检查probe到的且没有owner的网卡数目、将其port id统计到ports_ids数组中;
6、init_port:申请存储网卡port信息的结构体空间; /* the port details */ struct port_info *ports;
初始化port在各cpu分配的用途的信息为全1;
memset(port_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
memset(rxring_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
memset(txring_numa, NUMA_NO_CONFIG, RTE_MAX_ETHPORTS);
7、set_def_fwd_config
1、set_default_fwd_lcores_config遍历各cpu:
1.1、rte_lcore_is_enabled查找cpu为ROLE_RTE状态的cpu;
1.2、rte_lcore_to_socket_id从lcore_config

猜你喜欢

转载自blog.csdn.net/qq_29044159/article/details/105547609