diff options
author | 2024-10-01 18:16:29 +0300 | |
---|---|---|
committer | 2024-10-01 15:36:35 +0000 | |
commit | 9941dec970111be9e02dcaf6819c037946bde160 (patch) | |
tree | bea826b7fc861fe09c53d43f60d1a7d464e4cf9b /include/vhost_user_can.h | |
parent | 1cc834724919caf5ea21c146b29f62b6cd213db7 (diff) |
Add multiple-device support virtio-loopback-adapter
Updates [v1]:
- The adapter supports multiple vhost-user devices running in
parallel.
- Redesign the devices interfaces. Unified their common functionality
and add it into vhost-user-loopback lib. This eases the addition of
new vhost-user devices and makes the virtio-loopback adapter more
device agnostic.
Bug-AGL: SPEC-4834
Change-Id: I9aff91dce0207ccdd8c2d1c5d0769a13b4e9ae04
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
Diffstat (limited to 'include/vhost_user_can.h')
-rw-r--r-- | include/vhost_user_can.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/include/vhost_user_can.h b/include/vhost_user_can.h new file mode 100644 index 0000000..4768499 --- /dev/null +++ b/include/vhost_user_can.h @@ -0,0 +1,54 @@ +/* + * Virtio CAN Device + * + * Based on virtio_can.h of OpenSynergy's virtio-can RFC + * https://github.com/OpenSynergy/qemu/tree/virtio-can-spec-rfc-v3 + * + * Copyright (C) 2021-2023 OpenSynergy GmbH + * Copyright (c) 2023 Virtual Open Systems SAS. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef VHOST_USER_CAN +#define VHOST_USER_CAN + +#include "virtio_loopback.h" +#include "vhost_loopback.h" +#include "vhost_user_loopback.h" + +/* The following are defined into virtio_can.h -- Delete them in the future */ +#define VIRTIO_CAN_S_CTRL_BUSOFF (1u << 0) /* Controller BusOff */ +struct virtio_can_config { + /* CAN controller status */ + __le16 status; +}; + +typedef struct VHostUserCan { + VirtIODevice *parent; + struct vhost_virtqueue *vhost_vqs; + VirtQueue **virtqs; + uint16_t num_queues; + uint32_t queue_size; + struct virtio_can_config config; + struct vhost_dev *vhost_dev; + /* Support classic CAN */ + bool support_can_classic; + /* Support CAN FD */ + bool support_can_fd; +} VHostUserCan; + +void vhost_user_can_realize(struct adapter_dev *adev); + +#endif /* VHOST_USER_CAN */ |