免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1810 | 回复: 3
打印 上一主题 下一主题

[网络子系统] 内核源码中如何更改以太网MTU的大小? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-01-22 13:34 |只看该作者 |倒序浏览
问下各位朋友,内核源码中如何更改以太网MTU的大小?我看了一下eth.c,发现
int eth_change_mtu(struct net_device *dev, int new_mtu)
{
        if (new_mtu < 68 || new_mtu > ETH_DATA_LEN)
                return -EINVAL;
        dev->mtu = new_mtu;
        return 0;
}
也就是说,通过ifconfig命令更改MTU只能将其改在1500以内的某个范围,不能将其改大。我现在做一个项目是两边设备通过自己的无线设备进行透传工作。无线端目前没法优化,它一次传输能传输3000左右的字节。所以一个以太网帧传一次就浪费带宽了。如果缓冲又怕网络不稳定。所以想把MTU改大。这样一次传输一个MTU就不会有什么浪费。
不知道内核哪里可以更改这个MTU,改了以后对内核原本的协议栈有什么影响?
谢谢!

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
2 [报告]
发表于 2014-01-22 14:05 |只看该作者
ruixiang 发表于 2014-01-22 13:34
问下各位朋友,内核源码中如何更改以太网MTU的大小?我看了一下eth.c,发现
int eth_change_mtu(struct ne ...

映像中,只要内核支持Jumbo Frame(默认应该都是支持的),就可以直接设置大于1500的mtu的,好像没见过这样的限制。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
3 [报告]
发表于 2014-01-22 14:28 |只看该作者
ndo_change_mtu

driver可以自己实现

论坛徽章:
0
4 [报告]
发表于 2014-01-22 14:50 |只看该作者
谢谢两位。
ndo_change_mtu自己实现,这个好办。
因为对内核协议栈源码不是很熟,不知道底层驱动将MTU改了之后,中间的TCP和IP层的处理会不会有什么影响?只把net_device的mtu成员改掉就可以了吗?内核还有其它的全局宏或是menuconfig的时候有没有什么需要改的地方?
谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP