Changeset 984a9ba in mainline for uspace/lib/drv/generic/remote_nic.c
- Timestamp:
- 2018-07-05T09:34:09Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 63d46341
- Parents:
- 76f566d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/remote_nic.c
r76f566d r984a9ba 1337 1337 1338 1338 static void remote_nic_send_frame(ddf_fun_t *dev, void *iface, 1339 cap_call_handle_t chandle,ipc_call_t *call)1339 ipc_call_t *call) 1340 1340 { 1341 1341 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1348 1348 rc = async_data_write_accept(&data, false, 0, 0, 0, &size); 1349 1349 if (rc != EOK) { 1350 async_answer_0(c handle, EINVAL);1350 async_answer_0(call, EINVAL); 1351 1351 return; 1352 1352 } 1353 1353 1354 1354 rc = nic_iface->send_frame(dev, data, size); 1355 async_answer_0(c handle, rc);1355 async_answer_0(call, rc); 1356 1356 free(data); 1357 1357 } 1358 1358 1359 1359 static void remote_nic_callback_create(ddf_fun_t *dev, void *iface, 1360 cap_call_handle_t chandle,ipc_call_t *call)1360 ipc_call_t *call) 1361 1361 { 1362 1362 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1364 1364 1365 1365 errno_t rc = nic_iface->callback_create(dev); 1366 async_answer_0(c handle, rc);1366 async_answer_0(call, rc); 1367 1367 } 1368 1368 1369 1369 static void remote_nic_get_state(ddf_fun_t *dev, void *iface, 1370 cap_call_handle_t chandle,ipc_call_t *call)1370 ipc_call_t *call) 1371 1371 { 1372 1372 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1376 1376 1377 1377 errno_t rc = nic_iface->get_state(dev, &state); 1378 async_answer_1(c handle, rc, state);1378 async_answer_1(call, rc, state); 1379 1379 } 1380 1380 1381 1381 static void remote_nic_set_state(ddf_fun_t *dev, void *iface, 1382 cap_call_handle_t chandle,ipc_call_t *call)1382 ipc_call_t *call) 1383 1383 { 1384 1384 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1388 1388 1389 1389 errno_t rc = nic_iface->set_state(dev, state); 1390 async_answer_0(c handle, rc);1390 async_answer_0(call, rc); 1391 1391 } 1392 1392 1393 1393 static void remote_nic_get_address(ddf_fun_t *dev, void *iface, 1394 cap_call_handle_t chandle,ipc_call_t *call)1394 ipc_call_t *call) 1395 1395 { 1396 1396 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1402 1402 errno_t rc = nic_iface->get_address(dev, &address); 1403 1403 if (rc == EOK) { 1404 ipc_call_t data; 1404 1405 size_t max_len; 1405 cap_call_handle_t data_chandle;1406 1406 1407 1407 /* All errors will be translated into EPARTY anyway */ 1408 if (!async_data_read_receive(&data _chandle, &max_len)) {1409 async_answer_0( data_chandle, EINVAL);1410 async_answer_0(c handle, EINVAL);1408 if (!async_data_read_receive(&data, &max_len)) { 1409 async_answer_0(&data, EINVAL); 1410 async_answer_0(call, EINVAL); 1411 1411 return; 1412 1412 } 1413 1413 1414 1414 if (max_len != sizeof(nic_address_t)) { 1415 async_answer_0( data_chandle, ELIMIT);1416 async_answer_0(c handle, ELIMIT);1417 return; 1418 } 1419 1420 async_data_read_finalize( data_chandle, &address,1415 async_answer_0(&data, ELIMIT); 1416 async_answer_0(call, ELIMIT); 1417 return; 1418 } 1419 1420 async_data_read_finalize(&data, &address, 1421 1421 sizeof(nic_address_t)); 1422 1422 } 1423 1423 1424 async_answer_0(c handle, rc);1424 async_answer_0(call, rc); 1425 1425 } 1426 1426 1427 1427 static void remote_nic_set_address(ddf_fun_t *dev, void *iface, 1428 cap_call_handle_t chandle, ipc_call_t *call) 1429 { 1430 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1431 1428 ipc_call_t *call) 1429 { 1430 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1431 1432 ipc_call_t data; 1432 1433 size_t length; 1433 cap_call_handle_t data_chandle; 1434 if (!async_data_write_receive(&data_chandle, &length)) { 1435 async_answer_0(data_chandle, EINVAL); 1436 async_answer_0(chandle, EINVAL); 1434 if (!async_data_write_receive(&data, &length)) { 1435 async_answer_0(&data, EINVAL); 1436 async_answer_0(call, EINVAL); 1437 1437 return; 1438 1438 } 1439 1439 1440 1440 if (length > sizeof(nic_address_t)) { 1441 async_answer_0( data_chandle, ELIMIT);1442 async_answer_0(c handle, ELIMIT);1441 async_answer_0(&data, ELIMIT); 1442 async_answer_0(call, ELIMIT); 1443 1443 return; 1444 1444 } 1445 1445 1446 1446 nic_address_t address; 1447 if (async_data_write_finalize( data_chandle, &address, length) != EOK) {1448 async_answer_0(c handle, EINVAL);1447 if (async_data_write_finalize(&data, &address, length) != EOK) { 1448 async_answer_0(call, EINVAL); 1449 1449 return; 1450 1450 } … … 1452 1452 if (nic_iface->set_address != NULL) { 1453 1453 errno_t rc = nic_iface->set_address(dev, &address); 1454 async_answer_0(c handle, rc);1454 async_answer_0(call, rc); 1455 1455 } else 1456 async_answer_0(c handle, ENOTSUP);1456 async_answer_0(call, ENOTSUP); 1457 1457 } 1458 1458 1459 1459 static void remote_nic_get_stats(ddf_fun_t *dev, void *iface, 1460 cap_call_handle_t chandle,ipc_call_t *call)1460 ipc_call_t *call) 1461 1461 { 1462 1462 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1463 1463 if (nic_iface->get_stats == NULL) { 1464 async_answer_0(c handle, ENOTSUP);1464 async_answer_0(call, ENOTSUP); 1465 1465 return; 1466 1466 } … … 1471 1471 errno_t rc = nic_iface->get_stats(dev, &stats); 1472 1472 if (rc == EOK) { 1473 cap_call_handle_t data_chandle;1473 ipc_call_t data; 1474 1474 size_t max_len; 1475 if (!async_data_read_receive(&data _chandle, &max_len)) {1476 async_answer_0( data_chandle, EINVAL);1477 async_answer_0(c handle, EINVAL);1475 if (!async_data_read_receive(&data, &max_len)) { 1476 async_answer_0(&data, EINVAL); 1477 async_answer_0(call, EINVAL); 1478 1478 return; 1479 1479 } 1480 1480 1481 1481 if (max_len < sizeof(nic_device_stats_t)) { 1482 async_answer_0( data_chandle, ELIMIT);1483 async_answer_0(c handle, ELIMIT);1484 return; 1485 } 1486 1487 async_data_read_finalize( data_chandle, &stats,1482 async_answer_0(&data, ELIMIT); 1483 async_answer_0(call, ELIMIT); 1484 return; 1485 } 1486 1487 async_data_read_finalize(&data, &stats, 1488 1488 sizeof(nic_device_stats_t)); 1489 1489 } 1490 1490 1491 async_answer_0(c handle, rc);1491 async_answer_0(call, rc); 1492 1492 } 1493 1493 1494 1494 static void remote_nic_get_device_info(ddf_fun_t *dev, void *iface, 1495 cap_call_handle_t chandle,ipc_call_t *call)1495 ipc_call_t *call) 1496 1496 { 1497 1497 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1498 1498 if (nic_iface->get_device_info == NULL) { 1499 async_answer_0(c handle, ENOTSUP);1499 async_answer_0(call, ENOTSUP); 1500 1500 return; 1501 1501 } … … 1506 1506 errno_t rc = nic_iface->get_device_info(dev, &info); 1507 1507 if (rc == EOK) { 1508 cap_call_handle_t data_chandle;1508 ipc_call_t data; 1509 1509 size_t max_len; 1510 if (!async_data_read_receive(&data _chandle, &max_len)) {1511 async_answer_0( data_chandle, EINVAL);1512 async_answer_0(c handle, EINVAL);1510 if (!async_data_read_receive(&data, &max_len)) { 1511 async_answer_0(&data, EINVAL); 1512 async_answer_0(call, EINVAL); 1513 1513 return; 1514 1514 } 1515 1515 1516 1516 if (max_len < sizeof (nic_device_info_t)) { 1517 async_answer_0( data_chandle, ELIMIT);1518 async_answer_0(c handle, ELIMIT);1519 return; 1520 } 1521 1522 async_data_read_finalize( data_chandle, &info,1517 async_answer_0(&data, ELIMIT); 1518 async_answer_0(call, ELIMIT); 1519 return; 1520 } 1521 1522 async_data_read_finalize(&data, &info, 1523 1523 sizeof(nic_device_info_t)); 1524 1524 } 1525 1525 1526 async_answer_0(c handle, rc);1526 async_answer_0(call, rc); 1527 1527 } 1528 1528 1529 1529 static void remote_nic_get_cable_state(ddf_fun_t *dev, void *iface, 1530 cap_call_handle_t chandle,ipc_call_t *call)1530 ipc_call_t *call) 1531 1531 { 1532 1532 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1533 1533 if (nic_iface->get_cable_state == NULL) { 1534 async_answer_0(c handle, ENOTSUP);1534 async_answer_0(call, ENOTSUP); 1535 1535 return; 1536 1536 } … … 1539 1539 1540 1540 errno_t rc = nic_iface->get_cable_state(dev, &cs); 1541 async_answer_1(c handle, rc, (sysarg_t) cs);1541 async_answer_1(call, rc, (sysarg_t) cs); 1542 1542 } 1543 1543 1544 1544 static void remote_nic_get_operation_mode(ddf_fun_t *dev, void *iface, 1545 cap_call_handle_t chandle,ipc_call_t *call)1545 ipc_call_t *call) 1546 1546 { 1547 1547 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1548 1548 if (nic_iface->get_operation_mode == NULL) { 1549 async_answer_0(c handle, ENOTSUP);1549 async_answer_0(call, ENOTSUP); 1550 1550 return; 1551 1551 } … … 1556 1556 1557 1557 errno_t rc = nic_iface->get_operation_mode(dev, &speed, &duplex, &role); 1558 async_answer_3(c handle, rc, (sysarg_t) speed, (sysarg_t) duplex,1558 async_answer_3(call, rc, (sysarg_t) speed, (sysarg_t) duplex, 1559 1559 (sysarg_t) role); 1560 1560 } 1561 1561 1562 1562 static void remote_nic_set_operation_mode(ddf_fun_t *dev, void *iface, 1563 cap_call_handle_t chandle,ipc_call_t *call)1563 ipc_call_t *call) 1564 1564 { 1565 1565 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1566 1566 if (nic_iface->set_operation_mode == NULL) { 1567 async_answer_0(c handle, ENOTSUP);1567 async_answer_0(call, ENOTSUP); 1568 1568 return; 1569 1569 } … … 1574 1574 1575 1575 errno_t rc = nic_iface->set_operation_mode(dev, speed, duplex, role); 1576 async_answer_0(c handle, rc);1576 async_answer_0(call, rc); 1577 1577 } 1578 1578 1579 1579 static void remote_nic_autoneg_enable(ddf_fun_t *dev, void *iface, 1580 cap_call_handle_t chandle,ipc_call_t *call)1580 ipc_call_t *call) 1581 1581 { 1582 1582 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1583 1583 if (nic_iface->autoneg_enable == NULL) { 1584 async_answer_0(c handle, ENOTSUP);1584 async_answer_0(call, ENOTSUP); 1585 1585 return; 1586 1586 } … … 1589 1589 1590 1590 errno_t rc = nic_iface->autoneg_enable(dev, advertisement); 1591 async_answer_0(c handle, rc);1591 async_answer_0(call, rc); 1592 1592 } 1593 1593 1594 1594 static void remote_nic_autoneg_disable(ddf_fun_t *dev, void *iface, 1595 cap_call_handle_t chandle,ipc_call_t *call)1595 ipc_call_t *call) 1596 1596 { 1597 1597 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1598 1598 if (nic_iface->autoneg_disable == NULL) { 1599 async_answer_0(c handle, ENOTSUP);1599 async_answer_0(call, ENOTSUP); 1600 1600 return; 1601 1601 } 1602 1602 1603 1603 errno_t rc = nic_iface->autoneg_disable(dev); 1604 async_answer_0(c handle, rc);1604 async_answer_0(call, rc); 1605 1605 } 1606 1606 1607 1607 static void remote_nic_autoneg_probe(ddf_fun_t *dev, void *iface, 1608 cap_call_handle_t chandle,ipc_call_t *call)1608 ipc_call_t *call) 1609 1609 { 1610 1610 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1611 1611 if (nic_iface->autoneg_probe == NULL) { 1612 async_answer_0(c handle, ENOTSUP);1612 async_answer_0(call, ENOTSUP); 1613 1613 return; 1614 1614 } … … 1621 1621 errno_t rc = nic_iface->autoneg_probe(dev, &our_adv, &their_adv, &result, 1622 1622 &their_result); 1623 async_answer_4(c handle, rc, our_adv, their_adv, (sysarg_t) result,1623 async_answer_4(call, rc, our_adv, their_adv, (sysarg_t) result, 1624 1624 (sysarg_t) their_result); 1625 1625 } 1626 1626 1627 1627 static void remote_nic_autoneg_restart(ddf_fun_t *dev, void *iface, 1628 cap_call_handle_t chandle,ipc_call_t *call)1628 ipc_call_t *call) 1629 1629 { 1630 1630 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1631 1631 if (nic_iface->autoneg_restart == NULL) { 1632 async_answer_0(c handle, ENOTSUP);1632 async_answer_0(call, ENOTSUP); 1633 1633 return; 1634 1634 } 1635 1635 1636 1636 errno_t rc = nic_iface->autoneg_restart(dev); 1637 async_answer_0(c handle, rc);1637 async_answer_0(call, rc); 1638 1638 } 1639 1639 1640 1640 static void remote_nic_get_pause(ddf_fun_t *dev, void *iface, 1641 cap_call_handle_t chandle,ipc_call_t *call)1641 ipc_call_t *call) 1642 1642 { 1643 1643 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1644 1644 if (nic_iface->get_pause == NULL) { 1645 async_answer_0(c handle, ENOTSUP);1645 async_answer_0(call, ENOTSUP); 1646 1646 return; 1647 1647 } … … 1652 1652 1653 1653 errno_t rc = nic_iface->get_pause(dev, &we_send, &we_receive, &pause); 1654 async_answer_3(c handle, rc, we_send, we_receive, pause);1654 async_answer_3(call, rc, we_send, we_receive, pause); 1655 1655 } 1656 1656 1657 1657 static void remote_nic_set_pause(ddf_fun_t *dev, void *iface, 1658 cap_call_handle_t chandle,ipc_call_t *call)1658 ipc_call_t *call) 1659 1659 { 1660 1660 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1661 1661 if (nic_iface->set_pause == NULL) { 1662 async_answer_0(c handle, ENOTSUP);1662 async_answer_0(call, ENOTSUP); 1663 1663 return; 1664 1664 } … … 1670 1670 errno_t rc = nic_iface->set_pause(dev, allow_send, allow_receive, 1671 1671 pause); 1672 async_answer_0(c handle, rc);1672 async_answer_0(call, rc); 1673 1673 } 1674 1674 1675 1675 static void remote_nic_unicast_get_mode(ddf_fun_t *dev, void *iface, 1676 cap_call_handle_t chandle,ipc_call_t *call)1676 ipc_call_t *call) 1677 1677 { 1678 1678 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1679 1679 if (nic_iface->unicast_get_mode == NULL) { 1680 async_answer_0(c handle, ENOTSUP);1680 async_answer_0(call, ENOTSUP); 1681 1681 return; 1682 1682 } … … 1688 1688 address_list = malloc(max_count * sizeof (nic_address_t)); 1689 1689 if (!address_list) { 1690 async_answer_0(c handle, ENOMEM);1690 async_answer_0(call, ENOMEM); 1691 1691 return; 1692 1692 } … … 1702 1702 if ((rc != EOK) || (max_count == 0) || (address_count == 0)) { 1703 1703 free(address_list); 1704 async_answer_2(c handle, rc, mode, address_count);1705 return; 1706 } 1707 1708 cap_call_handle_t data_chandle;1704 async_answer_2(call, rc, mode, address_count); 1705 return; 1706 } 1707 1708 ipc_call_t data; 1709 1709 size_t max_len; 1710 if (!async_data_read_receive(&data _chandle, &max_len)) {1711 async_answer_0( data_chandle, EINVAL);1712 async_answer_2(c handle, rc, mode, address_count);1710 if (!async_data_read_receive(&data, &max_len)) { 1711 async_answer_0(&data, EINVAL); 1712 async_answer_2(call, rc, mode, address_count); 1713 1713 free(address_list); 1714 1714 return; … … 1721 1721 max_len = max_count * sizeof(nic_address_t); 1722 1722 1723 async_data_read_finalize(data_chandle, address_list, max_len); 1724 async_answer_0(data_chandle, EINVAL); 1723 async_data_read_finalize(&data, address_list, max_len); 1725 1724 1726 1725 free(address_list); 1727 async_answer_2(c handle, rc, mode, address_count);1726 async_answer_2(call, rc, mode, address_count); 1728 1727 } 1729 1728 1730 1729 static void remote_nic_unicast_set_mode(ddf_fun_t *dev, void *iface, 1731 cap_call_handle_t chandle,ipc_call_t *call)1730 ipc_call_t *call) 1732 1731 { 1733 1732 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1739 1738 1740 1739 if (address_count) { 1741 cap_call_handle_t data_chandle;1742 if (!async_data_write_receive(&data _chandle, &length)) {1743 async_answer_0( data_chandle, EINVAL);1744 async_answer_0(c handle, EINVAL);1740 ipc_call_t data; 1741 if (!async_data_write_receive(&data, &length)) { 1742 async_answer_0(&data, EINVAL); 1743 async_answer_0(call, EINVAL); 1745 1744 return; 1746 1745 } 1747 1746 1748 1747 if (length != address_count * sizeof(nic_address_t)) { 1749 async_answer_0( data_chandle, ELIMIT);1750 async_answer_0(c handle, ELIMIT);1748 async_answer_0(&data, ELIMIT); 1749 async_answer_0(call, ELIMIT); 1751 1750 return; 1752 1751 } … … 1754 1753 address_list = malloc(length); 1755 1754 if (address_list == NULL) { 1756 async_answer_0( data_chandle, ENOMEM);1757 async_answer_0(c handle, ENOMEM);1758 return; 1759 } 1760 1761 if (async_data_write_finalize( data_chandle, address_list,1755 async_answer_0(&data, ENOMEM); 1756 async_answer_0(call, ENOMEM); 1757 return; 1758 } 1759 1760 if (async_data_write_finalize(&data, address_list, 1762 1761 length) != EOK) { 1763 async_answer_0(c handle, EINVAL);1762 async_answer_0(call, EINVAL); 1764 1763 free(address_list); 1765 1764 return; … … 1770 1769 errno_t rc = nic_iface->unicast_set_mode(dev, mode, address_list, 1771 1770 address_count); 1772 async_answer_0(c handle, rc);1771 async_answer_0(call, rc); 1773 1772 } else 1774 async_answer_0(c handle, ENOTSUP);1773 async_answer_0(call, ENOTSUP); 1775 1774 1776 1775 free(address_list); … … 1778 1777 1779 1778 static void remote_nic_multicast_get_mode(ddf_fun_t *dev, void *iface, 1780 cap_call_handle_t chandle,ipc_call_t *call)1779 ipc_call_t *call) 1781 1780 { 1782 1781 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1783 1782 if (nic_iface->multicast_get_mode == NULL) { 1784 async_answer_0(c handle, ENOTSUP);1783 async_answer_0(call, ENOTSUP); 1785 1784 return; 1786 1785 } … … 1792 1791 address_list = malloc(max_count * sizeof(nic_address_t)); 1793 1792 if (!address_list) { 1794 async_answer_0(c handle, ENOMEM);1793 async_answer_0(call, ENOMEM); 1795 1794 return; 1796 1795 } … … 1807 1806 if ((rc != EOK) || (max_count == 0) || (address_count == 0)) { 1808 1807 free(address_list); 1809 async_answer_2(c handle, rc, mode, address_count);1810 return; 1811 } 1812 1813 cap_call_handle_t data_chandle;1808 async_answer_2(call, rc, mode, address_count); 1809 return; 1810 } 1811 1812 ipc_call_t data; 1814 1813 size_t max_len; 1815 if (!async_data_read_receive(&data _chandle, &max_len)) {1816 async_answer_0( data_chandle, EINVAL);1817 async_answer_2(c handle, rc, mode, address_count);1814 if (!async_data_read_receive(&data, &max_len)) { 1815 async_answer_0(&data, EINVAL); 1816 async_answer_2(call, rc, mode, address_count); 1818 1817 free(address_list); 1819 1818 return; … … 1826 1825 max_len = max_count * sizeof(nic_address_t); 1827 1826 1828 async_data_read_finalize( data_chandle, address_list, max_len);1827 async_data_read_finalize(&data, address_list, max_len); 1829 1828 1830 1829 free(address_list); 1831 async_answer_2(c handle, rc, mode, address_count);1830 async_answer_2(call, rc, mode, address_count); 1832 1831 } 1833 1832 1834 1833 static void remote_nic_multicast_set_mode(ddf_fun_t *dev, void *iface, 1835 cap_call_handle_t chandle,ipc_call_t *call)1834 ipc_call_t *call) 1836 1835 { 1837 1836 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1842 1841 1843 1842 if (address_count) { 1844 cap_call_handle_t data_chandle;1843 ipc_call_t data; 1845 1844 size_t length; 1846 if (!async_data_write_receive(&data _chandle, &length)) {1847 async_answer_0( data_chandle, EINVAL);1848 async_answer_0(c handle, EINVAL);1845 if (!async_data_write_receive(&data, &length)) { 1846 async_answer_0(&data, EINVAL); 1847 async_answer_0(call, EINVAL); 1849 1848 return; 1850 1849 } 1851 1850 1852 1851 if (length != address_count * sizeof (nic_address_t)) { 1853 async_answer_0( data_chandle, ELIMIT);1854 async_answer_0(c handle, ELIMIT);1852 async_answer_0(&data, ELIMIT); 1853 async_answer_0(call, ELIMIT); 1855 1854 return; 1856 1855 } … … 1858 1857 address_list = malloc(length); 1859 1858 if (address_list == NULL) { 1860 async_answer_0( data_chandle, ENOMEM);1861 async_answer_0(c handle, ENOMEM);1862 return; 1863 } 1864 1865 if (async_data_write_finalize( data_chandle, address_list,1859 async_answer_0(&data, ENOMEM); 1860 async_answer_0(call, ENOMEM); 1861 return; 1862 } 1863 1864 if (async_data_write_finalize(&data, address_list, 1866 1865 length) != EOK) { 1867 async_answer_0(c handle, EINVAL);1866 async_answer_0(call, EINVAL); 1868 1867 free(address_list); 1869 1868 return; … … 1874 1873 errno_t rc = nic_iface->multicast_set_mode(dev, mode, address_list, 1875 1874 address_count); 1876 async_answer_0(c handle, rc);1875 async_answer_0(call, rc); 1877 1876 } else 1878 async_answer_0(c handle, ENOTSUP);1877 async_answer_0(call, ENOTSUP); 1879 1878 1880 1879 free(address_list); … … 1882 1881 1883 1882 static void remote_nic_broadcast_get_mode(ddf_fun_t *dev, void *iface, 1884 cap_call_handle_t chandle,ipc_call_t *call)1883 ipc_call_t *call) 1885 1884 { 1886 1885 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1887 1886 if (nic_iface->broadcast_get_mode == NULL) { 1888 async_answer_0(c handle, ENOTSUP);1887 async_answer_0(call, ENOTSUP); 1889 1888 return; 1890 1889 } … … 1893 1892 1894 1893 errno_t rc = nic_iface->broadcast_get_mode(dev, &mode); 1895 async_answer_1(c handle, rc, mode);1894 async_answer_1(call, rc, mode); 1896 1895 } 1897 1896 1898 1897 static void remote_nic_broadcast_set_mode(ddf_fun_t *dev, void *iface, 1899 cap_call_handle_t chandle,ipc_call_t *call)1898 ipc_call_t *call) 1900 1899 { 1901 1900 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1902 1901 if (nic_iface->broadcast_set_mode == NULL) { 1903 async_answer_0(c handle, ENOTSUP);1902 async_answer_0(call, ENOTSUP); 1904 1903 return; 1905 1904 } … … 1908 1907 1909 1908 errno_t rc = nic_iface->broadcast_set_mode(dev, mode); 1910 async_answer_0(c handle, rc);1909 async_answer_0(call, rc); 1911 1910 } 1912 1911 1913 1912 static void remote_nic_defective_get_mode(ddf_fun_t *dev, void *iface, 1914 cap_call_handle_t chandle,ipc_call_t *call)1913 ipc_call_t *call) 1915 1914 { 1916 1915 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1917 1916 if (nic_iface->defective_get_mode == NULL) { 1918 async_answer_0(c handle, ENOTSUP);1917 async_answer_0(call, ENOTSUP); 1919 1918 return; 1920 1919 } … … 1923 1922 1924 1923 errno_t rc = nic_iface->defective_get_mode(dev, &mode); 1925 async_answer_1(c handle, rc, mode);1924 async_answer_1(call, rc, mode); 1926 1925 } 1927 1926 1928 1927 static void remote_nic_defective_set_mode(ddf_fun_t *dev, void *iface, 1929 cap_call_handle_t chandle,ipc_call_t *call)1928 ipc_call_t *call) 1930 1929 { 1931 1930 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1932 1931 if (nic_iface->defective_set_mode == NULL) { 1933 async_answer_0(c handle, ENOTSUP);1932 async_answer_0(call, ENOTSUP); 1934 1933 return; 1935 1934 } … … 1938 1937 1939 1938 errno_t rc = nic_iface->defective_set_mode(dev, mode); 1940 async_answer_0(c handle, rc);1939 async_answer_0(call, rc); 1941 1940 } 1942 1941 1943 1942 static void remote_nic_blocked_sources_get(ddf_fun_t *dev, void *iface, 1944 cap_call_handle_t chandle,ipc_call_t *call)1943 ipc_call_t *call) 1945 1944 { 1946 1945 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1947 1946 if (nic_iface->blocked_sources_get == NULL) { 1948 async_answer_0(c handle, ENOTSUP);1947 async_answer_0(call, ENOTSUP); 1949 1948 return; 1950 1949 } … … 1956 1955 address_list = malloc(max_count * sizeof(nic_address_t)); 1957 1956 if (!address_list) { 1958 async_answer_0(c handle, ENOMEM);1957 async_answer_0(call, ENOMEM); 1959 1958 return; 1960 1959 } … … 1968 1967 1969 1968 if ((rc != EOK) || (max_count == 0) || (address_count == 0)) { 1970 async_answer_1(c handle, rc, address_count);1969 async_answer_1(call, rc, address_count); 1971 1970 free(address_list); 1972 1971 return; 1973 1972 } 1974 1973 1975 cap_call_handle_t data_chandle;1974 ipc_call_t data; 1976 1975 size_t max_len; 1977 if (!async_data_read_receive(&data _chandle, &max_len)) {1978 async_answer_0( data_chandle, EINVAL);1979 async_answer_1(c handle, rc, address_count);1976 if (!async_data_read_receive(&data, &max_len)) { 1977 async_answer_0(&data, EINVAL); 1978 async_answer_1(call, rc, address_count); 1980 1979 free(address_list); 1981 1980 return; … … 1988 1987 max_len = max_count * sizeof(nic_address_t); 1989 1988 1990 async_data_read_finalize(data_chandle, address_list, max_len); 1991 async_answer_0(data_chandle, EINVAL); 1989 async_data_read_finalize(&data, address_list, max_len); 1992 1990 1993 1991 free(address_list); 1994 async_answer_1(c handle, rc, address_count);1992 async_answer_1(call, rc, address_count); 1995 1993 } 1996 1994 1997 1995 static void remote_nic_blocked_sources_set(ddf_fun_t *dev, void *iface, 1998 cap_call_handle_t chandle,ipc_call_t *call)1996 ipc_call_t *call) 1999 1997 { 2000 1998 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 2005 2003 2006 2004 if (address_count) { 2007 cap_call_handle_t data_chandle;2008 if (!async_data_write_receive(&data _chandle, &length)) {2009 async_answer_0( data_chandle, EINVAL);2010 async_answer_0(c handle, EINVAL);2005 ipc_call_t data; 2006 if (!async_data_write_receive(&data, &length)) { 2007 async_answer_0(&data, EINVAL); 2008 async_answer_0(call, EINVAL); 2011 2009 return; 2012 2010 } 2013 2011 2014 2012 if (length != address_count * sizeof(nic_address_t)) { 2015 async_answer_0( data_chandle, ELIMIT);2016 async_answer_0(c handle, ELIMIT);2013 async_answer_0(&data, ELIMIT); 2014 async_answer_0(call, ELIMIT); 2017 2015 return; 2018 2016 } … … 2020 2018 address_list = malloc(length); 2021 2019 if (address_list == NULL) { 2022 async_answer_0( data_chandle, ENOMEM);2023 async_answer_0(c handle, ENOMEM);2024 return; 2025 } 2026 2027 if (async_data_write_finalize( data_chandle, address_list,2020 async_answer_0(&data, ENOMEM); 2021 async_answer_0(call, ENOMEM); 2022 return; 2023 } 2024 2025 if (async_data_write_finalize(&data, address_list, 2028 2026 length) != EOK) { 2029 async_answer_0(c handle, EINVAL);2027 async_answer_0(call, EINVAL); 2030 2028 free(address_list); 2031 2029 return; … … 2036 2034 errno_t rc = nic_iface->blocked_sources_set(dev, address_list, 2037 2035 address_count); 2038 async_answer_0(c handle, rc);2036 async_answer_0(call, rc); 2039 2037 } else 2040 async_answer_0(c handle, ENOTSUP);2038 async_answer_0(call, ENOTSUP); 2041 2039 2042 2040 free(address_list); … … 2044 2042 2045 2043 static void remote_nic_vlan_get_mask(ddf_fun_t *dev, void *iface, 2046 cap_call_handle_t chandle,ipc_call_t *call)2044 ipc_call_t *call) 2047 2045 { 2048 2046 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2049 2047 if (nic_iface->vlan_get_mask == NULL) { 2050 async_answer_0(c handle, ENOTSUP);2048 async_answer_0(call, ENOTSUP); 2051 2049 return; 2052 2050 } … … 2057 2055 errno_t rc = nic_iface->vlan_get_mask(dev, &vlan_mask); 2058 2056 if (rc == EOK) { 2059 cap_call_handle_t data_chandle;2057 ipc_call_t data; 2060 2058 size_t max_len; 2061 if (!async_data_read_receive(&data _chandle, &max_len)) {2062 async_answer_0( data_chandle, EINVAL);2063 async_answer_0(c handle, EINVAL);2059 if (!async_data_read_receive(&data, &max_len)) { 2060 async_answer_0(&data, EINVAL); 2061 async_answer_0(call, EINVAL); 2064 2062 return; 2065 2063 } 2066 2064 2067 2065 if (max_len != sizeof(nic_vlan_mask_t)) { 2068 async_answer_0( data_chandle, EINVAL);2069 async_answer_0(c handle, EINVAL);2070 return; 2071 } 2072 2073 async_data_read_finalize( data_chandle, &vlan_mask, max_len);2074 } 2075 2076 async_answer_0(c handle, rc);2066 async_answer_0(&data, EINVAL); 2067 async_answer_0(call, EINVAL); 2068 return; 2069 } 2070 2071 async_data_read_finalize(&data, &vlan_mask, max_len); 2072 } 2073 2074 async_answer_0(call, rc); 2077 2075 } 2078 2076 2079 2077 static void remote_nic_vlan_set_mask(ddf_fun_t *dev, void *iface, 2080 cap_call_handle_t chandle,ipc_call_t *call)2078 ipc_call_t *call) 2081 2079 { 2082 2080 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 2087 2085 2088 2086 if (vlan_mask_set) { 2089 cap_call_handle_t data_chandle;2087 ipc_call_t data; 2090 2088 size_t length; 2091 if (!async_data_write_receive(&data _chandle, &length)) {2092 async_answer_0( data_chandle, EINVAL);2093 async_answer_0(c handle, EINVAL);2089 if (!async_data_write_receive(&data, &length)) { 2090 async_answer_0(&data, EINVAL); 2091 async_answer_0(call, EINVAL); 2094 2092 return; 2095 2093 } 2096 2094 2097 2095 if (length != sizeof(nic_vlan_mask_t)) { 2098 async_answer_0( data_chandle, ELIMIT);2099 async_answer_0(c handle, ELIMIT);2100 return; 2101 } 2102 2103 if (async_data_write_finalize( data_chandle, &vlan_mask,2096 async_answer_0(&data, ELIMIT); 2097 async_answer_0(call, ELIMIT); 2098 return; 2099 } 2100 2101 if (async_data_write_finalize(&data, &vlan_mask, 2104 2102 length) != EOK) { 2105 async_answer_0(c handle, EINVAL);2103 async_answer_0(call, EINVAL); 2106 2104 return; 2107 2105 } … … 2112 2110 if (nic_iface->vlan_set_mask != NULL) { 2113 2111 errno_t rc = nic_iface->vlan_set_mask(dev, vlan_mask_pointer); 2114 async_answer_0(c handle, rc);2112 async_answer_0(call, rc); 2115 2113 } else 2116 async_answer_0(c handle, ENOTSUP);2114 async_answer_0(call, ENOTSUP); 2117 2115 } 2118 2116 2119 2117 static void remote_nic_vlan_set_tag(ddf_fun_t *dev, void *iface, 2120 cap_call_handle_t chandle,ipc_call_t *call)2118 ipc_call_t *call) 2121 2119 { 2122 2120 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2123 2121 2124 2122 if (nic_iface->vlan_set_tag == NULL) { 2125 async_answer_0(c handle, ENOTSUP);2123 async_answer_0(call, ENOTSUP); 2126 2124 return; 2127 2125 } … … 2132 2130 2133 2131 errno_t rc = nic_iface->vlan_set_tag(dev, tag, add, strip); 2134 async_answer_0(c handle, rc);2132 async_answer_0(call, rc); 2135 2133 } 2136 2134 2137 2135 static void remote_nic_wol_virtue_add(ddf_fun_t *dev, void *iface, 2138 cap_call_handle_t chandle,ipc_call_t *call)2136 ipc_call_t *call) 2139 2137 { 2140 2138 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2141 2139 2142 2140 int send_data = (int) IPC_GET_ARG3(*call); 2143 cap_call_handle_t data_chandle;2141 ipc_call_t data; 2144 2142 2145 2143 if (nic_iface->wol_virtue_add == NULL) { 2146 2144 if (send_data) { 2147 async_data_write_receive(&data _chandle, NULL);2148 async_answer_0( data_chandle, ENOTSUP);2149 } 2150 2151 async_answer_0(c handle, ENOTSUP);2145 async_data_write_receive(&data, NULL); 2146 async_answer_0(&data, ENOTSUP); 2147 } 2148 2149 async_answer_0(call, ENOTSUP); 2152 2150 } 2153 2151 2154 2152 size_t length = 0; 2155 void * data= NULL;2153 void *virtue = NULL; 2156 2154 2157 2155 if (send_data) { 2158 if (!async_data_write_receive(&data _chandle, &length)) {2159 async_answer_0( data_chandle, EINVAL);2160 async_answer_0(c handle, EINVAL);2161 return; 2162 } 2163 2164 data= malloc(length);2165 if ( data== NULL) {2166 async_answer_0( data_chandle, ENOMEM);2167 async_answer_0(c handle, ENOMEM);2168 return; 2169 } 2170 2171 if (async_data_write_finalize( data_chandle, data,2156 if (!async_data_write_receive(&data, &length)) { 2157 async_answer_0(&data, EINVAL); 2158 async_answer_0(call, EINVAL); 2159 return; 2160 } 2161 2162 virtue = malloc(length); 2163 if (virtue == NULL) { 2164 async_answer_0(&data, ENOMEM); 2165 async_answer_0(call, ENOMEM); 2166 return; 2167 } 2168 2169 if (async_data_write_finalize(&data, virtue, 2172 2170 length) != EOK) { 2173 async_answer_0(c handle, EINVAL);2174 free( data);2171 async_answer_0(call, EINVAL); 2172 free(virtue); 2175 2173 return; 2176 2174 } … … 2180 2178 nic_wv_type_t type = (nic_wv_type_t) IPC_GET_ARG2(*call); 2181 2179 2182 errno_t rc = nic_iface->wol_virtue_add(dev, type, data, length, &id);2183 async_answer_1(c handle, rc, (sysarg_t) id);2184 free( data);2180 errno_t rc = nic_iface->wol_virtue_add(dev, type, virtue, length, &id); 2181 async_answer_1(call, rc, (sysarg_t) id); 2182 free(virtue); 2185 2183 } 2186 2184 2187 2185 static void remote_nic_wol_virtue_remove(ddf_fun_t *dev, void *iface, 2188 cap_call_handle_t chandle,ipc_call_t *call)2186 ipc_call_t *call) 2189 2187 { 2190 2188 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2191 2189 2192 2190 if (nic_iface->wol_virtue_remove == NULL) { 2193 async_answer_0(c handle, ENOTSUP);2191 async_answer_0(call, ENOTSUP); 2194 2192 return; 2195 2193 } … … 2198 2196 2199 2197 errno_t rc = nic_iface->wol_virtue_remove(dev, id); 2200 async_answer_0(c handle, rc);2198 async_answer_0(call, rc); 2201 2199 } 2202 2200 2203 2201 static void remote_nic_wol_virtue_probe(ddf_fun_t *dev, void *iface, 2204 cap_call_handle_t chandle,ipc_call_t *call)2202 ipc_call_t *call) 2205 2203 { 2206 2204 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2207 2205 2208 2206 if (nic_iface->wol_virtue_probe == NULL) { 2209 async_answer_0(c handle, ENOTSUP);2207 async_answer_0(call, ENOTSUP); 2210 2208 return; 2211 2209 } … … 2215 2213 nic_wv_type_t type = NIC_WV_NONE; 2216 2214 size_t length = 0; 2217 cap_call_handle_t data_chandle;2218 void * data= NULL;2215 ipc_call_t data; 2216 void *virtue = NULL; 2219 2217 2220 2218 if (max_length != 0) { 2221 data= malloc(max_length);2222 if ( data== NULL) {2223 async_answer_0(c handle, ENOMEM);2224 return; 2225 } 2226 } 2227 2228 memset( data, 0, max_length);2219 virtue = malloc(max_length); 2220 if (virtue == NULL) { 2221 async_answer_0(call, ENOMEM); 2222 return; 2223 } 2224 } 2225 2226 memset(virtue, 0, max_length); 2229 2227 2230 2228 errno_t rc = nic_iface->wol_virtue_probe(dev, id, &type, max_length, 2231 data, &length);2229 virtue, &length); 2232 2230 2233 2231 if ((max_length != 0) && (length != 0)) { 2234 2232 size_t req_length; 2235 if (!async_data_read_receive(&data _chandle, &req_length)) {2236 async_answer_0( data_chandle, EINVAL);2237 async_answer_0(c handle, EINVAL);2238 free( data);2233 if (!async_data_read_receive(&data, &req_length)) { 2234 async_answer_0(&data, EINVAL); 2235 async_answer_0(call, EINVAL); 2236 free(virtue); 2239 2237 return; 2240 2238 } … … 2246 2244 req_length = max_length; 2247 2245 2248 async_data_read_finalize( data_chandle, data, req_length);2249 } 2250 2251 async_answer_2(c handle, rc, (sysarg_t) type, (sysarg_t) length);2252 free( data);2246 async_data_read_finalize(&data, virtue, req_length); 2247 } 2248 2249 async_answer_2(call, rc, (sysarg_t) type, (sysarg_t) length); 2250 free(virtue); 2253 2251 } 2254 2252 2255 2253 static void remote_nic_wol_virtue_list(ddf_fun_t *dev, void *iface, 2256 cap_call_handle_t chandle,ipc_call_t *call)2254 ipc_call_t *call) 2257 2255 { 2258 2256 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2259 2257 if (nic_iface->wol_virtue_list == NULL) { 2260 async_answer_0(c handle, ENOTSUP);2258 async_answer_0(call, ENOTSUP); 2261 2259 return; 2262 2260 } … … 2266 2264 size_t count = 0; 2267 2265 nic_wv_id_t *id_list = NULL; 2268 cap_call_handle_t data_chandle;2266 ipc_call_t data; 2269 2267 2270 2268 if (max_count != 0) { 2271 2269 id_list = malloc(max_count * sizeof(nic_wv_id_t)); 2272 2270 if (id_list == NULL) { 2273 async_answer_0(c handle, ENOMEM);2271 async_answer_0(call, ENOMEM); 2274 2272 return; 2275 2273 } … … 2283 2281 if ((max_count != 0) && (count != 0)) { 2284 2282 size_t req_length; 2285 if (!async_data_read_receive(&data _chandle, &req_length)) {2286 async_answer_0( data_chandle, EINVAL);2287 async_answer_0(c handle, EINVAL);2283 if (!async_data_read_receive(&data, &req_length)) { 2284 async_answer_0(&data, EINVAL); 2285 async_answer_0(call, EINVAL); 2288 2286 free(id_list); 2289 2287 return; … … 2296 2294 req_length = max_count * sizeof(nic_wv_id_t); 2297 2295 2298 rc = async_data_read_finalize( data_chandle, id_list, req_length);2299 } 2300 2301 async_answer_1(c handle, rc, (sysarg_t) count);2296 rc = async_data_read_finalize(&data, id_list, req_length); 2297 } 2298 2299 async_answer_1(call, rc, (sysarg_t) count); 2302 2300 free(id_list); 2303 2301 } 2304 2302 2305 2303 static void remote_nic_wol_virtue_get_caps(ddf_fun_t *dev, void *iface, 2306 cap_call_handle_t chandle,ipc_call_t *call)2304 ipc_call_t *call) 2307 2305 { 2308 2306 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2309 2307 if (nic_iface->wol_virtue_get_caps == NULL) { 2310 async_answer_0(c handle, ENOTSUP);2308 async_answer_0(call, ENOTSUP); 2311 2309 return; 2312 2310 } … … 2316 2314 2317 2315 errno_t rc = nic_iface->wol_virtue_get_caps(dev, type, &count); 2318 async_answer_1(c handle, rc, (sysarg_t) count);2316 async_answer_1(call, rc, (sysarg_t) count); 2319 2317 } 2320 2318 2321 2319 static void remote_nic_wol_load_info(ddf_fun_t *dev, void *iface, 2322 cap_call_handle_t chandle,ipc_call_t *call)2320 ipc_call_t *call) 2323 2321 { 2324 2322 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2325 2323 if (nic_iface->wol_load_info == NULL) { 2326 async_answer_0(c handle, ENOTSUP);2324 async_answer_0(call, ENOTSUP); 2327 2325 return; 2328 2326 } … … 2331 2329 size_t frame_length = 0; 2332 2330 nic_wv_type_t type = NIC_WV_NONE; 2333 uint8_t * data= NULL;2331 uint8_t *info = NULL; 2334 2332 2335 2333 if (max_length != 0) { 2336 data= malloc(max_length);2337 if ( data== NULL) {2338 async_answer_0(c handle, ENOMEM);2339 return; 2340 } 2341 } 2342 2343 memset( data, 0, max_length);2344 2345 errno_t rc = nic_iface->wol_load_info(dev, &type, max_length, data,2334 info = malloc(max_length); 2335 if (info == NULL) { 2336 async_answer_0(call, ENOMEM); 2337 return; 2338 } 2339 } 2340 2341 memset(info, 0, max_length); 2342 2343 errno_t rc = nic_iface->wol_load_info(dev, &type, max_length, info, 2346 2344 &frame_length); 2347 2345 if (rc == EOK) { 2348 cap_call_handle_t data_chandle;2346 ipc_call_t data; 2349 2347 size_t req_length; 2350 if (!async_data_read_receive(&data _chandle, &req_length)) {2351 async_answer_0( data_chandle, EINVAL);2352 async_answer_0(c handle, EINVAL);2353 free( data);2348 if (!async_data_read_receive(&data, &req_length)) { 2349 async_answer_0(&data, EINVAL); 2350 async_answer_0(call, EINVAL); 2351 free(info); 2354 2352 return; 2355 2353 } … … 2357 2355 req_length = req_length > max_length ? max_length : req_length; 2358 2356 req_length = req_length > frame_length ? frame_length : req_length; 2359 async_data_read_finalize( data_chandle, data, req_length);2360 } 2361 2362 async_answer_2(c handle, rc, (sysarg_t) type, (sysarg_t) frame_length);2363 free( data);2357 async_data_read_finalize(&data, info, req_length); 2358 } 2359 2360 async_answer_2(call, rc, (sysarg_t) type, (sysarg_t) frame_length); 2361 free(info); 2364 2362 } 2365 2363 2366 2364 static void remote_nic_offload_probe(ddf_fun_t *dev, void *iface, 2367 cap_call_handle_t chandle,ipc_call_t *call)2365 ipc_call_t *call) 2368 2366 { 2369 2367 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2370 2368 if (nic_iface->offload_probe == NULL) { 2371 async_answer_0(c handle, ENOTSUP);2369 async_answer_0(call, ENOTSUP); 2372 2370 return; 2373 2371 } … … 2377 2375 2378 2376 errno_t rc = nic_iface->offload_probe(dev, &supported, &active); 2379 async_answer_2(c handle, rc, supported, active);2377 async_answer_2(call, rc, supported, active); 2380 2378 } 2381 2379 2382 2380 static void remote_nic_offload_set(ddf_fun_t *dev, void *iface, 2383 cap_call_handle_t chandle,ipc_call_t *call)2381 ipc_call_t *call) 2384 2382 { 2385 2383 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2386 2384 if (nic_iface->offload_set == NULL) { 2387 async_answer_0(c handle, ENOTSUP);2385 async_answer_0(call, ENOTSUP); 2388 2386 return; 2389 2387 } … … 2393 2391 2394 2392 errno_t rc = nic_iface->offload_set(dev, mask, active); 2395 async_answer_0(c handle, rc);2393 async_answer_0(call, rc); 2396 2394 } 2397 2395 2398 2396 static void remote_nic_poll_get_mode(ddf_fun_t *dev, void *iface, 2399 cap_call_handle_t chandle,ipc_call_t *call)2397 ipc_call_t *call) 2400 2398 { 2401 2399 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2402 2400 if (nic_iface->poll_get_mode == NULL) { 2403 async_answer_0(c handle, ENOTSUP);2401 async_answer_0(call, ENOTSUP); 2404 2402 return; 2405 2403 } … … 2414 2412 errno_t rc = nic_iface->poll_get_mode(dev, &mode, &period); 2415 2413 if ((rc == EOK) && (request_data)) { 2414 ipc_call_t data; 2416 2415 size_t max_len; 2417 cap_call_handle_t data_chandle; 2418 2419 if (!async_data_read_receive(&data_chandle, &max_len)) { 2420 async_answer_0(data_chandle, EINVAL); 2421 async_answer_0(chandle, EINVAL); 2416 2417 if (!async_data_read_receive(&data, &max_len)) { 2418 async_answer_0(&data, EINVAL); 2419 async_answer_0(call, EINVAL); 2422 2420 return; 2423 2421 } 2424 2422 2425 2423 if (max_len != sizeof(struct timeval)) { 2426 async_answer_0( data_chandle, ELIMIT);2427 async_answer_0(c handle, ELIMIT);2428 return; 2429 } 2430 2431 async_data_read_finalize( data_chandle, &period,2424 async_answer_0(&data, ELIMIT); 2425 async_answer_0(call, ELIMIT); 2426 return; 2427 } 2428 2429 async_data_read_finalize(&data, &period, 2432 2430 sizeof(struct timeval)); 2433 2431 } 2434 2432 2435 async_answer_1(c handle, rc, (sysarg_t) mode);2433 async_answer_1(call, rc, (sysarg_t) mode); 2436 2434 } 2437 2435 2438 2436 static void remote_nic_poll_set_mode(ddf_fun_t *dev, void *iface, 2439 cap_call_handle_t chandle,ipc_call_t *call)2437 ipc_call_t *call) 2440 2438 { 2441 2439 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 2448 2446 2449 2447 if (has_period) { 2450 cap_call_handle_t data_chandle;2451 if (!async_data_write_receive(&data _chandle, &length)) {2452 async_answer_0( data_chandle, EINVAL);2453 async_answer_0(c handle, EINVAL);2448 ipc_call_t data; 2449 if (!async_data_write_receive(&data, &length)) { 2450 async_answer_0(&data, EINVAL); 2451 async_answer_0(call, EINVAL); 2454 2452 return; 2455 2453 } 2456 2454 2457 2455 if (length != sizeof(struct timeval)) { 2458 async_answer_0( data_chandle, ELIMIT);2459 async_answer_0(c handle, ELIMIT);2456 async_answer_0(&data, ELIMIT); 2457 async_answer_0(call, ELIMIT); 2460 2458 return; 2461 2459 } 2462 2460 2463 2461 period = &period_buf; 2464 if (async_data_write_finalize( data_chandle, period,2462 if (async_data_write_finalize(&data, period, 2465 2463 length) != EOK) { 2466 async_answer_0(c handle, EINVAL);2464 async_answer_0(call, EINVAL); 2467 2465 return; 2468 2466 } … … 2471 2469 if (nic_iface->poll_set_mode != NULL) { 2472 2470 errno_t rc = nic_iface->poll_set_mode(dev, mode, period); 2473 async_answer_0(c handle, rc);2471 async_answer_0(call, rc); 2474 2472 } else 2475 async_answer_0(c handle, ENOTSUP);2473 async_answer_0(call, ENOTSUP); 2476 2474 } 2477 2475 2478 2476 static void remote_nic_poll_now(ddf_fun_t *dev, void *iface, 2479 cap_call_handle_t chandle,ipc_call_t *call)2477 ipc_call_t *call) 2480 2478 { 2481 2479 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2482 2480 if (nic_iface->poll_now == NULL) { 2483 async_answer_0(c handle, ENOTSUP);2481 async_answer_0(call, ENOTSUP); 2484 2482 return; 2485 2483 } 2486 2484 2487 2485 errno_t rc = nic_iface->poll_now(dev); 2488 async_answer_0(c handle, rc);2486 async_answer_0(call, rc); 2489 2487 } 2490 2488
Note:
See TracChangeset
for help on using the changeset viewer.