我正在为Linux编写一些网络设备驱动程序。出于某些原因,我必须在初始化时为我的网络接口动态降低MTU。
当驱动程序计算并将MTU设置为例如值892时 - 内核将输出帧修剪为310字节。
问题是:为什么输出数据包长310个字节而不是892个字节?
编辑:(计算MTU的部分代码)
bitrate = 250; // [kbit/s]
limit_us = upstream_timeslot = 5000; // [us]
mtu = (limit_us - 144) * bitrate * 2 / 15625 - fp->wdev->hard_header_len - sizeof(struct ether_header);
它只计算适合250kbps慢速传输的传输时隙的1帧的最大值。