7.10
Unregistering the Card from the Hardware Management
Database . . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
7–5
7.11
Freeing Resources . .. . .. . .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
7–5
8
Implementing the Initialization Section
8.1
Implementing the el_init Routine . . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–1
8.1.1
Setting Up the el_init Routine . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–1
8.1.2
Determining Whether the PCMCIA Card Is Present . .. . .. .
8–2
8.1.3
Setting the IPL and Obtaining the Simple Lock .. . .. . .. . .. .
8–2
8.1.4
Calling the el_init_locked Routine . . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–3
8.1.5
Releasing the Simple Lock and Resetting the IPL . .. . .. . .. .
8–3
8.1.6
Returning the Status from the el_init_locked Routine . . .. .
8–3
8.2
Implementing the el_init_locked Routine .. . .. . .. . .. . . .. . .. . .. . .. .
8–3
8.2.1
Resetting the Transmitter and Receiver .. . .. . .. . . .. . .. . .. . .. .
8–4
8.2.2
Clearing Interrupts . .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–4
8.2.3
Starting the Device . .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–5
8.2.4
Ensuring That the 10Base2 Transceiver Is Off . . .. . .. . .. . .. .
8–5
8.2.5
Setting the LAN Media . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–6
8.2.6
Setting a LAN Attribute . . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–7
8.2.7
Selecting Memory Mapping . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–7
8.2.8
Resetting the Transmitter and Receiver Again . . .. . .. . .. . .. .
8–7
8.2.9
Setting the LAN Address . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–8
8.2.10
Processing Special Flags . . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–8
8.2.11
Setting the Debug Flag . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–9
8.2.12
Enabling TX and RX .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–9
8.2.13
Enabling Interrupts .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–10
8.2.14
Setting the Operational Window . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–10
8.2.15
Marking the Device as Running . . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
8–10
8.2.16
Starting the Autosense Kernel Thread . .. . .. . .. . . .. . .. . .. . .. .
8–11
8.2.17
Starting the Transmit of Pending Packets .. . .. . . .. . .. . .. . .. .
8–11
9
Implementing the Start Section
9.1
Implementing the el_start Routine .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
9–1
9.1.1
Setting the IPL and Obtaining the Simple Lock .. . .. . .. . .. .
9–1
9.1.2
Calling the el_start_locked Routine . . .. . .. . .. . .. . . .. . .. . .. . .. .
9–2
9.1.3
Releasing the Simple Lock and Resetting the IPL . .. . .. . .. .
9–2
9.2
Implementing the el_start_locked Routine . .. . .. . .. . . .. . .. . .. . .. .
9–3
9.2.1
Discarding All Transmits After the User Removes the
PCMCIA Card . .. . .. . .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
9–3
9.2.2
Removing Packets from the Pending Queue and Preparing
the Transmit Buffer . .. . . .. . .. . .. . .. . .. . . .. . .. . .. . .. . . .. . .. . .. . .. .
9–4
vi Contents