Hello all,
I have developed a VNIC driver (TAP adapter) (NDIS5) based on the e100bex sample in the 3790.1830 DDK. This driver is used to “hook” packets, generated locally on the machine, to an application. The application specifices the destination of the packets it is interested in and any matching packets are copied to the queue (just a linked list of buffers which read using IRP_MJ_READ) instead of being sent to their appropriate destination.
For single fragment packets, everything works fine. However, when a packet goes above the MTU specified by the driver, only the last fragment of the packet is received in MiniportSend(), without any calls to MiniportSend() for any of the other fragments. Increasing the MTU in the driver allows for the packet to be received in one chunk, but this is not a valid fix.
Am I missing some special way to handle fragmentation if IP packets? Perhaps, am I skipping some specific OID required to allow a miniport driver to receive packet fragments?
Additional info:
From what I have managed to understand, NDIS_PACKET only represents a single packet and does not need to be walked through to obtain any subsequent packets. I have attempted using MiniportSendPackets() but it was also being called for one packet, the last fragment.
Regards,
Matt