Flow Control
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 228
Else If (Auto_Neg_Advertise_Reg.Asymetric_Pause == ENABLED) Then
{
If (Auto_Neg_Link_Partner_Ability_Reg.Pause_Capable == ENABLED) Then
{
Driver_Flow_Capability = FLOW_CONTROL_TRANSMIT_PAUSE
}
Else
{
Driver_Flow_Capability = NONE
}
}
} //Link Status is up
} // Auto negotiation was not disabled && Speed Duplex was not forced
Else
{
// The use forced speed/duplex, so the partner's flow control capabilities are
// indeterminate – software cannot use the Link_Partner_Abitity
// registers.
Driver_Flow_Capability= DISABLED
}
} //The current link is full-duplex at 10/100/1000 wire speeds
Else
{
//Full-Duplex mode is not available or forced half-duplex
//Flow control is not available in half-duplex mode.
Driver_Flow_Capability = NONE
}
//Configure MAC Flow Control Registers
if ( Driver_Flow_Capability & FLOW_CONTROL_RECEIVE_PAUSE )
{
Receive_MAC_Mode_Control_Register.Enable_Flow_Control = ENABLED
}
if ( Driver_Flow_Capability & FLOW_CONTROL_TRANSMIT_PAUSE ) Then
{
Transmit_MAC_Mode_Control_Register.Enable_Flow_Control = ENABLED
}
} // Link is up on the local PHY