dpdk是绕开内核直接在用户态进行包收发的,这个包发送到网卡的pmd驱动后,是通过将发送数据的物理地址写入ring描述符后更新描述符索引来触发发送的吧。
但我没有找到刷cache到main memory的地方,如果在调用tx_burst之前修改过包内的数据,然后直接调用tx_burst发送,岂不是网卡可能会拿到仍然在cache而不在main memory中的数据? 我知道kernel中是通过stream dma或者coherent dma分配来保证内存一致性的,但dpdk代码里没找到相应的操作的处理地方。
看你的描述,似乎是想修改包的内容,然后将修改后的包发出去,如果是这样的话,直接修改后调用tx_burst就可以了
欢迎来到 DPDK交流社区 ,有什么问题可以尽管在这里提问,您将会收到社区其他成员的回答;也可以将您的总结写在这里,为社区其他成员提供帮助。
QQ交流2群:635461501 (入群请注明来源)