Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/nil/eth/eth.c

    r8d7ec69d r77a69ea  
    170170INT_MAP_IMPLEMENT(eth_protos, eth_proto_t);
    171171
    172 static void eth_nic_cb_connection(ipc_callid_t iid, ipc_call_t *icall,
    173     void *arg);
    174 
    175 static int eth_device_state(nic_device_id_t device_id, sysarg_t state)
     172int nil_device_state_msg_local(nic_device_id_t device_id, sysarg_t state)
    176173{
    177174        int index;
     
    347344        }
    348345       
    349         rc = nic_callback_create(device->sess, device_id,
    350             eth_nic_cb_connection, NULL);
    351         if (rc != EOK) {
    352                 fibril_rwlock_write_unlock(&eth_globals.devices_lock);
    353                 async_hangup(device->sess);
    354                 free(device);
    355                 return EIO;
    356         }
     346        nic_connect_to_nil(device->sess, SERVICE_ETHERNET, device_id);
    357347       
    358348        /* Get hardware address */
     
    832822       
    833823        rc = async_data_write_accept(&data, false, 0, 0, 0, &size);
    834         if (rc != EOK) {
    835                 printf("%s: data_write_accept() failed\n", NAME);
     824        if (rc != EOK)
    836825                return rc;
    837         }
    838826       
    839827        packet_t *packet = packet_get_1_remote(eth_globals.net_sess, size);
     
    955943               
    956944                return EOK;
     945        case NET_NIL_DEVICE_STATE:
     946                nil_device_state_msg_local(IPC_GET_DEVICE(*call), IPC_GET_STATE(*call));
     947                async_answer_0(callid, EOK);
     948                return EOK;
     949        case NET_NIL_RECEIVED:
     950                rc = eth_received(IPC_GET_ARG1(*call));
     951                async_answer_0(callid, (sysarg_t) rc);
     952                return rc;
     953        case NET_NIL_ADDR_CHANGED:
     954                rc = eth_addr_changed(IPC_GET_DEVICE(*call));
     955                async_answer_0(callid, (sysarg_t) rc);
     956                return rc;
    957957        }
    958958       
    959959        return ENOTSUP;
    960 }
    961 
    962 static void eth_nic_cb_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)
    963 {
    964         int rc;
    965        
    966         async_answer_0(iid, EOK);
    967        
    968         while (true) {
    969                 ipc_call_t call;
    970                 ipc_callid_t callid = async_get_call(&call);
    971                
    972                 if (!IPC_GET_IMETHOD(call))
    973                         break;
    974                
    975                 switch (IPC_GET_IMETHOD(call)) {
    976                 case NIC_EV_DEVICE_STATE:
    977                         rc = eth_device_state(IPC_GET_ARG1(call),
    978                             IPC_GET_ARG2(call));
    979                         async_answer_0(callid, (sysarg_t) rc);
    980                         break;
    981                 case NIC_EV_RECEIVED:
    982                         rc = eth_received(IPC_GET_ARG1(call));
    983                         async_answer_0(callid, (sysarg_t) rc);
    984                         break;
    985                 case NIC_EV_ADDR_CHANGED:
    986                         rc = eth_addr_changed(IPC_GET_ARG1(call));
    987                         async_answer_0(callid, (sysarg_t) rc);
    988                         break;
    989                 default:
    990                         async_answer_0(callid, ENOTSUP);
    991                 }
    992         }
    993960}
    994961
Note: See TracChangeset for help on using the changeset viewer.