Using NdisFIndicateReceiveNetBufferLists for every packet vs chaining them all together to receive?
Hey everyone,
I have an NDIS driver where i send received packets to the user service, then the service marks those packets that are OK (not malicious), then i iterate over the packets that are good to receive then i send them one by one by by converting each of them back to a proper NetBufferList with one NetBuffer and then i indicate them using NdisFIndicateReceiveNetBufferLists.
This caused a problem that in large file transfers through SMB (copying files from shares), which reduced the transfer speed significantly.
As a workaround, i now chain all of the NBLs that are OK altogether (instead of sending them one by one), and then send all of them at once via NdisFIndicateReceiveNetBufferLists.
My questions are :
- will this change cause any issue? Any difference between sending X number of NBLs one by one vs chaining them together and sending all of them at once? (since most of them might be related to different flows/apps)
- If i reorder the NBL linked list, will that affect anything? For example, lets say in my receive callback i got these NBLs: 1,2,3,4 (assume each have 1 NB) now after user-mode is finished, i re-link them like this : 4,3,2,1 or 1,3,2,4. Does this matter at all?