From: David Schwartz David on
I have an NDIS 5.1 deserialized Intermediate driver that returns 42 in
response to an OID_GEN_MAXIMUM_SEND_PACKETS query. When I run the NDIS HCT
(2c_PerformanceBlast, 2c_PerformanceProfile, etc) the driver's
MiniportSendPackets function does indeed receive a PacketArray of 42
NDIS_PACKETs.

However, at all other times MiniportSendPackets is called with a single
NDIS_PACKET. This even occurs running heavy webserver tests that saturate
Gigabit Ethernet.

From a Google search, I see this question has been asked elsewhere over the
years, but I have yet to find an answer for this behavior. With the
exception of the NDIS HCT, has anyone seen a MiniportSendPackets function
called with more than a single packet?

Thank you,

David Schwartz

From: PCAUSA on
On Apr 22, 6:06 pm, David Schwartz <David
Schwa...(a)discussions.microsoft.com> wrote:
> I have an NDIS 5.1 deserialized Intermediate driver that returns 42 in
> response to an OID_GEN_MAXIMUM_SEND_PACKETS query. When I run the NDIS HCT
> (2c_PerformanceBlast, 2c_PerformanceProfile, etc) the driver's
> MiniportSendPackets function does indeed receive a PacketArray of 42
> NDIS_PACKETs.
>
> However, at all other times MiniportSendPackets is called with a single
> NDIS_PACKET. This even occurs running heavy webserver tests that saturate
> Gigabit Ethernet.
>
> From a Google search, I see this question has been asked elsewhere over the
> years, but I have yet to find an answer for this behavior.  With the
> exception of the NDIS HCT, has anyone seen a MiniportSendPackets function
> called with more than a single packet?
>
> Thank you,
>
> David Schwartz

No, I never have seen MiniportSendPackets being called with multiple
packets either.

It is a good optimization, however the primary user is, of course, the
Microsoft TCP/IP transport driver. If they didn't elect to use the
offered optimization, then it's really just more work for us.

I think their focus shifted to the entirely new Vista/WS2008 stack,
leaving this feature an orphan for all practical purposes.

Thomas F. Divine
From: Alireza Dabagh [MS] on
Yes, TCPIP prior to version 6.0 sends only one packet at a time. But even if
it did not, NDIS still could not send more than one packet to a real
physical bus master NIC because of another limitations that we have in our
scatter gather scheme. In NDIS 5.x, NDIS has to create the SG list for each
packet before sending the packet down and trying to build the SG list for
all the packets before sending them done could result in a deadlock.

As you know we addressed both these issues in NDIS 6.0

-ali

--
This posting is provided "AS IS" with no warranties, and confers no rights.

"PCAUSA" <pcausa(a)gmail.com> wrote in message
news:99ec72b1-3e96-4c37-99fc-104f6a56a7b8(a)m44g2000hsc.googlegroups.com...
On Apr 22, 6:06 pm, David Schwartz <David
Schwa...(a)discussions.microsoft.com> wrote:
> I have an NDIS 5.1 deserialized Intermediate driver that returns 42 in
> response to an OID_GEN_MAXIMUM_SEND_PACKETS query. When I run the NDIS HCT
> (2c_PerformanceBlast, 2c_PerformanceProfile, etc) the driver's
> MiniportSendPackets function does indeed receive a PacketArray of 42
> NDIS_PACKETs.
>
> However, at all other times MiniportSendPackets is called with a single
> NDIS_PACKET. This even occurs running heavy webserver tests that saturate
> Gigabit Ethernet.
>
> From a Google search, I see this question has been asked elsewhere over
> the
> years, but I have yet to find an answer for this behavior. With the
> exception of the NDIS HCT, has anyone seen a MiniportSendPackets function
> called with more than a single packet?
>
> Thank you,
>
> David Schwartz

No, I never have seen MiniportSendPackets being called with multiple
packets either.

It is a good optimization, however the primary user is, of course, the
Microsoft TCP/IP transport driver. If they didn't elect to use the
offered optimization, then it's really just more work for us.

I think their focus shifted to the entirely new Vista/WS2008 stack,
leaving this feature an orphan for all practical purposes.

Thomas F. Divine

From: David Schwartz on
> "Alireza Dabagh [MS]" wrote:
>
> Yes, TCPIP prior to version 6.0 sends only one packet at a time. But even if
> it did not, NDIS still could not send more than one packet to a real
> physical bus master NIC because of another limitations that we have in our
> scatter gather scheme. In NDIS 5.x, NDIS has to create the SG list for each
> packet before sending the packet down and trying to build the SG list for
> all the packets before sending them done could result in a deadlock.
>
> As you know we addressed both these issues in NDIS 6.0
>
> -ali

MiniportSendPackets was introduced in NT 4.0 (NDIS 4.0). I am surprised
that in all this time, TCP/IP never took advange of this feature. Also, an
NDIS Intermediate driver exports a virtual device at its lower edge, and does
not necessarily control a physical bus master device of any type.

I am glad these issues have been addressed in NDIS 6.0.

David