Intel 82558 Manuale Utente

Pagina di 175
10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual  
135
 
 
Programming Recommendations
8
8.1
Adapter Initialization
The initialization code can be broadly split in the following code modules:
8255x initialization
PHY detection and initialization
NOS specific initialization
The sample source code provides specific coding examples. A list of programming issues to 
consider is listed in the following subsections by code module.
8.1.1
8255x Initialization
The device is internally fully reset on power up. However, the adapter and the 8255x are not 
fully reset after a warm reboot. Thus, it is recommended that the software issues a Port 
Software Reset command before accessing the device. 
Note:
All Port commands cause a complete internal reset requiring software to re-
initialize the device.
The interrupt mask bit (SCB Command word, Mask bit) is set to 0 after a complete reset, 
implying that interrupts are enabled. It is software responsibility to ensure that this bit is set to 
disable interrupts after a Port command is issued and before polled mode commands are 
executed.
If promiscuous mode is enabled, the following Configure command bits are also affected:
— SAVE BAD FRAMES. This feature should be enabled.
— DISCARD SHORT FRAMES. This feature should be disabled.
— PADDING. This feature should be disabled.
— STRIPPING. This feature should be disabled.
It is recommended that all non-transmit action commands are executed in polled mode. 
Software should maintain a single list of transmit CBs and modify a CB to a non-transmit CB 
when required. The 8255x supports dynamic CU Resume commands on non-transmit 
commands; therefore, no checks are required before such a command is issued.
8.1.2
PHY Detection and Initialization
It is recommended that drivers support the Intel
®
 82503 and 82555 and the National 
Semiconductor* DP83840 devices as well as the integrated PHY units of the 82558, 82559, 82550, 
and 82551. In addition, a vendor specific routine should be executed immediately after PHY 
detection to initialize specific registers in other third party PHYs (for example, the DP83840).