很多2410的板子都用的cs8900这个nic芯片。想来一来是成本低,另一个恐怕还是原始的SMDK用了这颗芯片。
本来这个芯片好坏其实也没啥关系,只是前两天突发奇想想用开发板做下载专用机。结果不试不知道,一试吓一跳,这速率低的太吓人了,只有20来k,远远低于10M的理论值。赶紧ifconfig看一下,collision多到吓人。collision这玩意只会在半双工时才会有。也就是说这颗芯片一直都工作在半双工状态下。
老大不爽,看了一下手册,强行设置为全双工,一看,还是不行。collision倒是没有了,错包一大堆,感情是对端半双工了。
拍了拍脑袋,老糊涂了!偶们用的小路由器都是10/100M自协商的。而10M这种连接速率本身就是不支持自协商,跟自协商对接,自协商端自动会变成10M半双工。要问为什么是这样?802.3定义的!没办法。。
回顾一下跟自协商端的交互过程: 10MbaseT为了检测链接是定时发送NLP的,那么100MbaseTx收到NLP就会马上变成10M半双工。也就是说,不管你设置CS8900的强制全双工(reg 19,FDX)或者自动,只要是跟100M自协商设备对接,对端就会变成半双工。如果关掉CS8900的NLP(Reg 19,DisableLT)发送,对端如果是100M自协商,那么链路根本UP不起来,流量则会完全不通。
如何才能解决这个问题?设置Cs8900为全双工(完整的说,要强制设置为10 BASE_T,然后设置FDX)。对端也必须设置为10M/FDX。遗憾的是大部分的家用路由器都没这个速率设置的手段,只得放弃。
本来这个芯片好坏其实也没啥关系,只是前两天突发奇想想用开发板做下载专用机。结果不试不知道,一试吓一跳,这速率低的太吓人了,只有20来k,远远低于10M的理论值。赶紧ifconfig看一下,collision多到吓人。collision这玩意只会在半双工时才会有。也就是说这颗芯片一直都工作在半双工状态下。
老大不爽,看了一下手册,强行设置为全双工,一看,还是不行。collision倒是没有了,错包一大堆,感情是对端半双工了。
拍了拍脑袋,老糊涂了!偶们用的小路由器都是10/100M自协商的。而10M这种连接速率本身就是不支持自协商,跟自协商对接,自协商端自动会变成10M半双工。要问为什么是这样?802.3定义的!没办法。。
回顾一下跟自协商端的交互过程: 10MbaseT为了检测链接是定时发送NLP的,那么100MbaseTx收到NLP就会马上变成10M半双工。也就是说,不管你设置CS8900的强制全双工(reg 19,FDX)或者自动,只要是跟100M自协商设备对接,对端就会变成半双工。如果关掉CS8900的NLP(Reg 19,DisableLT)发送,对端如果是100M自协商,那么链路根本UP不起来,流量则会完全不通。
如何才能解决这个问题?设置Cs8900为全双工(完整的说,要强制设置为10 BASE_T,然后设置FDX)。对端也必须设置为10M/FDX。遗憾的是大部分的家用路由器都没这个速率设置的手段,只得放弃。