免费注册 查看新帖 |

Chinaunix

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

dev_alloc_skb(pkt_len+2)中的2是什么用途? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-24 22:04 |只看该作者 |倒序浏览
dev_alloc_skb(int len) 在分配空间是 就把len+16了,作为以太网头部的空间,为什么在ne2000 和3c501中又+2?
dev_alloc_skb(pkt_len+2);2

论坛徽章:
0
2 [报告]
发表于 2005-06-25 17:38 |只看该作者

dev_alloc_skb(pkt_len+2)中的2是什么用途?

在__dev_alloc_skb里是把len+16调用alloc_skb的,但下面是
                if(likely(skb))
                          skb_reserve(skb,16);
               return skb;
skb->;data指向的是16B后面,那16字节并不是做以太网头的,你也可以看看旁边的
注释。
     在驱动里面dev_alloc_skb(pkt_len+2)是分配包的长度+2,
包括了以太网头,也说明上面那16B不是给以太网头的,
+2是为了ip头的对齐,驱动里面后面有
  skb_reserve(skb,2);        /*Force 16 byte alignment*/
在skbuff.h里有个NET_IP_ALIGN有说明
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP