131 if (!
MiiWrite(Adapter, Adapter->PhyAddress, Sequence[
i].Register, Sequence[
i].Data))
201 if (DisableCrossoverDetection)
361 ULONG PhyInterface, MiiRegister, MiiStatus, MiiControl;
463 ULONG MiiControl1000;
571 for (Phy = 1; Phy <= 32; ++Phy)
573 ULONG PhyAddress = Phy & 0x1F;
574 ULONG PhyIdLow, PhyIdHigh;
578 if (PhyIdLow == 0xFFFF)
583 if (PhyIdHigh == 0xFFFF)
586 Adapter->PhyAddress = PhyAddress;
630 for (
i = 10;
i > 0; --
i)
645 for (
i = 0;
i < 2; ++
i)
687 ULONG i, DataReady, DataReady2;
698 for (
i = 100000;
i > 0; --
i)
728 ULONG MiiStatus, AdvLpa;
731 *MiiLinkPartnerAbility = 0;
776 ULONG MiiControl1000, MiiStatus1000;
789 AdvLpa = (*MiiAdvertise) & (*MiiLinkPartnerAbility);
826 ULONG PhyRegister, TxDeferral, PauseFlags, MiiExpansion;
832 RestartTransmitter =
TRUE;
837 RestartReceiver =
TRUE;
859 if (!Adapter->FullDuplex)
923 if (Adapter->FullDuplex)
974 PauseFlags = Adapter->PauseFlags;
979 if (RestartTransmitter)
993 ULONG MiiAdvertise, MiiLinkPartnerAbility, LinkSpeed;
1000 &MiiLinkPartnerAbility,
1003 if (Adapter->FullDuplex == FullDuplex && Adapter->LinkSpeed == LinkSpeed)
1010 Adapter->FullDuplex ?
"full" :
"half",
1012 FullDuplex ?
"full" :
"half"));
1014 Adapter->FullDuplex = FullDuplex;
1015 Adapter->LinkSpeed = LinkSpeed;
1064 RestorePhyState =
TRUE;
1081 if (UnitVersion > 0)
1101 PhyInitialized =
TRUE;
1116 if (!PhyInitialized)
1138 if (RestorePhyState)
#define NVREG_SLOTTIME_10_100_FULL
#define MII_LP_PAUSE_ASYM
#define MII_MASTER_SLAVE_STATUS
#define NVREG_TX_WM_DESC2_3_DEFAULT
#define NVREG_XMITCTL_MGMT_SEMA_FREE
#define MII_EXP_LP_AUTONEG
#define PHY_REALTEK_INIT_REG5
#define PHY_REALTEK_INIT7
#define NV_PAUSEFRAME_TX_REQ
#define PHY_REALTEK_INIT_REG1
#define NVREG_TX_DEFERRAL_RGMII_STRETCH_10
#define NVREG_LINKSPEED_FORCE
#define NVREG_LINKSPEED_100
#define NV_UNIT_SEMAPHORE_ACQUIRED
#define DEV_HAS_POWER_CNTRL
VOID NvNetStartReceiver(_In_ PNVNET_ADAPTER Adapter)
#define PHY_VITESSE_INIT_REG2
#define PHY_VITESSE_INIT10
VOID NvNetUpdatePauseFrame(_Inout_ PNVNET_ADAPTER Adapter, _In_ ULONG PauseFlags)
#define NVREG_TX_WM_DESC2_3_1000
VOID EXPORT NdisDprReleaseSpinLock(IN PNDIS_SPIN_LOCK SpinLock)
static VOID NvNetSetSpeedAndDuplex(_In_ PNVNET_ADAPTER Adapter, _In_ ULONG MiiAdvertise, _In_ ULONG MiiLinkPartnerAbility)
NDIS_STATUS NvNetPhyInit(_In_ PNVNET_ADAPTER Adapter)
#define NVREG_MIISTAT_MASK_ALL
#define NVREG_TX_DEFERRAL_MII_STRETCH
#define MII_ADV_PAUSE_SYM
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
#define MII_AUTONEG_EXPANSION
#define PHY_CICADA_INIT_REG1
#define NV_FORCE_SPEED_AND_DUPLEX
#define NVREG_XMITCTL_START
#define NVREG_XMITCTL_DATA_READY
#define PHY_REALTEK_INIT_REG2
static BOOLEAN PhyInitRealtek8211b(_In_ PNVNET_ADAPTER Adapter)
#define PHY_VITESSE_INIT5
VOID NvNetStartTransmitter(_In_ PNVNET_ADAPTER Adapter)
#define NVREG_POWERSTATE2_POWERUP_MASK
static NDIS_STATUS PhyInit(_In_ PNVNET_ADAPTER Adapter)
#define PHY_REALTEK_INIT6
#define PHY_CICADA_INIT_REG3
#define PHY_REALTEK_INIT1
#define MII_AUTONEG_LINK_PARTNER
#define NVREG_MIISTAT_ERROR
#define NVREG_TX_DEFERRAL_RGMII_STRETCH_100
#define MII_CR_AUTONEG_RESTART
#define NVREG_MGMTUNITGETVERSION
#define PHY_VITESSE_INIT7
VOID NvNetStopReceiver(_In_ PNVNET_ADAPTER Adapter)
#define MII_MS_CR_1000T_HD
#define DEV_HAS_COLLISION_FIX
static BOOLEAN PhyInitVitesseSemiconductor(_In_ PNVNET_ADAPTER Adapter)
#define MII_MS_CR_1000T_FD
#define NVREG_ADAPTCTL_RUNNING
#define NVREG_XMITCTL_HOST_SEMA_MASK
VOID EXPORT NdisDprAcquireSpinLock(IN PNDIS_SPIN_LOCK SpinLock)
#define NV_PAUSEFRAME_RX_ENABLE
#define NVREG_MGMTUNITCONTROL_INUSE
BOOLEAN MiiRead(_In_ PNVNET_ADAPTER Adapter, _In_ ULONG PhyAddress, _In_ ULONG RegAddress, _Out_ PULONG Data)
#define NVREG_MISC1_FORCE
#define NVREG_MIISTAT_MASK_RW
static BOOLEAN PhyInitRealtek8201(_In_ PNVNET_ADAPTER Adapter, _In_ BOOLEAN DisableCrossoverDetection)
#define PHY_VITESSE_INIT9
#define PHY_REALTEK_INIT_REG7
#define PHY_REALTEK_INIT_REG6
#define NV_PAUSEFRAME_AUTONEG
#define NVREG_SLOTTIME_1000_FULL
#define PHY_REALTEK_INIT_REG3
FORCEINLINE VOID NV_WRITE(_In_ PNVNET_ADAPTER Adapter, _In_ NVNET_REGISTER Register, _In_ ULONG Value)
static BOOLEAN SidebandUnitGetVersion(_In_ PNVNET_ADAPTER Adapter, _Out_ PULONG Version)
#define NVREG_POWERSTATE2_POWERUP_REV_A3
#define MII_SR_AUTONEG_COMPLETE
#define PHY_VITESSE_INIT4
#define NVREG_TX_DEFERRAL_RGMII_1000
#define PHY_REALTEK_INIT4
#define PHY_REALTEK_INIT3
static BOOLEAN PhyInitRealtek8211c(_In_ PNVNET_ADAPTER Adapter)
#define PHY_VITESSE_INIT8
#define PHY_REV_REALTEK_8211B
#define PHY_REALTEK_INIT11
#define NVREG_XMITCTL_MGMT_ST
VOID NvNetStopTransmitter(_In_ PNVNET_ADAPTER Adapter)
#define PHY_VITESSE_INIT6
#define NV_MIIPHY_DELAYMAX
#define MII_SR_LINK_STATUS
#define PHY_REALTEK_REVISION
#define DEV_HAS_MGMT_UNIT
#define NV_USER_SPEED_100
#define PHY_REV_REALTEK_8211C
#define DEV_NEED_LOW_POWER_FIX
IN PVOID IN PVOID IN USHORT Version
#define PHY_VITESSE_INIT1
BOOLEAN NvNetUpdateLinkSpeed(_In_ PNVNET_ADAPTER Adapter)
#define NDIS_STATUS_SUCCESS
#define PHY_VITESSE_INIT3
#define NVREG_XMITCTL_SYNC_MASK
#define NVREG_POWERSTATE2_PHY_RESET
#define NVREG_TX_DEFERRAL_DEFAULT
#define NVREG_MIICTL_WRITE
static BOOLEAN SidebandUnitAcquireSemaphore(_Inout_ PNVNET_ADAPTER Adapter)
#define PHY_CICADA_INIT_REG2
#define PHY_MARVELL_E3016_INITMASK
#define NV_PAUSEFRAME_TX_ENABLE
static BOOLEAN FindPhyDevice(_Inout_ PNVNET_ADAPTER Adapter)
VOID SidebandUnitReleaseSemaphore(_In_ PNVNET_ADAPTER Adapter)
#define PHY_REALTEK_INIT9
#define PHY_VITESSE_INIT_REG4
#define PHY_VITESSE_INIT_REG3
static BOOLEAN PhyReset(_In_ PNVNET_ADAPTER Adapter, _In_ ULONG ControlSetup)
#define DEV_NEED_PHY_INIT_FIX
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 NdisMSleep(IN ULONG MicrosecondsToSleep)
#define NVREG_RCVCTL_START
#define PHY_MODEL_REALTEK_8211
#define NVREG_XMITCTL_MGMT_SEMA_MASK
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
#define PHY_MARVELL_INIT_REG1
#define NVREG_XMITCTL_HOST_SEMA_ACQ
#define NVREG_MIICTL_ADDRSHIFT
#define PHYID2_MODEL_MASK
#define PHY_REALTEK_INIT2
#define PHY_REALTEK_INIT_REG4
#define NDIS_DbgPrint(_t_, _x_)
#define NVREG_LINKSPEED_1000
#define NVREG_MIICTL_INUSE
#define MII_AUTONEG_ADVERTISE
#define MII_ADV_PAUSE_ASYM
static BOOLEAN PhyInitCicadaSemiconductor(_In_ PNVNET_ADAPTER Adapter, _In_ ULONG PhyInterface)
#define NVREG_XMITCTL_SYNC_PHY_INIT
#define NVREG_MGMTUNITVERSION
#define PHY_VITESSE_INIT_REG1
#define PHY_MODEL_REALTEK_8201
#define PHY_VITESSE_INIT2
#define NVREG_XMITCTL_DATA_START
#define DEV_HAS_LARGEDESC
#define PHY_REALTEK_INIT10
#define PHY_REALTEK_INIT_MSK1
#define NdisStallExecution
#define PHY_VITESSE_INIT_MSK2
#define NVREG_LINKSPEED_10
#define NVREG_XMITCTL_DATA_ERROR
#define NV_PAUSEFRAME_RX_REQ
#define NVREG_TX_WM_DESC1_DEFAULT
static BOOLEAN MiiGetSpeedAndDuplex(_In_ PNVNET_ADAPTER Adapter, _Out_ PULONG MiiAdvertise, _Out_ PULONG MiiLinkPartnerAbility, _Out_ PULONG LinkSpeed, _Out_ PBOOLEAN FullDuplex)
#define MII_MASTER_SLAVE_CONTROL
FORCEINLINE ULONG NV_READ(_In_ PNVNET_ADAPTER Adapter, _In_ NVNET_REGISTER Register)
#define NDIS_STATUS_FAILURE
#define PHY_REALTEK_INIT5
#define PHY_VITESSE_INIT_MSK1
BOOLEAN MiiWrite(_In_ PNVNET_ADAPTER Adapter, _In_ ULONG PhyAddress, _In_ ULONG RegAddress, _In_ ULONG Data)
#define PHY_MODEL_MARVELL_E3016
#define NV_FORCE_FULL_DUPLEX
#define MII_MS_SR_1000T_FD