29 Tbd = Adapter->Send.CurrentTbd;
31 for (
i = 0;
i <
SgList->NumberOfElements; ++
i)
56 while (ImplicitEntries);
97 Adapter->Send.CurrentTbd.x32->FlagsLength |=
Flags;
98 Adapter->Send.CurrentTbd = Tbd;
115 Tbd = Adapter->Send.CurrentTbd;
117 for (
i = 0;
i <
SgList->NumberOfElements; ++
i)
144 while (ImplicitEntries);
168 Tcb->DeferredTbd = Adapter->Send.CurrentTbd;
170 if (!Adapter->Send.DeferredTcb)
172 Adapter->Send.DeferredTcb = Tcb;
179 ++Adapter->Send.PacketsCount;
200 Adapter->Send.CurrentTbd.x64->FlagsLength |=
Flags;
201 Adapter->Send.CurrentTbd = Tbd;
314 if (!Adapter->Send.TcbSlots)
327 if (
SgList->NumberOfElements +
342 --Adapter->Send.TcbSlots;
346 Tcb = Adapter->Send.CurrentTcb;
351 Adapter->TransmitPacket(Adapter, Tcb,
SgList);
354 Adapter->Send.TbdSlots -= Tcb->
Slots;
356 Adapter->Send.CurrentTcb =
NV_NEXT_TCB(Adapter, Tcb);
377 if (ChecksumInfo.
Transmit.NdisPacketChecksumV4)
379 if (ChecksumInfo.
Transmit.NdisPacketTcpChecksum && Adapter->Offload.SendTcpChecksum)
383 if (ChecksumInfo.
Transmit.NdisPacketUdpChecksum && Adapter->Offload.SendUdpChecksum)
387 if (ChecksumInfo.
Transmit.NdisPacketIpChecksum && Adapter->Offload.SendIpChecksum)
408 ASSERT(TotalLength <= Adapter->MaximumFrameSize);
410 if (!Adapter->Send.TcbSlots)
421 if (!Adapter->Send.TbdSlots || !Adapter->Send.BufferList.Next)
430 --Adapter->Send.TcbSlots;
444 ++Adapter->Send.TcbSlots;
451 LocalSgList.NumberOfElements = 1;
456 Tcb = Adapter->Send.CurrentTcb;
457 Tcb->
Buffer = CoalesceBuffer;
462 if (
SgList->NumberOfElements +
468 --Adapter->Send.TcbSlots;
470 Tcb = Adapter->Send.CurrentTcb;
476 Adapter->TransmitPacket(Adapter, Tcb,
SgList);
479 Adapter->Send.TbdSlots -= Tcb->
Slots;
481 Adapter->Send.CurrentTcb =
NV_NEXT_TCB(Adapter, Tcb);
static ACPI_BUFFER CurrentBuffer
#define NDIS_DbgPrint(_t_, _x_)
NDIS_STATUS NTAPI MiniportSend(_In_ NDIS_HANDLE MiniportAdapterContext, _In_ PNDIS_PACKET Packet, _In_ UINT Flags)
static DECLSPEC_NOINLINE ULONG NvNetQueryTcpIpHeaders(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_PACKET Packet)
static NDIS_STATUS NvNetSendPacketLargeSend(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_PACKET Packet, _In_ ULONG TotalLength)
static NDIS_STATUS NvNetSendPacket(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_PACKET Packet, _In_ ULONG TotalLength)
static ULONG NvNetGetChecksumInfo(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_PACKET Packet)
static BOOLEAN NvNetCopyPacket(_In_ PNVNET_ADAPTER Adapter, _In_ PNDIS_PACKET Packet, _In_ PNVNET_TX_BUFFER Buffer)
struct IPv4_HEADER * PIPv4_HEADER
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define NdisGetNextBuffer(CurrentBuffer, NextBuffer)
#define NDIS_STATUS_PENDING
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
#define NdisQueryPacketLength(_Packet, _TotalPacketLength)
#define NdisDprReleaseSpinLock(_SpinLock)
#define NDIS_PROTOCOL_ID_TCP_IP
#define NDIS_PER_PACKET_INFO_FROM_PACKET(Packet, InfoType)
#define NDIS_STATUS_FAILURE
_In_ UINT _In_ UINT _In_ PNDIS_PACKET _In_ UINT _Out_ PUINT BytesCopied
#define NdisQueryBufferSafe(_Buffer, _VirtualAddress, _Length, _Priority)
#define NDIS_STATUS_SUCCESS
#define NdisGetFirstBufferFromPacketSafe(_Packet, _FirstBuffer, _FirstBufferVA, _FirstBufferLength, _TotalBufferLength, _Priority)
#define NdisGetPhysicalAddressLow(PhysicalAddress)
@ TcpIpChecksumPacketInfo
@ ScatterGatherListPacketInfo
#define NdisDprAcquireSpinLock(_SpinLock)
#define NdisMoveMemory(Destination, Source, Length)
#define NDIS_GET_PACKET_PROTOCOL_TYPE(_Packet)
#define NDIS_STATUS_RESOURCES
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
#define DECLSPEC_NOINLINE
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define NV_TX2_CHECKSUM_L3
#define NV_TX_LIMIT_COUNT
#define DEV_HAS_LARGEDESC
#define NV_TX2_CHECKSUM_L4
#define NV_TX2_LASTPACKET
#define NV_MAXIMUM_SG_SIZE
#define NVREG_TXRXCTL_KICK
FORCEINLINE NVNET_TBD NV_NEXT_TBD_64(_In_ PNVNET_ADAPTER Adapter, _In_ NVNET_TBD Tbd)
#define NV_TCB_CHECKSUM_TCP
#define NV_TCB_CHECKSUM_IP
NVNET_TRANSMIT_PACKET NvNetTransmitPacket64
FORCEINLINE NVNET_TBD NV_NEXT_TBD_32(_In_ PNVNET_ADAPTER Adapter, _In_ NVNET_TBD Tbd)
#define NVNET_MAXIMUM_LSO_FRAME_SIZE
#define NVNET_FRAGMENTATION_THRESHOLD
struct _NVNET_TX_BUFFER * PNVNET_TX_BUFFER
#define NV_SEND_LARGE_SEND
struct _NVNET_ADAPTER * PNVNET_ADAPTER
#define NV_TCB_LARGE_SEND
#define NVNET_MAXIMUM_FRAME_SIZE_JUMBO
NVNET_TRANSMIT_PACKET NvNetTransmitPacket32
#define NV_SEND_ERRATA_PRESENT
#define NV_IMPLICIT_ENTRIES(Length)
FORCEINLINE VOID NV_WRITE(_In_ PNVNET_ADAPTER Adapter, _In_ NVNET_REGISTER Register, _In_ ULONG Value)
#define NVNET_TRANSMIT_DESCRIPTORS
#define NV_TCB_CHECKSUM_UDP
FORCEINLINE PNVNET_TCB NV_NEXT_TCB(_In_ PNVNET_ADAPTER Adapter, _In_ PNVNET_TCB Tcb)
struct _NDIS_TCP_IP_CHECKSUM_PACKET_INFO::@2130::@2132 Transmit
NDIS_PHYSICAL_ADDRESS PhysicalAddress
#define TCP_HEADER_LENGTH(pHeader)
#define IP_HEADER_LENGTH(pHeader)
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION _In_ PSCATTER_GATHER_LIST SgList
_Must_inspect_result_ _In_ ULONG Flags
struct _SCATTER_GATHER_LIST SCATTER_GATHER_LIST
struct _SCATTER_GATHER_LIST * PSCATTER_GATHER_LIST
FORCEINLINE VOID PushEntryList(_Inout_ PSINGLE_LIST_ENTRY ListHead, _Inout_ __drv_aliasesMem PSINGLE_LIST_ENTRY Entry)
FORCEINLINE PSINGLE_LIST_ENTRY PopEntryList(_Inout_ PSINGLE_LIST_ENTRY ListHead)