Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/device/nic.c

    r9cd8165 r00d7e1b  
    4444#include <ipc/services.h>
    4545
    46 /** Send frame from NIC
    47  *
    48  * @param[in] dev_sess
    49  * @param[in] data     Frame data
    50  * @param[in] size     Frame size in bytes
    51  *
    52  * @return EOK If the operation was successfully completed
    53  *
    54  */
    55 int nic_send_frame(async_sess_t *dev_sess, void *data, size_t size)
    56 {
    57         async_exch_t *exch = async_exchange_begin(dev_sess);
    58        
    59         ipc_call_t answer;
    60         aid_t req = async_send_1(exch, DEV_IFACE_ID(NIC_DEV_IFACE),
    61             NIC_SEND_MESSAGE, &answer);
    62         sysarg_t retval = async_data_write_start(exch, data, size);
    63        
    64         async_exchange_end(exch);
    65        
    66         if (retval != EOK) {
    67                 async_wait_for(req, NULL);
    68                 return retval;
    69         }
    70 
    71         async_wait_for(req, &retval);
    72         return retval;
    73 }
    74 
    75 /** Create callback connection from NIC service
    76  *
    77  * @param[in] dev_sess
     46/** Send a packet through the device
     47 *
     48 * @param[in] dev_sess
     49 * @param[in] packet_id Id of the sent packet
     50 *
     51 * @return EOK If the operation was successfully completed
     52 *
     53 */
     54int nic_send_message(async_sess_t *dev_sess, packet_id_t packet_id)
     55{
     56        async_exch_t *exch = async_exchange_begin(dev_sess);
     57        int rc = async_req_2_0(exch, DEV_IFACE_ID(NIC_DEV_IFACE),
     58            NIC_SEND_MESSAGE, packet_id);
     59        async_exchange_end(exch);
     60       
     61        return rc;
     62}
     63
     64/** Connect the driver to the NET and NIL services
     65 *
     66 * @param[in] dev_sess
     67 * @param[in] nil_service Service identifier for the NIL service
    7868 * @param[in] device_id
    7969 *
     
    8171 *
    8272 */
    83 int nic_callback_create(async_sess_t *dev_sess, async_client_conn_t cfun,
    84     void *carg)
    85 {
    86         ipc_call_t answer;
    87         int rc;
    88         sysarg_t retval;
    89        
    90         async_exch_t *exch = async_exchange_begin(dev_sess);
    91         aid_t req = async_send_1(exch, DEV_IFACE_ID(NIC_DEV_IFACE),
    92             NIC_CALLBACK_CREATE, &answer);
    93        
    94         rc = async_connect_to_me(exch, 0, 0, 0, cfun, carg);
    95         if (rc != EOK) {
    96                 async_wait_for(req, NULL);
    97                 return rc;
    98         }
    99         async_exchange_end(exch);
    100        
    101         async_wait_for(req, &retval);
    102         return (int) retval;
     73int nic_connect_to_nil(async_sess_t *dev_sess, services_t nil_service,
     74    nic_device_id_t device_id)
     75{
     76        async_exch_t *exch = async_exchange_begin(dev_sess);
     77        int rc = async_req_3_0(exch, DEV_IFACE_ID(NIC_DEV_IFACE),
     78            NIC_CONNECT_TO_NIL, nil_service, device_id);
     79        async_exchange_end(exch);
     80       
     81        return rc;
    10382}
    10483
     
    345324 * it can never force the NIC to advertise unsupported modes.
    346325 *
    347  * The allowed modes are defined in "nic/eth_phys.h" in the C library.
     326 * The allowed modes are defined in "net/eth_phys.h" in the C library.
    348327 *
    349328 * @param[in] dev_sess
     
    382361/** Probe current state of auto-negotiation.
    383362 *
    384  * Modes are defined in the "nic/eth_phys.h" in the C library.
     363 * Modes are defined in the "net/eth_phys.h" in the C library.
    385364 *
    386365 * @param[in]  dev_sess
     
    916895 *
    917896 */
    918 int nic_vlan_set_tag(async_sess_t *dev_sess, uint16_t tag, bool add, bool strip)
     897int nic_vlan_set_tag(async_sess_t *dev_sess, uint16_t tag, int add, int strip)
    919898{
    920899        async_exch_t *exch = async_exchange_begin(dev_sess);
Note: See TracChangeset for help on using the changeset viewer.