20111017版:
大包收发数据无校验错误,需要进一步测试验证。
20111013版: 已加入了完整的Phy驱动(DP83640),目前收发OK,并且1588服务已经可以精确对时(可控制在30ns范围内),大包收发问题仍待解决。 2011-08-16 目前8139 miniport驱动已经实现了C+模式的小包通信(Ping通了),关键要注意RxInt里面IndicateReceivePacket和SET_PACKET_STATUS的顺序,SET_PACKET_STATUS要在前面,否则协议层接受报文会有问题,这些在DDK里面都没有提到的,总之icmp报文通了,哈哈,下一步要实现大包的处理,大包的DMA发送将不能再用packet拷贝,这样会影响效率,要实现零拷贝,直接映射(注意cache的问题) 2011-09-07 目前协议层驱动已于minoport驱动绑定,并且,协议层驱动和Miniport驱动均已经收到1588报文,在这里要强调一下链路层加入多播组的问题。 只有将链路层加入1588多播组,才能收到1588链路层报文,并且需要设置协议层驱动的包过滤规则(OID_GEN_CURRENT_PACKET_FILTER),以及协议层驱动的多播组地址表(OID_802_3_MULTICAST_LIST),否则即便miniport驱动收到了多播报文,向上提交后也会被协议层驱动丢弃,到时候根本截获不到任何1588报文。 当然miniport驱动在接收到链路层多播地址表后,也要设置相应的MAR0、MAR1寄存器。