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 question is, 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)

Another question:

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?