Ignore:
File:
1 edited

Legend:

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

    r8820544 r7de1988c  
    3838 */
    3939
     40/* XXX Fix this */
     41#define _DDF_DATA_IMPLANT
     42
    4043#include <stdio.h>
    4144#include <errno.h>
    42 #include <irc.h>
    4345#include <stdlib.h>
    4446#include <str_error.h>
     
    122124};
    123125
    124 static void ne2k_interrupt_handler(ipc_callid_t, ipc_call_t *, ddf_dev_t *);
     126static void ne2k_interrupt_handler(ddf_dev_t *dev, ipc_callid_t iid,
     127        ipc_call_t *call);
    125128
    126129static int ne2k_register_interrupt(nic_t *nic_data)
     
    239242}
    240243
    241 void ne2k_interrupt_handler(ipc_callid_t iid, ipc_call_t *call, ddf_dev_t *dev)
     244void ne2k_interrupt_handler(ddf_dev_t *dev, ipc_callid_t iid, ipc_call_t *call)
    242245{
    243246        nic_t *nic_data = DRIVER_DATA(dev);
    244247        ne2k_interrupt(nic_data, IRQ_GET_ISR(*call), IRQ_GET_TSR(*call));
    245        
     248
    246249        async_answer_0(iid, EOK);
    247250}
     
    253256        if (!ne2k->up) {
    254257                int rc = ne2k_up(ne2k);
    255                 if (rc != EOK)
    256                         return rc;
    257 
    258                 rc = irc_enable_interrupt(ne2k->irq);
    259258                if (rc != EOK) {
    260                         ne2k_down(ne2k);
    261259                        return rc;
    262260                }
     261
     262                nic_enable_interrupt(nic_data, ne2k->irq);
    263263        }
    264264        return EOK;
     
    269269        ne2k_t *ne2k = (ne2k_t *) nic_get_specific(nic_data);
    270270
    271         (void) irc_disable_interrupt(ne2k->irq);
     271        nic_disable_interrupt(nic_data, ne2k->irq);
    272272        ne2k->receive_configuration = RCR_AB | RCR_AM;
    273273        ne2k_down(ne2k);
     
    396396        }
    397397       
     398        rc = nic_connect_to_services(nic_data);
     399        if (rc != EOK) {
     400                ne2k_dev_cleanup(dev);
     401                return rc;
     402        }
     403       
    398404        fun = ddf_fun_create(nic_get_ddf_dev(nic_data), fun_exposed, "port0");
    399405        if (fun == NULL) {
     
    401407                return ENOMEM;
    402408        }
    403        
    404409        nic_set_ddf_fun(nic_data, fun);
    405410        ddf_fun_set_ops(fun, &ne2k_dev_ops);
     411        ddf_fun_data_implant(fun, nic_data);
    406412       
    407413        rc = ddf_fun_bind(fun);
     
    437443int main(int argc, char *argv[])
    438444{
    439         printf("%s: HelenOS NE 2000 network adapter driver\n", NAME);
    440        
    441445        nic_driver_init(NAME);
    442446        nic_driver_implement(&ne2k_driver_ops, &ne2k_dev_ops, &ne2k_nic_iface);
Note: See TracChangeset for help on using the changeset viewer.