From 0a087aee29b4056fd9ce73462b75b97e7d2b7eff Mon Sep 17 00:00:00 2001 From: Jakub Jermar Date: Wed, 30 May 2018 22:42:58 +0200 Subject: [PATCH] Add basic nic_iface_t ops for virtio-net --- uspace/drv/nic/virtio-net/virtio-net.c | 36 +++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/uspace/drv/nic/virtio-net/virtio-net.c b/uspace/drv/nic/virtio-net/virtio-net.c index 77285db83..53041552d 100644 --- a/uspace/drv/nic/virtio-net/virtio-net.c +++ b/uspace/drv/nic/virtio-net/virtio-net.c @@ -294,7 +294,41 @@ error: return rc; } -static nic_iface_t virtio_net_nic_iface; +static errno_t virtio_net_get_device_info(ddf_fun_t *fun, + nic_device_info_t *info) +{ + nic_t *nic_data = nic_get_from_ddf_fun(fun); + if (!nic_data) + return ENOENT; + + str_cpy(info->vendor_name, sizeof(info->vendor_name), "Red Hat, Inc."); + str_cpy(info->model_name, sizeof(info->model_name), + "Virtio network device"); + + return EOK; +} + +static errno_t virtio_net_get_cable_state(ddf_fun_t *fun, + nic_cable_state_t *state) +{ + *state = NIC_CS_PLUGGED; + return EOK; +} + +static errno_t virtio_net_get_operation_mode(ddf_fun_t *fun, int *speed, + nic_channel_mode_t *duplex, nic_role_t *role) +{ + *speed = 1000; + *duplex = NIC_CM_FULL_DUPLEX; + *role = NIC_ROLE_UNKNOWN; + return EOK; +} + +static nic_iface_t virtio_net_nic_iface = { + .get_device_info = virtio_net_get_device_info, + .get_cable_state = virtio_net_get_cable_state, + .get_operation_mode = virtio_net_get_operation_mode, +}; int main(void) { -- 2.11.4.GIT