阅读:2215回复:4
lookahead是packet的哪个部分,怎么使用?
我的网卡驱动程序从硬件控制器上读出了一个frame,现在要向上层驱动indicate,要用到lookahead buffer,不知道要做那些变换,如何使用lookahead buffer,要自己再创建一个packet吗?
|
|
沙发#
发布于:2001-08-27 15:25
是以太网的以太头,共14个字节。
|
|
板凳#
发布于:2001-08-27 21:23
你最好不要用lookaheadbuffer,最好是把所有的数据包收到了
之后用介质无关indicate packet。 这种情况需要构造packet。但是不用写transferdata函数了。 |
|
|
地板#
发布于:2001-08-28 08:39
有了斑竹和热心朋友的关怀,我的心里热乎乎的,你们有重燃了我完成这个驱动的信心。
但是,又有一个新的问题: 怎么创建一个packet,我从ddk中看到的是NdisAllocatePacket函数,是否使用这个函数呢?那就要用到NdisAllocatePacketPool函数了,又没有现成的例子可以参考呢? 另外,我们的网卡是不支持dma的,只能使用pio的形式,而且是单包收发数据的。 如果能得到您们的帮助,我的感激真如滔滔江水。。。。 |
|
地下室#
发布于:2001-08-28 09:33
一个函数可是搞不定的
1。 NdisAllocatePacketPool(&Status, &Adapter->ReceivePacketPool, Dongle_PACKET_NUMBER, 16);//分配PacketPool . 2. NdisAllocateBufferPool(&Status, &Adapter->ReceiveBufferPool, Dongle_PACKET_NUMBER);////分配BufferPool 3.分配Packet for (i=0;i<Dongle_PACKET_NUMBER;i++){ NdisAllocatePacket(&Status, &Adapter->Packets, Adapter->ReceivePacketPool); NDIS_SET_PACKET_HEADER_SIZE(Adapter->Packets,Dongle_HEADER_SIZE); NdisAllocateBuffer(&Status, &Adapter->ReceiveBuffer, Adapter->ReceiveBufferPool, (PVOID)Adapter->RevDataBuffer, Dongle_PACKET_SIZE); NdisChainBufferAtFront(Adapter->Packets,Adapter->ReceiveBuffer); } 大致的工作就是如上,你先要搞清楚NDIS下的Packet结构,DDk上有 |
|
|