blob: 4f37b851a2aba71921bab110fc5a899aeeb57dfb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/*
* 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-2024 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;
VirtQueue *ctrl_vq;
VirtQueue *tx_vq;
VirtQueue *rx_vq;
/* Support classic CAN */
bool support_can_classic;
/* Support CAN FD */
bool support_can_fd;
} VHostUserCan;
void vhost_user_can_realize(int queue_num, int queue_size);
#endif /* VHOST_USER_CAN */
|