阅读:905回复:0
问题7,帮帮忙,谢谢
.虽然我并不是使用Indicatepacket的方式来支持多包接受,但我一直想搞明白Descriptor这个描述符,我看了USBNIC和E100BEX的例子就是还不明白,他是不是一有数据就已经写入内存了阿,还有它是怎么运作的。是不是需要硬件有特别的处理。虽然我没有使用这种方法来实现我的接收,但是我还是满想了解这种方式的。感觉跟NdisAllocatePacketPool,NdisAllocateBufferPool等一些函数有关系。但是它到底是怎么实现的。如果是在DriverNetWorks里面就是用一个类KndisSharedReceiveArea把所有的包装好了。很简单的,但就是太简单了反而看不出它是怎么实现的。它把一大串数据写入内存,它怎么将它拷入事先初始化的RFD中。还有知道它的每一帧长度。这么多帧的数据在一起不会乱掉吗?但是在处理接收中断的时候倒是满简单的,从一个队列读出一个RFD,然后得到它的帧的长度AdjustLength就行了。感觉就像我事先分配一个一个包的内存,然后让DMA把数据拷贝到这里面就是了。我也不太清楚,有没有大侠可以给些资料或者具体介绍一下这是怎么实现的。
这个方式下的接收,是不是硬件有特殊的处理。感觉太简单也太生气了。我看了3个这样的例子,一点也不明白它到底是怎么实现的。 |
|
|