void setup(DpdkEthercat *dpdk);
void print_port_info(DpdkEthercat *dpdk);
void set_lcore(DpdkEthercat *dpdk, unsigned lcore_id);
void set_delay_µs(DpdkEthercat *dpdk, unsigned int delay_µs);
void sync_callback(struct rte_timer *tim, void *arg);
void sync_with_master(DpdkEthercat *dpdk);
void print_stats(DpdkEthercat *dpdk);
void check_link_statµs(DpdkEthercat *dpdk);
void run(DpdkEthercat *dpdk);
int enqueue_tx_packet(DpdkEthercat *dpdk, struct rte_mbuf *mbuf);
int enqueue_rx_packet(DpdkEthercat *dpdk, struct rte_mbuf *mbuf);
int port_init(DpdkEthercat *dpdk, uint16_t port);
unsigned int get_delay_µs(const DpdkEthercat *dpdk);
struct rte_mbuf *dequeue_tx_packet(DpdkEthercat *dpdk);
struct rte_mbuf *dequeue_rx_packet(DpdkEthercat *dpdk);
struct rte_mempool *get_mbuf_pool(const DpdkEthercat *dpdk);
提供了用户态实现DPDK-Ethercat网口驱动(PMD模式)
setup
void setup(DpdkEthercat *dpdk)
初始化DPDK-Driver
参数:
dpdk DPDK-Ethercat网口对象;
port_init
int port_init(DpdkEthercat *dpdk, uint16_t port)
初始化DPDK网口
参数:
dpdk DPDK-Ethercat网口对象;
port 绑定了VFIO网口的列表序号, 比如:0;
返回值:
0: 成功;
-1: 失败;
print_port_info
void print_port_info(DpdkEthercat *dpdk)
端口消息打印
参数:
dpdk DPDK-Ethercat网口对象;
set_lcore
void set_lcore(DpdkEthercat *dpdk, unsigned lcore_id)
指定DPDK-Driver运行核心
参数:
dpdk DPDK-Ethercat网口对象;
lcore_id 绑定了CPU核心号, 比如:0;
set_delay_µs
void set_delay_µs(DpdkEthercat *dpdk, unsigned int delay_µs)
设置PMD模式下轮询延时值
参数:
dpdk DPDK-Ethercat网口对象;
delay_µs 延时时间, 单位: µs;
get_delay_µs
unsigned int get_delay_µs(const DpdkEthercat *dpdk)
获取PMD模式下轮询延时值
参数:
dpdk DPDK-Ethercat网口对象;
enqueue_tx_packet
int enqueue_tx_packet(DpdkEthercat *dpdk, struct rte_mbuf *mbuf)
发送数据包入列
参数:
dpdk DPDK-Ethercat网口对象;
mbuf 需要发送的数据包;
返回值:
0: 成功;
-1: 失败;
enqueue_rx_packet
int enqueue_rx_packet(DpdkEthercat *dpdk, struct rte_mbuf *mbuf)
接收数据包入列
参数:
dpdk DPDK-Ethercat网口对象;
mbuf 需要接收的数据包;
返回值:
0: 成功;
-1: 失败;
dequeue_tx_packet
struct rte_mbuf *dequeue_tx_packet(DpdkEthercat *dpdk)
发送数据包出列
参数:
dpdk DPDK-Ethercat网口对象;
返回值:
rte_mbuf: 解析的发送数据包被内容;
dequeue_rx_packet
struct rte_mbuf *dequeue_rx_packet(DpdkEthercat *dpdk)
接收数据包出列
参数:
dpdk DPDK-Ethercat网口对象;
返回值:
rte_mbuf: 解析的接收数据包被内容;
get_mbuf_pool
struct rte_mempool *get_mbuf_pool(const DpdkEthercat *dpdk)
获取DPDK内存池
参数:
dpdk DPDK-Ethercat网口对象;
返回值:
rte_mempool: DPDK内存池对象;
sync_callback
void sync_callback(struct rte_timer *tim, void *arg)
同步模式回调函数
参数:
tim DPDK轮询定时器对象;
arg 回调函数;
sync_with_master
void sync_with_master(DpdkEthercat *dpdk)
Ethercat主站同步
参数:
dpdk DPDK-Ethercat网口对象;
print_stats
void print_stats(DpdkEthercat *dpdk)
DPDK状态打印
参数:
dpdk DPDK-Ethercat网口对象;
check_link_statµs
void check_link_statµs(DpdkEthercat *dpdk)
检查网口连接状态
参数:
dpdk DPDK-Ethercat网口对象;
run
void run(DpdkEthercat *dpdk)
驱动执行
参数:
dpdk DPDK-Ethercat网口对象;