33 #ifdef WPP_EVENT_TRACING 34 #include "ParaNdis5-Oid.tmh" 37 #define OIDENTRY(oid, el, xfl, xokl, flags) \ 38 { oid, el, xfl, xokl, flags, NULL } 39 #define OIDENTRYPROC(oid, el, xfl, xokl, flags, setproc) \ 40 { oid, el, xfl, xokl, flags, setproc } 223 ULONG ulLinkSpeed = 0;
229 bFreeInfo = pInfo !=
NULL;
235 pInfo = &ulLinkSpeed;
236 ulSize =
sizeof(ulLinkSpeed);
264 IN ULONG InformationBufferLength,
280 InformationBufferLength));
293 (
"[%s] , id 0x%X(%s) (%X), written %d, needed %d",
314 IN ULONG InformationBufferLength,
330 InformationBufferLength));
351 (
"[%s] , id 0x%X(%s) (%X), read %d, needed %d",
__FUNCTION__,
391 pwi->
state = newState;
413 bInvalid |= pcs->
V4Receive.IpChecksum && !
f.fRxIPChecksum;
414 bInvalid |= pcs->
V4Receive.IpOptionsSupported && !
f.fRxIPOptions;
415 bInvalid |= pcs->
V4Receive.TcpChecksum && !
f.fRxTCPChecksum;
416 bInvalid |= pcs->
V4Receive.TcpOptionsSupported && !
f.fRxTCPOptions;
417 bInvalid |= pcs->
V4Receive.UdpChecksum && !
f.fRxUDPChecksum;
419 bInvalid |= pcs->
V4Transmit.IpChecksum && !
f.fTxIPChecksum;
420 bInvalid |= pcs->
V4Transmit.IpOptionsSupported && !
f.fTxIPOptions;
421 bInvalid |= pcs->
V4Transmit.TcpChecksum && !
f.fTxTCPChecksum;
422 bInvalid |= pcs->
V4Transmit.TcpOptionsSupported && !
f.fTxTCPOptions;
423 bInvalid |= pcs->
V4Transmit.UdpChecksum && !
f.fTxUDPChecksum;
456 ULONG TaskBufferSize = 0, tailOffset = 0;
461 TaskBufferSize =
sizeof(*pcs);
462 sName =
"TcpIpChecksumNdisTask";
466 TaskBufferSize =
sizeof(*pls);
467 sName =
"TcpLargeSendNdisTask";
471 TaskBufferSize =
sizeof(*pips);
472 sName =
"IpSecNdisTask";
482 else if (tailOffset > maxSize)
495 DPrintf(0, (
"Rx4: checksum IP(%d),TCP(%d),UDP(%d), options IP(%d),TCP(%d)",
499 DPrintf(0, (
"Tx4: checksum IP(%d),TCP(%d),UDP(%d), options IP(%d),TCP(%d)",
526 DPrintf(0, (
"options IP(%d),TCP(%d),MaxOffload %d, MinSegments %d",
553 pth->
Size ==
sizeof(*pth);
566 ULONG ulNoCapabilities = 0;
574 DPrintf(0, (
"[%s], header version %d, ip header at %d, fixed %d, first at %d",
__FUNCTION__,
592 DPrintf(0, (
"[%s], unexpected TO version %d at %d",
621 pcs->
V4Transmit.IpOptionsSupported = !!
f.fTxIPOptions;
622 pcs->
V4Transmit.TcpOptionsSupported = !!
f.fTxTCPOptions;
623 pcs->
V4Receive.IpChecksum = !!
f.fRxIPChecksum;
624 pcs->
V4Receive.IpOptionsSupported = !!
f.fRxIPOptions;
625 pcs->
V4Receive.TcpChecksum = !!
f.fRxTCPChecksum;
626 pcs->
V4Receive.TcpOptionsSupported = !!
f.fRxTCPOptions;
627 pcs->
V4Receive.UdpChecksum = !!
f.fRxUDPChecksum;
653 return f.fTxLso != 0;
702 pto->
Size =
sizeof(*pto);
771 #if 0 // only for logging after SET
VOID ParaNdis_PowerOff(PARANDIS_ADAPTER *pContext)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
NDIS_STATUS ParaNdis_OidQueryCommon(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
#define OID_GEN_PHYSICAL_MEDIUM
#define NDIS_STATUS_INVALID_OID
NDIS_STATUS ParaNdis_OnSetLookahead(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
VOID EXPORT NdisMSetInformationComplete(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS Status)
return STATUS_NOT_SUPPORTED
NDIS_STATUS ParaNdis_OnSetPower(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
static BOOLEAN IsValidPcs(PARANDIS_ADAPTER *pContext, NDIS_TASK_TCP_IP_CHECKSUM *pcs)
NDIS_STATUS ParaNdis_OidSetCopy(tOidDesc *pOid, PVOID pDest, ULONG ulSize)
#define OID_GEN_DIRECTED_BYTES_RCV
#define OID_GEN_VENDOR_DRIVER_VERSION
#define NDIS_STATUS_PENDING
struct _NDIS_TASK_TCP_LARGE_SEND NDIS_TASK_TCP_LARGE_SEND
#define NdisInitializeWorkItem(_WI_, _R_, _C_)
UINT InformationBufferLength
NDIS_STATUS ParaNdis_OnRemoveWakeupPattern(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
#define OID_GEN_RECEIVE_BUFFER_SPACE
PPARANDIS_ADAPTER pContext
#define OID_GEN_MEDIA_CAPABILITIES
#define OID_GEN_MAC_OPTIONS
#define DEBUG_ENTRY(level)
#define OID_GEN_RCV_ERROR
#define OID_GEN_DIRECTED_FRAMES_XMIT
#define OID_GEN_CURRENT_PACKET_FILTER
_Check_return_ _Out_ PULONG pulSize
#define OID_GEN_RCV_CRC_ERROR
#define OID_GEN_HARDWARE_STATUS
#define OID_PNP_CAPABILITIES
#define OID_802_11_CAPABILITY
#define OID_GEN_MEDIA_IN_USE
#define OID_GEN_GET_NETCARD_TIME
#define OID_GEN_MULTICAST_FRAMES_RCV
#define OID_802_3_XMIT_DEFERRED
OIDHANDLERPROC OidSetProc
static void NTAPI OnSetPowerWorkItem(NDIS_WORK_ITEM *pWorkItem, PVOID Context)
struct _NDIS_TASK_TCP_IP_CHECKSUM NDIS_TASK_TCP_IP_CHECKSUM
#define OID_GEN_MACHINE_NAME
static NDIS_STATUS ParseOffload(PARANDIS_ADAPTER *pContext, NDIS_TASK_OFFLOAD_HEADER *pth, ULONG size, BOOLEAN bApply, PCCHAR reason, BOOLEAN headerOnly)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
tOffloadSettingsFlags flags
#define NDIS_STATUS_NOT_SUPPORTED
#define OID_GEN_PROTOCOL_OPTIONS
static const tOidWhatToDo OidsDB[]
#define OID_GEN_BROADCAST_FRAMES_XMIT
#define OID_802_3_MAXIMUM_LIST_SIZE
static BOOLEAN GetLargeSendCapabilities(PARANDIS_ADAPTER *pContext, NDIS_TASK_TCP_LARGE_SEND *pls)
NDIS_DEVICE_POWER_STATE state
void ParaNdis_ResetOffloadSettings(PARANDIS_ADAPTER *pContext, tOffloadSettingsFlags *pDest, PULONG from)
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
#define OID_GEN_RESET_COUNTS
#define NDIS_STATUS_BUFFER_TOO_SHORT
#define OID_GEN_TRANSPORT_HEADER_OFFSET
#define OID_GEN_MEDIA_CONNECT_STATUS
#define PARANDIS_FORMAL_LINK_SPEED
#define OID_GEN_TRANSMIT_BUFFER_SPACE
PVOID ParaNdis_AllocateMemory(PARANDIS_ADAPTER *pContext, ULONG ulRequiredSize)
#define OID_GEN_MAXIMUM_LOOKAHEAD
#define DPrintf(Level, Fmt)
FxContextHeader * pHeader
static BOOLEAN GetTcpIpCheckSumCapabilities(PARANDIS_ADAPTER *pContext, NDIS_TASK_TCP_IP_CHECKSUM *pcs)
struct _NDIS_TASK_TCP_IP_CHECKSUM::@2061 V4Receive
NDIS_STATUS EXPORT NdisScheduleWorkItem(IN PNDIS_WORK_ITEM pWorkItem)
#define OID_GEN_TRANSMIT_QUEUE_LENGTH
#define NDIS_STATUS_INVALID_DATA
#define OID_GEN_GET_TIME_CAPS
#define OID_802_3_XMIT_HEARTBEAT_FAILURE
#define OID_GEN_SUPPORTED_LIST
struct _NDIS_TASK_TCP_IP_CHECKSUM::@2060 V4Transmit
static NDIS_STATUS ParaNdis_OidQuery(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
#define NDIS_TASK_TCP_LARGE_SEND_V0
#define OID_GEN_DEVICE_PROFILE
#define OID_GEN_VENDOR_ID
#define OID_GEN_VENDOR_DESCRIPTION
#define OID_GEN_MAXIMUM_FRAME_SIZE
#define OID_IP4_OFFLOAD_STATS
#define NDIS_STATUS_NOT_ACCEPTED
#define OID_PNP_ADD_WAKE_UP_PATTERN
#define OID_GEN_MAXIMUM_TOTAL_SIZE
NDIS_STATUS ParaNdis_OnSetVlanId(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
NDIS_HANDLE MiniportHandle
NDIS_STATUS NTAPI ParaNdis5_QueryOID(IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesWritten, OUT PULONG BytesNeeded)
NDIS_STATUS ParaNdis_OnOidSetMulticastList(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
#define OID_802_3_XMIT_UNDERRUN
#define OID_GEN_NETCARD_LOAD
#define RtlPointerToOffset(Base, Pointer)
#define OID_802_3_RCV_OVERRUN
#define OID_802_3_RCV_ERROR_ALIGNMENT
NDIS_STATUS ParaNdis_OnAddWakeupPattern(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
NDIS_STATUS NTAPI ParaNdis5_SetOID(IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesRead, OUT PULONG BytesNeeded)
NDIS_STATUS ParaNdis_OnSetPacketFilter(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
#define PARANDIS_MIN_LSO_SEGMENTS
#define OID_GEN_DIRECTED_FRAMES_RCV
#define NDIS_STATUS_SUCCESS
void ParaNdis_GetOidSupportRules(NDIS_OID oid, tOidWhatToDo *pRule, const tOidWhatToDo *Table)
#define OIDENTRY(oid, el, xfl, xokl, flags)
static WCHAR reason[MAX_STRING_RESOURCE_LEN]
NDIS_STATUS ParaNdis_OnEnableWakeup(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
#define NDIS_TASK_OFFLOAD_VERSION
NDIS_STATUS ParaNdis_PowerOn(PARANDIS_ADAPTER *pContext)
#define OID_802_3_XMIT_ONE_COLLISION
#define OID_GEN_BROADCAST_BYTES_RCV
static void FORCEINLINE ParaNdis_DebugHistory(PARANDIS_ADAPTER *pContext, eHistoryLogOperation op, PVOID pParam1, ULONG lParam2, ULONG lParam3, ULONG lParam4)
#define OID_GEN_MEDIA_SENSE_COUNTS
#define OID_GEN_BROADCAST_FRAMES_RCV
#define OID_GEN_LINK_SPEED
#define OID_TCP_TASK_OFFLOAD
#define OID_802_3_XMIT_MORE_COLLISIONS
#define OID_GEN_BROADCAST_BYTES_XMIT
#define OID_802_3_MULTICAST_LIST
#define OID_PNP_REMOVE_WAKE_UP_PATTERN
#define OID_GEN_MAXIMUM_SEND_PACKETS
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 OID_GEN_MULTICAST_FRAMES_XMIT
#define OID_GEN_MULTICAST_BYTES_XMIT
#define OID_GEN_MEDIA_SUPPORTED
static NDIS_TASK_OFFLOAD_HEADER ReservedHeader
static NDIS_STATUS OnOidSetNdis5Offload(PARANDIS_ADAPTER *pContext, tOidDesc *pOid)
NDIS_STATUS ParaNdis_OidQueryCopy(tOidDesc *pOid, PVOID pInfo, ULONG ulSize, BOOLEAN bFreeInfo)
#define OID_GEN_XMIT_ERROR
#define OID_802_3_MAC_OPTIONS
#define OID_GEN_TRANSMIT_BLOCK_SIZE
static FORCEINLINE BOOLEAN ValidateOffloadHeader(NDIS_TASK_OFFLOAD_HEADER *pth)
static BOOLEAN IsValidPls(PARANDIS_ADAPTER *pContext, NDIS_TASK_TCP_LARGE_SEND *pls)
#define OID_PNP_SET_POWER
#define OID_GEN_MULTICAST_BYTES_RCV
#define OID_GEN_RECEIVE_BLOCK_SIZE
#define NdisZeroMemory(Destination, Length)
static NDIS_STATUS ParseOffloadTask(PARANDIS_ADAPTER *pContext, BOOLEAN bApply, NDIS_TASK_OFFLOAD *pto, ULONG offset, ULONG maxSize)
#define OID_802_3_XMIT_MAX_COLLISIONS
static NDIS_STATUS CreateOffloadInfo5ForQuery(PARANDIS_ADAPTER *pContext, tOidDesc *pOid, PVOID *ppInfo, PULONG pulSize)
enum _NDIS_DEVICE_POWER_STATE NDIS_DEVICE_POWER_STATE
#define OID_PNP_QUERY_POWER
#define NDIS_STATUS_RESOURCES
#define OID_802_3_PERMANENT_ADDRESS
#define OID_802_3_CURRENT_ADDRESS
struct _NDIS_TASK_OFFLOAD_HEADER NDIS_TASK_OFFLOAD_HEADER
static NDIS_OID SupportedOids[]
#define OID_802_3_XMIT_LATE_COLLISIONS
#define OID_IP6_OFFLOAD_STATS
#define NdisMoveMemory(Destination, Source, Length)
#define OID_PNP_ENABLE_WAKE_UP
static SERVICE_STATUS status
#define OID_GEN_SUPPORTED_GUIDS
void ParaNdis_GetSupportedOid(PVOID *pOidsArray, PULONG pLength)
#define NDIS_STATUS_FAILURE
VOID EXPORT NdisFreeMemory(IN PVOID VirtualAddress, IN UINT Length, IN UINT MemoryFlags)
#define OID_GEN_CURRENT_LOOKAHEAD
#define OID_GEN_DRIVER_VERSION
#define OID_802_3_XMIT_TIMES_CRS_LOST
#define OID_GEN_DIRECTED_BYTES_XMIT
#define OIDENTRYPROC(oid, el, xfl, xokl, flags, setproc)
#define OID_GEN_INIT_TIME_MS
#define OID_GEN_RCV_NO_BUFFER
static NDIS_STATUS CreateOffloadInfo5Internal(PARANDIS_ADAPTER *pContext, PVOID *ppInfo, PULONG pulSize, PCCHAR reason, NDIS_TASK_OFFLOAD_HEADER *pHeader)