网口对接switch芯片配置VLAN后网络不通的解决方法

我们芯片的网口,无论是百兆网卡ETH,还是千兆网卡GMAC,在对接某些switch芯片时(比如88E6071),如果配置了VLAN,可能会网络不通。

网络不通的原因,是IEEE没有明确规定VLAN报文的最小帧长是64字节还是68字节。有的switch芯片是按照最小帧长68字节实现的,而我们芯片的网卡,是按照最小64字节实现的,导致出现了兼容性问题,我们芯片网卡发送的数据包不满足switch芯片的最小帧长要求,数据包被switch丢弃。

遇到这种问题时,解决方案如下:

针对千兆GMAC网卡,修改网卡驱动代码,在驱动发包函数的入口(ndo_start_xmit对应的驱动实现函数),添加如下代码段。 if (skb->len < 68) { int pad_bytes = 68 – skb->len; WARN_ON(pad_bytes <= 0); if (!skb_pad(skb, pad_bytes)) skb_put(skb, pad_bytes); }

针对百兆ETH网卡,修改网卡驱动代码,在驱动发包函数的入口(ndo_start_xmit对应的驱动实现函数),添加如下代码段。

if (skb->len < 68) { int pad_bytes = 68 – skb->len; WARN_ON(pad_bytes <= 0); if (!skb_pad(skb, pad_bytes)) { skb_put(skb, pad_bytes); if (skb->ip_summed == CHECKSUM_PARTIAL) skb_checksum_help(skb); } }

免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:网口对接switch芯片配置VLAN后网络不通的解决方法 https://www.yhzz.com.cn/a/16567.html

上一篇 2023-05-14 04:04:21
下一篇 2023-05-14 04:22:29

相关推荐

联系云恒

在线留言: 我要留言
客服热线:400-600-0310
工作时间:周一至周六,08:30-17:30,节假日休息。