git.droids-corp.org
/
dpdk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mempool/octeontx: fix dependency
[dpdk.git]
/
lib
/
librte_vhost
/
vhost_user.c
diff --git
a/lib/librte_vhost/vhost_user.c
b/lib/librte_vhost/vhost_user.c
index
f63258c
..
76c4eec
100644
(file)
--- a/
lib/librte_vhost/vhost_user.c
+++ b/
lib/librte_vhost/vhost_user.c
@@
-314,6
+314,9
@@
out:
dev->virtqueue[index] = vq;
vhost_devices[dev->vid] = dev;
dev->virtqueue[index] = vq;
vhost_devices[dev->vid] = dev;
+ if (old_vq != vq)
+ vhost_user_iotlb_init(dev, index);
+
return dev;
}
#else
return dev;
}
#else
@@
-417,6
+420,7
@@
translate_ring_addresses(struct virtio_net *dev, int vq_index)
dev = numa_realloc(dev, vq_index);
vq = dev->virtqueue[vq_index];
dev = numa_realloc(dev, vq_index);
vq = dev->virtqueue[vq_index];
+ addr = &vq->ring_addrs;
vq->avail = (struct vring_avail *)(uintptr_t)ring_addr_to_vva(dev,
vq, addr->avail_user_addr, sizeof(struct vring_avail));
vq->avail = (struct vring_avail *)(uintptr_t)ring_addr_to_vva(dev,
vq, addr->avail_user_addr, sizeof(struct vring_avail));
@@
-1142,7
+1146,7
@@
vhost_user_check_and_alloc_queue_pair(struct virtio_net *dev, VhostUserMsg *msg)
{
uint16_t vring_idx;
{
uint16_t vring_idx;
- switch (msg->request) {
+ switch (msg->request
.master
) {
case VHOST_USER_SET_VRING_KICK:
case VHOST_USER_SET_VRING_CALL:
case VHOST_USER_SET_VRING_ERR:
case VHOST_USER_SET_VRING_KICK:
case VHOST_USER_SET_VRING_CALL:
case VHOST_USER_SET_VRING_ERR:
@@
-1194,7
+1198,7
@@
vhost_user_msg_handler(int vid, int fd)
}
ret = read_vhost_message(fd, &msg);
}
ret = read_vhost_message(fd, &msg);
- if (ret <= 0 || msg.request >= VHOST_USER_MAX) {
+ if (ret <= 0 || msg.request
.master
>= VHOST_USER_MAX) {
if (ret < 0)
RTE_LOG(ERR, VHOST_CONFIG,
"vhost read message failed\n");
if (ret < 0)
RTE_LOG(ERR, VHOST_CONFIG,
"vhost read message failed\n");
@@
-1209,12
+1213,12
@@
vhost_user_msg_handler(int vid, int fd)
}
ret = 0;
}
ret = 0;
- if (msg.request != VHOST_USER_IOTLB_MSG)
+ if (msg.request
.master
!= VHOST_USER_IOTLB_MSG)
RTE_LOG(INFO, VHOST_CONFIG, "read message %s\n",
RTE_LOG(INFO, VHOST_CONFIG, "read message %s\n",
- vhost_message_str[msg.request]);
+ vhost_message_str[msg.request
.master
]);
else
RTE_LOG(DEBUG, VHOST_CONFIG, "read message %s\n",
else
RTE_LOG(DEBUG, VHOST_CONFIG, "read message %s\n",
- vhost_message_str[msg.request]);
+ vhost_message_str[msg.request
.master
]);
ret = vhost_user_check_and_alloc_queue_pair(dev, &msg);
if (ret < 0) {
ret = vhost_user_check_and_alloc_queue_pair(dev, &msg);
if (ret < 0) {
@@
-1223,7
+1227,7
@@
vhost_user_msg_handler(int vid, int fd)
return -1;
}
return -1;
}
- switch (msg.request) {
+ switch (msg.request
.master
) {
case VHOST_USER_GET_FEATURES:
msg.payload.u64 = vhost_user_get_features(dev);
msg.size = sizeof(msg.payload.u64);
case VHOST_USER_GET_FEATURES:
msg.payload.u64 = vhost_user_get_features(dev);
msg.size = sizeof(msg.payload.u64);
@@
-1353,7
+1357,7
@@
vhost_user_iotlb_miss(struct virtio_net *dev, uint64_t iova, uint8_t perm)
{
int ret;
struct VhostUserMsg msg = {
{
int ret;
struct VhostUserMsg msg = {
- .request
= (enum VhostUserRequest)
VHOST_USER_SLAVE_IOTLB_MSG,
+ .request
.slave =
VHOST_USER_SLAVE_IOTLB_MSG,
.flags = VHOST_USER_VERSION,
.size = sizeof(msg.payload.iotlb),
.payload.iotlb = {
.flags = VHOST_USER_VERSION,
.size = sizeof(msg.payload.iotlb),
.payload.iotlb = {