Share via

Using NdisFIndicateReceiveNetBufferLists for every packet vs chaining them all together to receive?

Brad H 1 Reputation point
2021-07-01T15:00:33.067+00:00

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 :

  1. 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)
    1. 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?
Windows for business | Windows Client for IT Pros | Devices and deployment | Other
0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.