Changeset 7c34b28f in mainline for uspace/srv/hw/netif/dp8390/dp8390_module.c
- Timestamp:
- 2011-01-07T15:10:52Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 61bfc370
- Parents:
- 3d5e190 (diff), acc7ce4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/hw/netif/dp8390/dp8390_module.c
r3d5e190 r7c34b28f 41 41 #include <err.h> 42 42 #include <malloc.h> 43 #include <sysinfo.h> 43 44 #include <ipc/ipc.h> 44 45 #include <ipc/services.h> 46 #include <ipc/irc.h> 45 47 #include <net/modules.h> 46 48 #include <packet_client.h> … … 71 73 */ 72 74 #define IRQ_GET_ISR(call) ((int) IPC_GET_ARG2(call)) 75 76 static int irc_service = 0; 77 static int irc_phone = -1; 73 78 74 79 /** DP8390 kernel interrupt command sequence. … … 136 141 } 137 142 138 /** Changes the network interface state. 143 /** Change the network interface state. 144 * 139 145 * @param[in,out] device The network interface. 140 * @param[in] state The new state. 141 * @returns The new state. 146 * @param[in] state The new state. 147 * 148 * @return The new state. 149 * 142 150 */ 143 151 static int change_state(netif_device_t *device, device_state_t state) … … 272 280 return rc; 273 281 274 if (device->state != NETIF_ACTIVE) {282 if (device->state != NETIF_ACTIVE) { 275 283 netif_pq_release(packet_get_id(packet)); 276 284 return EFORWARD; … … 312 320 } 313 321 314 return change_state(device, NETIF_ACTIVE); 322 rc = change_state(device, NETIF_ACTIVE); 323 324 if (irc_service) 325 async_msg_1(irc_phone, IRC_ENABLE_INTERRUPT, dep->de_irq); 326 327 return rc; 315 328 } 316 329 … … 334 347 int netif_initialize(void) 335 348 { 349 sysarg_t apic; 350 sysarg_t i8259; 351 352 if ((sysinfo_get_value("apic", &apic) == EOK) && (apic)) 353 irc_service = SERVICE_APIC; 354 else if ((sysinfo_get_value("i8259", &i8259) == EOK) && (i8259)) 355 irc_service = SERVICE_I8259; 356 357 if (irc_service) { 358 while (irc_phone < 0) { 359 irc_phone = ipc_connect_me_to_blocking(PHONE_NS, irc_service, 360 0, 0); 361 } 362 } 363 364 async_set_interrupt_received(irq_handler); 365 336 366 sysarg_t phonehash; 337 async_set_interrupt_received(irq_handler);338 367 return ipc_connect_to_me(PHONE_NS, SERVICE_DP8390, 0, 0, &phonehash); 339 368 }
Note:
See TracChangeset
for help on using the changeset viewer.