98 DPRINT(
"receive interrupt\n");
108 DPRINT(
"no more receive descriptors to process\n");
139 IndicatedData =
TRUE;
160 DPRINT(
"transmit interrupt\n");
167 DPRINT(
"buffer %d flags %x flags2 %x\n",
173 DPRINT(
"non-TXed buffer\n");
212 DPRINT(
"UNHANDLED INTERRUPT CSR0 0x%x\n",
Data);
249 DPRINT1(
"NdisReadPciSlotInformation failed\n");
256 DPRINT1(
"card in slot isn't our: 0x%x\n", 0, buf32);
270 DPRINT1(
"NdisReadPciSlotInformation failed\n");
276 DPRINT1(
"No base i/o address set\n");
282 DPRINT(
"detected io address 0x%x\n", buf32);
283 Adapter->IoBaseAddress = buf32;
290 DPRINT1(
"NdisReadPciSlotInformation failed\n");
294 DPRINT(
"interrupt: 0x%x\n", buf8);
295 Adapter->InterruptVector = buf8;
371 while (BufferCount != 0)
380 DPRINT1(
"insufficient resources\n");
398 DPRINT1(
"Backing off buffer count by %d buffers due to allocation failure\n", (BufferCount >> 1));
399 BufferCount = BufferCount >> 1;
420 DPRINT1(
"Backing off buffer count by %d buffers due to allocation failure\n", (BufferCount >> 1));
421 BufferCount = BufferCount >> 1;
442 DPRINT1(
"Backing off buffer count by %d buffers due to allocation failure\n", (BufferCount >> 1));
443 BufferCount = BufferCount >> 1;
464 DPRINT1(
"Backing off buffer count by %d buffers due to allocation failure\n", (BufferCount >> 1));
465 BufferCount = BufferCount >> 1;
485 DPRINT1(
"Failed to allocate adapter buffers\n");
494 for(
i = 0;
i < BufferCount;
i++)
501 DPRINT(
"transmit ring initialized\n");
505 for(
i = 0;
i < BufferCount;
i++)
512 DPRINT(
"receive ring initialized\n");
531 for(
i = 0;
i < 6;
i++)
533 DPRINT(
"MAC address: %02x-%02x-%02x-%02x-%02x-%02x\n",
630 DPRINT(
"MediaState: %d\n", MediaState);
735 DPRINT(
"programmed with init block\n");
801 for(
i = 0;
i < 6;
i++)
845 DPRINT(
"Stopping the chip\n");
886 UINT *RegNetworkAddress = 0;
887 UINT RegNetworkAddressLength = 0;
899 DPRINT1(
"unsupported media\n");
911 DPRINT1(
"Insufficient resources\n");
929 DPRINT1(
"MiQueryCard failed\n");
952 MapRegistersAllocated =
TRUE;
963 InterruptRegistered =
TRUE;
985 DPRINT(
"NdisReadNetworkAddress returned successfully, address %x:%x:%x:%x:%x:%x\n",
986 RegNetworkAddress[0], RegNetworkAddress[1], RegNetworkAddress[2], RegNetworkAddress[3],
987 RegNetworkAddress[4], RegNetworkAddress[5]);
989 for(
i = 0;
i < 6;
i++)
990 Adapter->InitializationBlockVirt->PADR[
i] = RegNetworkAddress[
i];
996 DPRINT(
"Interrupt registered successfully\n");
1009 DPRINT(
"Error; freeing stuff\n");
1013 if(MapRegistersAllocated)
1016 if(Adapter->PortOffset)
1019 if(InterruptRegistered)
1028 Adapter->MiniportAdapterHandle,
1039 if(!MiTestCard(Adapter))
1081 DPRINT(
"not our interrupt.\n");
1082 *InterruptRecognized =
FALSE;
1083 *QueueMiniportHandleInterrupt =
FALSE;
1087 DPRINT(
"detected our interrupt\n");
1093 *InterruptRecognized =
TRUE;
1094 *QueueMiniportHandleInterrupt =
TRUE;
1122 *AddressingReset =
FALSE;
1179 DPRINT1(
"No free space in circular buffer\n");
1189 DPRINT(
"TotalPacketLength: %x\n", TotalPacketLength);
1195 DPRINT(
"Buffer: %x Length: %x\n", SourceBuffer, SourceLength);
1199 SourceBuffer, SourceLength);
1224 Desc->
BCNT = 0xf000 | -(
INT)TotalPacketLength;
1348 Characteristics.MajorNdisVersion = NDIS_MINIPORT_MAJOR_VERSION;
1349 Characteristics.MinorNdisVersion = NDIS_MINIPORT_MINOR_VERSION;
#define LOG_NUMBER_OF_BUFFERS
static VOID MiPrepareInitializationBlock(PADAPTER Adapter)
#define NdisInterruptLevelSensitive
struct _TRANSMIT_DESCRIPTOR TRANSMIT_DESCRIPTOR
static VOID NTAPI MiniportISR(OUT PBOOLEAN InterruptRecognized, OUT PBOOLEAN QueueMiniportHandleInterrupt, IN NDIS_HANDLE MiniportAdapterContext)
_In_ ULONG _In_ ULONG _In_ ULONG Length
VOID EXPORT NdisAllocateSpinLock(IN PNDIS_SPIN_LOCK SpinLock)
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
#define MEDIA_DETECTION_INTERVAL
VOID EXPORT NdisMAllocateSharedMemory(IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, OUT PVOID *VirtualAddress, OUT PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS OpenErrorStatus
_In_ NDIS_HANDLE _In_ PNDIS_PACKET Packet
ULONG ReceiveDescriptorRingLength
NDIS_STATUS EXPORT NdisAllocateMemoryWithTag(OUT PVOID *VirtualAddress, IN UINT Length, IN ULONG Tag)
static ULONG NTAPI MiEthernetCrc(UCHAR *Address)
PTRANSMIT_DESCRIPTOR TransmitDescriptorRingVirt
IN BOOLEAN OUT PSTR Buffer
VOID EXPORT NdisMDeregisterAdapterShutdownHandler(IN NDIS_HANDLE MiniportHandle)
PHYSICAL_ADDRESS TransmitDescriptorRingPhys
VOID EXPORT NdisDprReleaseSpinLock(IN PNDIS_SPIN_LOCK SpinLock)
VOID EXPORT NdisOpenConfiguration(OUT PNDIS_STATUS Status, OUT PNDIS_HANDLE ConfigurationHandle, IN NDIS_HANDLE WrapperConfigurationContext)
#define ASSERT_IRQL_EQUAL(x)
NDIS_STATUS EXPORT NdisMRegisterIoPortRange(OUT PVOID *PortOffset, IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InitialPort, IN UINT NumberOfPorts)
#define NdisMEthIndicateReceiveComplete(MiniportAdapterHandle)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
enum _NDIS_MEDIA_STATE NDIS_MEDIA_STATE
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
_In_ NDIS_HANDLE MiniportAdapterHandle
ULONG TransmitBufferLength
_In_ PVOID _In_ PVOID _In_ PVOID SystemSpecific3
static BOOLEAN NTAPI MiSyncStartTransmit(IN PVOID SynchronizeContext)
PRECEIVE_DESCRIPTOR ReceiveDescriptorRingVirt
_Out_ _At_ TimerCancelled PBOOLEAN TimerCancelled
PCHAR ReceiveBufferPtrVirt
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT SelectedMediumIndex
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT _In_ UINT MediumArraySize
#define NDIS_STATUS_UNSUPPORTED_MEDIA
struct _ADAPTER * PADAPTER
ULONG CurrentTransmitEndIndex
#define NdisRawReadPortUshort(Port, Data)
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _In_ NDIS_HANDLE WrapperConfigurationContext
static BOOLEAN NTAPI MiSyncMediaDetection(IN PVOID SynchronizeContext)
NDIS_STATUS NTAPI MiSetMulticast(PADAPTER Adapter, UCHAR *Addresses, UINT AddressCount)
#define NdisGetNextBuffer(CurrentBuffer, NextBuffer)
NDIS_MINIPORT_TIMER MediaDetectionTimer
_In_ PVOID FunctionContext
VOID EXPORT NdisMFreeSharedMemory(IN NDIS_HANDLE MiniportAdapterHandle, IN ULONG Length, IN BOOLEAN Cached, IN PVOID VirtualAddress, IN NDIS_PHYSICAL_ADDRESS PhysicalAddress)
VOID EXPORT NdisDprAcquireSpinLock(IN PNDIS_SPIN_LOCK SpinLock)
struct _RECEIVE_DESCRIPTOR RECEIVE_DESCRIPTOR
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
VOID EXPORT NdisMInitializeTimer(IN OUT PNDIS_MINIPORT_TIMER Timer, IN NDIS_HANDLE MiniportAdapterHandle, IN PNDIS_TIMER_FUNCTION TimerFunction, IN PVOID FunctionContext)
#define NdisRawWritePortUshort(Port, Data)
static NDIS_STATUS MiAllocateSharedMemory(PADAPTER Adapter)
static NDIS_STATUS NTAPI MiniportInitialize(OUT PNDIS_STATUS OpenErrorStatus, OUT PUINT SelectedMediumIndex, IN PNDIS_MEDIUM MediumArray, IN UINT MediumArraySize, IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE WrapperConfigurationContext)
PHYSICAL_ADDRESS ReceiveBufferPtrPhys
PHYSICAL_ADDRESS TransmitBufferPtrPhys
VOID EXPORT NdisFreeSpinLock(IN PNDIS_SPIN_LOCK SpinLock)
VOID EXPORT NdisMFreeMapRegisters(IN NDIS_HANDLE MiniportAdapterHandle)
NDIS_STATUS EXPORT NdisMAllocateMapRegisters(IN NDIS_HANDLE MiniportAdapterHandle, IN UINT DmaChannel, IN NDIS_DMA_SIZE DmaSize, IN ULONG BaseMapRegistersNeeded, IN ULONG MaximumBufferSize)
ULONG InitializationBlockLength
NDIS_MINIPORT_INTERRUPT InterruptObject
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
VOID EXPORT NdisMIndicateStatusComplete(IN NDIS_HANDLE MiniportAdapterHandle)
VOID EXPORT NdisCloseConfiguration(IN NDIS_HANDLE ConfigurationHandle)
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
static BOOLEAN NTAPI MiSyncStop(IN PVOID SynchronizeContext)
NDIS_STATUS EXPORT NdisMRegisterInterrupt(OUT PNDIS_MINIPORT_INTERRUPT Interrupt, IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InterruptVector, IN UINT InterruptLevel, IN BOOLEAN RequestIsr, IN BOOLEAN SharedInterrupt, IN NDIS_INTERRUPT_MODE InterruptMode)
#define NDIS_STATUS_MEDIA_CONNECT
VOID EXPORT NdisTerminateWrapper(IN NDIS_HANDLE NdisWrapperHandle, IN PVOID SystemSpecific)
_Must_inspect_result_ _In_ ULONG Flags
#define NDIS_ATTRIBUTE_BUS_MASTER
_In_ WDFCOLLECTION _In_ ULONG Index
BOOLEAN NTAPI MiGetMediaDuplex(PADAPTER Adapter)
#define NdisMEthIndicateReceive(MiniportAdapterHandle, MiniportReceiveContext, HeaderBuffer, HeaderBufferSize, LookaheadBuffer, LookaheadBufferSize, PacketSize)
static VOID MiFreeSharedMemory(PADAPTER Adapter)
ULONG XmtMoreThanOneRetry
static NDIS_STATUS MiQueryCard(IN PADAPTER Adapter)
#define NDIS_STATUS_ADAPTER_NOT_FOUND
NDIS_MEDIA_STATE NTAPI MiGetMediaState(PADAPTER Adapter)
ULONG CurrentTransmitStartIndex
NDIS_HANDLE MiniportAdapterHandle
#define NDIS_STATUS_SUCCESS
static VOID NTAPI MiniportHalt(IN NDIS_HANDLE MiniportAdapterContext)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE ConfigurationHandle
VOID EXPORT NdisReadNetworkAddress(OUT PNDIS_STATUS Status, OUT PVOID *NetworkAddress, OUT PUINT NetworkAddressLength, IN NDIS_HANDLE ConfigurationHandle)
ULONG TransmitDescriptorRingLength
static VOID NTAPI MiniportMediaDetectionTimer(IN PVOID SystemSpecific1, IN PVOID FunctionContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3)
NTSTATUS NTAPI DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
enum _NDIS_MEDIUM * PNDIS_MEDIUM
_In_ PVOID _In_ PVOID SystemSpecific2
ULONG CurrentReceiveDescriptorIndex
static NDIS_STATUS NTAPI MiniportSend(IN NDIS_HANDLE MiniportAdapterContext, IN PNDIS_PACKET Packet, IN UINT Flags)
#define NUMBER_OF_BUFFERS
ULONG ReceiveBufferLength
PHYSICAL_ADDRESS ReceiveDescriptorRingPhys
struct _INITIALIZATION_BLOCK INITIALIZATION_BLOCK
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
NDIS_STATUS NTAPI MiniportSetInformation(IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesRead, OUT PULONG BytesNeeded)
static VOID NTAPI MiniportHandleInterrupt(IN NDIS_HANDLE MiniportAdapterContext)
#define RESET_IN_PROGRESS
static VOID MiInitChip(PADAPTER Adapter)
_In_ PKSYNCHRONIZE_ROUTINE _In_opt_ __drv_aliasesMem PVOID SynchronizeContext
ULONG XmtBufferUnderflows
ULONG EXPORT NdisReadPciSlotInformation(IN NDIS_HANDLE NdisAdapterHandle, IN ULONG SlotNumber, IN ULONG Offset, IN PVOID Buffer, IN ULONG Length)
BOOLEAN EXPORT NdisMSynchronizeWithInterrupt(IN PNDIS_MINIPORT_INTERRUPT Interrupt, IN PVOID SynchronizeFunction, IN PVOID SynchronizeContext)
PINITIALIZATION_BLOCK InitializationBlockVirt
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
VOID EXPORT NdisMSendResourcesAvailable(IN NDIS_HANDLE MiniportAdapterHandle)
ULONG XmtExcessiveDeferrals
VOID EXPORT NdisMDeregisterIoPortRange(IN NDIS_HANDLE MiniportAdapterHandle, IN UINT InitialPort, IN UINT NumberOfPorts, IN PVOID PortOffset)
static NDIS_STATUS NTAPI MiniportReset(OUT PBOOLEAN AddressingReset, IN NDIS_HANDLE MiniportAdapterContext)
UINT NTAPI MiGetMediaSpeed(PADAPTER Adapter)
static __inline VOID NdisQueryPacket(IN PNDIS_PACKET Packet, OUT PUINT PhysicalBufferCount OPTIONAL, OUT PUINT BufferCount OPTIONAL, OUT PNDIS_BUFFER *FirstBuffer OPTIONAL, OUT PUINT TotalPacketLength OPTIONAL)
PHYSICAL_ADDRESS InitializationBlockPhys
#define NdisZeroMemory(Destination, Length)
static LARGE_INTEGER Counter
VOID EXPORT NdisQueryBuffer(IN PNDIS_BUFFER Buffer, OUT PVOID *VirtualAddress OPTIONAL, OUT PUINT Length)
struct tagContext Context
#define NDIS_STATUS_RESOURCES
VOID EXPORT NdisMRegisterAdapterShutdownHandler(IN NDIS_HANDLE MiniportHandle, IN PVOID ShutdownContext, IN ADAPTER_SHUTDOWN_HANDLER ShutdownHandler)
#define RtlZeroMemory(Destination, Length)
#define NdisMInitializeWrapper(NdisWrapperHandle, SystemSpecific1, SystemSpecific2, SystemSpecific3)
VOID EXPORT NdisMSetPeriodicTimer(IN PNDIS_MINIPORT_TIMER Timer, IN UINT MillisecondsPeriod)
#define RtlCopyMemory(Destination, Source, Length)
VOID EXPORT NdisMCancelTimer(IN PNDIS_MINIPORT_TIMER Timer, OUT PBOOLEAN TimerCancelled)
#define NdisStallExecution
#define NdisRawReadPortUchar(Port, Data)
NDIS_STATUS EXPORT NdisMRegisterMiniport(IN NDIS_HANDLE NdisWrapperHandle, IN PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics, IN UINT CharacteristicsLength)
ULONG EXPORT NdisWritePciSlotInformation(IN NDIS_HANDLE NdisAdapterHandle, IN ULONG SlotNumber, IN ULONG Offset, IN PVOID Buffer, IN ULONG Length)
VOID NTAPI MiniportShutdown(PVOID Context)
NDIS_MEDIA_STATE MediaState
VOID EXPORT NdisMDeregisterInterrupt(IN PNDIS_MINIPORT_INTERRUPT Interrupt)
PCHAR TransmitBufferPtrVirt
VOID EXPORT NdisMIndicateStatus(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_STATUS GeneralStatus, IN PVOID StatusBuffer, IN UINT StatusBufferSize)
#define NDIS_STATUS_MEDIA_DISCONNECT
#define NDIS_STATUS_FAILURE
VOID EXPORT NdisFreeMemory(IN PVOID VirtualAddress, IN UINT Length, IN UINT MemoryFlags)
VOID EXPORT NdisMSetAttributesEx(IN NDIS_HANDLE MiniportAdapterHandle, IN NDIS_HANDLE MiniportAdapterContext, IN UINT CheckForHangTimeInSeconds OPTIONAL, IN ULONG AttributeFlags, IN NDIS_INTERFACE_TYPE AdapterType)
NDIS_STATUS NTAPI MiniportQueryInformation(IN NDIS_HANDLE MiniportAdapterContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesWritten, OUT PULONG BytesNeeded)