Changeset e5424e9 in mainline for uspace/drv/nic


Ignore:
Timestamp:
2014-07-18T08:50:36Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ebc9c2c
Parents:
869d936
Message:

Defer connecting IRC service until actually needed. This allows the driver to be loaded even in its absence.

Location:
uspace/drv/nic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/nic/e1k/e1k.c

    r869d936 re5424e9  
    17561756        e1000_enable_interrupts(e1000);
    17571757       
    1758         irc_enable_interrupt(e1000->irq);
     1758        int rc = irc_enable_interrupt(e1000->irq);
     1759        if (rc != EOK) {
     1760                e1000_disable_interrupts(e1000);
     1761                fibril_mutex_unlock(&e1000->ctrl_lock);
     1762                fibril_mutex_unlock(&e1000->tx_lock);
     1763                fibril_mutex_unlock(&e1000->rx_lock);
     1764                return rc;
     1765        }
    17591766       
    17601767        e1000_clear_rx_ring(e1000);
     
    23752382        printf("%s: HelenOS E1000 network adapter driver\n", NAME);
    23762383       
    2377         if (irc_init() != EOK) {
    2378                 printf("%s: Failed connecting IRC service\n", NAME);
    2379                 return 1;
    2380         }
    2381        
    23822384        if (nic_driver_init(NAME) != EOK)
    23832385                return 1;
  • uspace/drv/nic/ne2k/ne2k.c

    r869d936 re5424e9  
    257257        if (!ne2k->up) {
    258258                int rc = ne2k_up(ne2k);
     259                if (rc != EOK)
     260                        return rc;
     261
     262                rc = irc_enable_interrupt(ne2k->irq);
    259263                if (rc != EOK) {
     264                        ne2k_down(ne2k);
    260265                        return rc;
    261266                }
    262 
    263                 irc_enable_interrupt(ne2k->irq);
    264267        }
    265268        return EOK;
     
    270273        ne2k_t *ne2k = (ne2k_t *) nic_get_specific(nic_data);
    271274
    272         irc_disable_interrupt(ne2k->irq);
     275        (void) irc_disable_interrupt(ne2k->irq);
    273276        ne2k->receive_configuration = RCR_AB | RCR_AM;
    274277        ne2k_down(ne2k);
     
    440443        printf("%s: HelenOS NE 2000 network adapter driver\n", NAME);
    441444       
    442         if (irc_init() != EOK) {
    443                 printf("%s: Failed connecting IRC service\n", NAME);
    444                 return 1;
    445         }
    446        
    447445        nic_driver_init(NAME);
    448446        nic_driver_implement(&ne2k_driver_ops, &ne2k_dev_ops, &ne2k_nic_iface);
  • uspace/drv/nic/rtl8139/driver.c

    r869d936 re5424e9  
    956956        rtl8139->int_mask = RTL_DEFAULT_INTERRUPTS;
    957957        rtl8139_hw_int_enable(rtl8139);
    958         irc_enable_interrupt(rtl8139->irq);
     958
     959        int rc = irc_enable_interrupt(rtl8139->irq);
     960        if (rc != EOK) {
     961                rtl8139_on_stopped(nic_data);
     962                return rc;
     963        }
    959964
    960965        ddf_msg(LVL_DEBUG, "Device activated, interrupt %d registered", rtl8139->irq);
     
    21702175        printf("%s: HelenOS RTL8139 network adapter driver\n", NAME);
    21712176
    2172         if (irc_init() != EOK) {
    2173                 printf("%s: Failed connecting IRC service\n", NAME);
    2174                 return 1;
    2175         }
    2176 
    21772177        int rc = nic_driver_init(NAME);
    21782178        if (rc != EOK)
Note: See TracChangeset for help on using the changeset viewer.