Commit 5dc7c779 authored by David S. Miller's avatar David S. Miller
parents 2a304bb8 163049ae
...@@ -823,14 +823,14 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl, ...@@ -823,14 +823,14 @@ static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
return -EFAULT; return -EFAULT;
return vhost_net_set_backend(n, backend.index, backend.fd); return vhost_net_set_backend(n, backend.index, backend.fd);
case VHOST_GET_FEATURES: case VHOST_GET_FEATURES:
features = VHOST_FEATURES; features = VHOST_NET_FEATURES;
if (copy_to_user(featurep, &features, sizeof features)) if (copy_to_user(featurep, &features, sizeof features))
return -EFAULT; return -EFAULT;
return 0; return 0;
case VHOST_SET_FEATURES: case VHOST_SET_FEATURES:
if (copy_from_user(&features, featurep, sizeof features)) if (copy_from_user(&features, featurep, sizeof features))
return -EFAULT; return -EFAULT;
if (features & ~VHOST_FEATURES) if (features & ~VHOST_NET_FEATURES)
return -EOPNOTSUPP; return -EOPNOTSUPP;
return vhost_net_set_features(n, features); return vhost_net_set_features(n, features);
case VHOST_RESET_OWNER: case VHOST_RESET_OWNER:
......
...@@ -261,14 +261,14 @@ static long vhost_test_ioctl(struct file *f, unsigned int ioctl, ...@@ -261,14 +261,14 @@ static long vhost_test_ioctl(struct file *f, unsigned int ioctl,
return -EFAULT; return -EFAULT;
return vhost_test_run(n, test); return vhost_test_run(n, test);
case VHOST_GET_FEATURES: case VHOST_GET_FEATURES:
features = VHOST_FEATURES; features = VHOST_NET_FEATURES;
if (copy_to_user(featurep, &features, sizeof features)) if (copy_to_user(featurep, &features, sizeof features))
return -EFAULT; return -EFAULT;
return 0; return 0;
case VHOST_SET_FEATURES: case VHOST_SET_FEATURES:
if (copy_from_user(&features, featurep, sizeof features)) if (copy_from_user(&features, featurep, sizeof features))
return -EFAULT; return -EFAULT;
if (features & ~VHOST_FEATURES) if (features & ~VHOST_NET_FEATURES)
return -EOPNOTSUPP; return -EOPNOTSUPP;
return vhost_test_set_features(n, features); return vhost_test_set_features(n, features);
case VHOST_RESET_OWNER: case VHOST_RESET_OWNER:
......
...@@ -64,7 +64,7 @@ static int vhost_poll_wakeup(wait_queue_t *wait, unsigned mode, int sync, ...@@ -64,7 +64,7 @@ static int vhost_poll_wakeup(wait_queue_t *wait, unsigned mode, int sync,
return 0; return 0;
} }
static void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn) void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn)
{ {
INIT_LIST_HEAD(&work->node); INIT_LIST_HEAD(&work->node);
work->fn = fn; work->fn = fn;
...@@ -137,8 +137,7 @@ void vhost_poll_flush(struct vhost_poll *poll) ...@@ -137,8 +137,7 @@ void vhost_poll_flush(struct vhost_poll *poll)
vhost_work_flush(poll->dev, &poll->work); vhost_work_flush(poll->dev, &poll->work);
} }
static inline void vhost_work_queue(struct vhost_dev *dev, void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work)
struct vhost_work *work)
{ {
unsigned long flags; unsigned long flags;
......
...@@ -43,6 +43,9 @@ struct vhost_poll { ...@@ -43,6 +43,9 @@ struct vhost_poll {
struct vhost_dev *dev; struct vhost_dev *dev;
}; };
void vhost_work_init(struct vhost_work *work, vhost_work_fn_t fn);
void vhost_work_queue(struct vhost_dev *dev, struct vhost_work *work);
void vhost_poll_init(struct vhost_poll *poll, vhost_work_fn_t fn, void vhost_poll_init(struct vhost_poll *poll, vhost_work_fn_t fn,
unsigned long mask, struct vhost_dev *dev); unsigned long mask, struct vhost_dev *dev);
void vhost_poll_start(struct vhost_poll *poll, struct file *file); void vhost_poll_start(struct vhost_poll *poll, struct file *file);
...@@ -201,7 +204,8 @@ enum { ...@@ -201,7 +204,8 @@ enum {
VHOST_FEATURES = (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) | VHOST_FEATURES = (1ULL << VIRTIO_F_NOTIFY_ON_EMPTY) |
(1ULL << VIRTIO_RING_F_INDIRECT_DESC) | (1ULL << VIRTIO_RING_F_INDIRECT_DESC) |
(1ULL << VIRTIO_RING_F_EVENT_IDX) | (1ULL << VIRTIO_RING_F_EVENT_IDX) |
(1ULL << VHOST_F_LOG_ALL) | (1ULL << VHOST_F_LOG_ALL),
VHOST_NET_FEATURES = VHOST_FEATURES |
(1ULL << VHOST_NET_F_VIRTIO_NET_HDR) | (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) |
(1ULL << VIRTIO_NET_F_MRG_RXBUF), (1ULL << VIRTIO_NET_F_MRG_RXBUF),
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment