we receive PNET_BUFFER_LIST as a parameter on SendNetBufferListsHandler. Need clarification on understanding or questions I have.
Is the NET_Buffer_list we received on Send path represent a single Ethernet frame containing on one NBL or list of NBL’s linked together.
If it is single Ethernet frame containing one NBL, then it can also have single NB or multiple NB’s, I assume one NBL represent a Ethernet frame where Header part will be only on First NB, remaining NB’s represent the payload data (MAC->IP->TCP/UDP->Payload->Checksum).
If each NBL represent a single Ethernet Frame, then I wanted to group all the NB’s (list of NB’s) into a large array for me to make the processing on frame starting with MAC header, IP header, TCP/UDP header, Once I complete the processing on these frames, Would like to send this Ethernet frame down as if it is initiated by FD (NdisSendNetBufferLists)
Can I send one NBL separately using NdisSendNetBufferLists after my processing on the Ethernet packet (NBL), even though PNET_BUFFER_LIST it is multiple NBL’s, Is this type of send break any NDIS design.
Once I process each NBL in the linked list of NBL’s I will just return the original PNET_BUFFER_LIST by calling NdisFSendNetBufferListsComplete.
In the NDIS 5.x, we have few functions we can use to get a Entire packet/ Ethernet frame into a large array of buffer, such as NdisQueryPacket (for size),NdisQueryBufferSafe , NdisGetNextBuffer. Do we have any such NDIS calls in the 6.x for getting the information about NBL or NB to form a Complete Ethernet Frame received (fragmented or un-fragmented).
Appreciate your help.