gpt4 book ai didi

linux - 编程 Linux 网络驱动程序以支持关闭 TCP 校验和卸载

转载 作者:可可西里 更新时间:2023-11-01 02:34:33 26 4
gpt4 key购买 nike

我正在编写一个 Linux 网络驱动程序。快完成了。当我在 2 台 PC 之间 ping 时,一切都很完美。然后我尝试使用一些 TCP/UDP 协议(protocol),接收方从不回复。我使用 wireshark 查看那里发生了什么,我发现所有 TCP 数据包的校验和都不正确。据说错误的校验和是由TCP校验和卸载引起的。我试图用 ethtool 将其关闭。当我使用 sudo ethtool -K uwn0 tx off 时,它会回复我

Cannot get device rx-checksumming settings: Operation not supported
Cannot get device tx-checksumming settings: Operation not supported
Cannot get device scatter-gather settings: Operation not supported
Cannot get device tcp-segmentation-offload settings: Operation not supported
Cannot get device udp-fragmentation-offload settings: Operation not supported
Cannot get device generic-segmentation-offload settings: Operation not supported
Cannot get device generic-receive-offload settings: Operation not supported
Cannot get device flags: Operation not supported

有没有办法让我的驱动程序支持 tcp 校验和卸载?或者只是在软件中计算校验和?谢谢

最佳答案

在驱动程序中设置设备接口(interface)时,应取消设置 netdev->hw_features 中的标志 NETIF_F_HW_CSUM 以强制 TCP 在软件中计算校验和。

有关设置硬件功能标志的示例,请查看
lxr.free-electrons.com/source/drivers/net/ethernet/intel/e1000e/netdev.c .

关于linux - 编程 Linux 网络驱动程序以支持关闭 TCP 校验和卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com