- 论坛徽章:
- 0
|
Rh9.0 kernel 2.4.20-8 代码是从 drivers/net/3c501.c中摘取的
在代码的788行 ,el_receive的函数中 判断接收到的数据帧的长度
pkt_len=inw(RX_LOW);
if ((pkt_len < 60) || (pkt_len >; 1536))
{
输出错误提示...
}
以太网数据帧最小为60字节,最大为1500字节 也就是MTU ,这个MTU是包含了上层协议头和payload , 再加上以太网14字节的头部 和4个字节的crc 才1518,
可是代码了怎么判断的是1536呢?
自己找到的一些答案 ,给大家分享一下了:)
MTU在IEEE 802.3中 定义为1500 那么加上以太网的头 和crc 就是1518.
在ETHER II 中 头有了一些变化,多了一些字段
1514 Basic maximum Ethernet packet size w/headers
+4 Packet with 4 byte CRC
+2 Align the IP header
+16 Prepend a descriptor
加在一起就是1536了. |
|