- 论坛徽章:
- 0
|
原帖由 yikaikai 于 2007-8-15 16:22 发表 ![]()
from 8139.c
/* Note: the chip doesn't have auto-pad! */
if (likely(len < TX_BUF_SIZE)) {
if (len < ETH_ZLEN)
memset(tp->tx_buf[entry], 0, ETH_ZLEN);
Solaris维护一个最大和最小桢长度,这样可以丢掉长度非法的桢。最小的长度是不变的,最大长度根据硬件支持的情况动态得到,e1000上最大可以16k
> fffffffec020a9d0::print struct dev_info devi_driver_data|::print struct e1000g ! grep frame
max_frame_size = 0x5ea
min_frame_size = 0x40
> 0x5ea=D
1514
> 0x40=D
64
另外,IEEE对小尺寸的包的padding的规定其实也不是很严格,目前好多测试仪器不检测这个,导致有些驱动干脆不做zero padding. |
|