Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hw/netif/ne2000/ne2000.c

    r79ae36dd ree2fa30a  
    3838#include <assert.h>
    3939#include <async.h>
    40 #include <async_obsolete.h>
    4140#include <ddi.h>
    4241#include <errno.h>
     
    4443#include <malloc.h>
    4544#include <sysinfo.h>
     45#include <ns.h>
    4646#include <ipc/services.h>
    47 #include <ns.h>
    48 #include <ns_obsolete.h>
    4947#include <ipc/irc.h>
    5048#include <net/modules.h>
     
    7876
    7977static bool irc_service = false;
    80 static int irc_phone = -1;
     78static async_sess_t *irc_sess = NULL;
    8179
    8280/** NE2000 kernel interrupt command sequence.
     
    154152        device_id_t device_id = IRQ_GET_DEVICE(*call);
    155153        netif_device_t *device;
    156         int nil_phone;
     154        async_sess_t *nil_sess;
    157155        ne2k_t *ne2k;
    158156       
    159157        fibril_rwlock_read_lock(&netif_globals.lock);
    160158       
    161         if (find_device(device_id, &device) == EOK) {
    162                 nil_phone = device->nil_phone;
     159        nil_sess = netif_globals.nil_sess;
     160       
     161        if (find_device(device_id, &device) == EOK)
    163162                ne2k = (ne2k_t *) device->specific;
    164         } else
     163        else
    165164                ne2k = NULL;
    166165       
     
    168167       
    169168        if (ne2k != NULL) {
    170                 link_t *frames =
     169                list_t *frames =
    171170                    ne2k_interrupt(ne2k, IRQ_GET_ISR(*call), IRQ_GET_TSR(*call));
    172171               
    173172                if (frames != NULL) {
    174173                        while (!list_empty(frames)) {
    175                                 frame_t *frame =
    176                                     list_get_instance(frames->next, frame_t, link);
     174                                frame_t *frame = list_get_instance(
     175                                    list_first(frames), frame_t, link);
    177176                               
    178177                                list_remove(&frame->link);
    179                                 nil_received_msg(nil_phone, device_id, frame->packet,
     178                                nil_received_msg(nil_sess, device_id, frame->packet,
    180179                                    SERVICE_NONE);
    181180                                free(frame);
     
    278277       
    279278        device->device_id = device_id;
    280         device->nil_phone = -1;
    281279        device->specific = (void *) ne2k;
    282280        device->state = NETIF_STOPPED;
     
    331329                change_state(device, NETIF_ACTIVE);
    332330               
    333                 if (irc_service)
    334                         async_obsolete_msg_1(irc_phone, IRC_ENABLE_INTERRUPT, ne2k->irq);
     331                if (irc_service) {
     332                        async_exch_t *exch = async_exchange_begin(irc_sess);
     333                        async_msg_1(exch, IRC_ENABLE_INTERRUPT, ne2k->irq);
     334                        async_exchange_end(exch);
     335                }
    335336        }
    336337       
     
    390391       
    391392        if (irc_service) {
    392                 while (irc_phone < 0)
    393                         irc_phone = service_obsolete_connect_blocking(SERVICE_IRC, 0, 0);
     393                while (!irc_sess)
     394                        irc_sess = service_connect_blocking(EXCHANGE_SERIALIZE,
     395                            SERVICE_IRC, 0, 0);
    394396        }
    395397       
Note: See TracChangeset for help on using the changeset viewer.