嵌入式开发时如何让eth口同时使用socket和ODP

嵌入式开发时如何让eth口同时使用socket和ODP,第1张

正常情况下, ODP 在对eth口收发包时, 要先在脚本中对eth口进行绑定:

vfio-devbind.sh -b vfio-pci 0002:02:00.0

0002:02:00.0 表示eth0 的bdf 号.

有一个问题, 这样操作后, eth0在linux的ifconfig就不能显示了, 就不能配置IP 用于socket了.

如何能ODP 使用了也还可以用于socket 呢?

用以下配置虚拟一个设备出来:

echo 1 > /sys/class/net/eth0/device/sriov_numvfs

ODP 绑定的时候用:(如果不绑定, 这个会在ifconfig -a中显示出来, 作为普通的eth口使用)

vfio-devbind.sh -b vfio-pci 0002:02:00.1

这样可以实现.

注意:

ODP 在初始化eth port的时候, 不能打开混杂模式, 不然ODP, 和 socket都不能正常使用.

说明一下, 为什么要关闭混杂模式:

之前设置的原因, 主要是ODP 的demo 代码中就有这一行.没有去掉. 能用的情况下, 就忽略了.

后边发生了问题, 看源码发现sriov VF中设置了混杂模式后, 是对底层硬件npc 资源进行了设置, 这个npc 资源对于PF, VF 都在用, 这样就导致 了eth0 的VF 配置了混杂模式后, 把PF 应该要收的包也收了. 这样原因就找到了.

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/1498742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存