Sending multiple WSK_BUF to kernel socket function WsksendTo()

Hi All,

Is there anyway to send multiple WSK_Buf to WskSendTo() function to improve performance…
On the receive side WSK is offering WSK_DATA_INDICATION list to read multiple datagram packets in the callback, likewise i a looking on the send path.

Thanks,

What kind of performance improvement are you hoping for?

Currently, I am invoking WskSendTo for every NET_BUFFER in the NET_BUFFER_LIST. Each call to WskSendTo invokes the IRP completion. Instead of calling WskSendTo for every NET_BUFFER in the NET_BUFFER_LIST, if i can send some list of WSK_Buf, i will be getting less number IRP completion callback as well as at the socket level it will have more data to transmit.

Do you have even the slightest evidence that this is a performance problem in any way?

But the total work that has to be done by the CPU will be about the same? If you pass down a list, someone has to loop over it. Is that loop going to consume fewer CPU cycles if you do it further down the stack - not tangibly. The only difference in cost is function call overhead - which is orders of magnitude faster than network send performance.

Recv is different because of the allocation problem. When sending, you obviously have the data that you will send, and necessarily have storage for that data. You are also in control of how quickly that can be done because it can’t go any faster than you can generate it. But with recv, data can come for which you have no storage and at a rate that is faster than you can process. Techniques exists for handling this