Ignore:
File:
1 edited

Legend:

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

    ree2fa30a r79ae36dd  
    3838#include <assert.h>
    3939#include <async.h>
     40#include <async_obsolete.h>
    4041#include <ddi.h>
    4142#include <errno.h>
     
    4344#include <malloc.h>
    4445#include <sysinfo.h>
     46#include <ipc/services.h>
    4547#include <ns.h>
    46 #include <ipc/services.h>
     48#include <ns_obsolete.h>
    4749#include <ipc/irc.h>
    4850#include <net/modules.h>
     
    7678
    7779static bool irc_service = false;
    78 static async_sess_t *irc_sess = NULL;
     80static int irc_phone = -1;
    7981
    8082/** NE2000 kernel interrupt command sequence.
     
    152154        device_id_t device_id = IRQ_GET_DEVICE(*call);
    153155        netif_device_t *device;
    154         async_sess_t *nil_sess;
     156        int nil_phone;
    155157        ne2k_t *ne2k;
    156158       
    157159        fibril_rwlock_read_lock(&netif_globals.lock);
    158160       
    159         nil_sess = netif_globals.nil_sess;
    160        
    161         if (find_device(device_id, &device) == EOK)
     161        if (find_device(device_id, &device) == EOK) {
     162                nil_phone = device->nil_phone;
    162163                ne2k = (ne2k_t *) device->specific;
    163         else
     164        } else
    164165                ne2k = NULL;
    165166       
     
    167168       
    168169        if (ne2k != NULL) {
    169                 list_t *frames =
     170                link_t *frames =
    170171                    ne2k_interrupt(ne2k, IRQ_GET_ISR(*call), IRQ_GET_TSR(*call));
    171172               
    172173                if (frames != NULL) {
    173174                        while (!list_empty(frames)) {
    174                                 frame_t *frame = list_get_instance(
    175                                     list_first(frames), frame_t, link);
     175                                frame_t *frame =
     176                                    list_get_instance(frames->next, frame_t, link);
    176177                               
    177178                                list_remove(&frame->link);
    178                                 nil_received_msg(nil_sess, device_id, frame->packet,
     179                                nil_received_msg(nil_phone, device_id, frame->packet,
    179180                                    SERVICE_NONE);
    180181                                free(frame);
     
    277278       
    278279        device->device_id = device_id;
     280        device->nil_phone = -1;
    279281        device->specific = (void *) ne2k;
    280282        device->state = NETIF_STOPPED;
     
    329331                change_state(device, NETIF_ACTIVE);
    330332               
    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                 }
     333                if (irc_service)
     334                        async_obsolete_msg_1(irc_phone, IRC_ENABLE_INTERRUPT, ne2k->irq);
    336335        }
    337336       
     
    391390       
    392391        if (irc_service) {
    393                 while (!irc_sess)
    394                         irc_sess = service_connect_blocking(EXCHANGE_SERIALIZE,
    395                             SERVICE_IRC, 0, 0);
     392                while (irc_phone < 0)
     393                        irc_phone = service_obsolete_connect_blocking(SERVICE_IRC, 0, 0);
    396394        }
    397395       
Note: See TracChangeset for help on using the changeset viewer.