3f63c19b2b
The async vhost callback ops should return negative value when there are something wrong in the callback, so the return type should be changed into int32_t. The issue in vhost example is also fixed. Fixes:cd6760da10
("vhost: introduce async enqueue for split ring") Fixes:819a716858
("vhost: fix async callback return type") Fixes:6b3c81db8b
("vhost: simplify async copy completion") Fixes:abec60e711
("examples/vhost: support vhost async data path") Fixes:6e9a9d2a02
("examples/vhost: fix ioat dependency") Fixes:873e8dad6f
("vhost: support packed ring in async datapath") Cc: stable@dpdk.org Signed-off-by: Cheng Jiang <cheng1.jiang@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
64 lines
1.4 KiB
C
64 lines
1.4 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2010-2020 Intel Corporation
|
|
*/
|
|
|
|
#ifndef _IOAT_H_
|
|
#define _IOAT_H_
|
|
|
|
#include <rte_vhost.h>
|
|
#include <rte_pci.h>
|
|
#include <rte_vhost_async.h>
|
|
|
|
#define MAX_VHOST_DEVICE 1024
|
|
#define IOAT_RING_SIZE 4096
|
|
#define MAX_ENQUEUED_SIZE 4096
|
|
|
|
struct dma_info {
|
|
struct rte_pci_addr addr;
|
|
uint16_t dev_id;
|
|
bool is_valid;
|
|
};
|
|
|
|
struct dma_for_vhost {
|
|
struct dma_info dmas[RTE_MAX_QUEUES_PER_PORT * 2];
|
|
uint16_t nr;
|
|
};
|
|
|
|
#ifdef RTE_RAW_IOAT
|
|
int open_ioat(const char *value);
|
|
|
|
int32_t
|
|
ioat_transfer_data_cb(int vid, uint16_t queue_id,
|
|
struct rte_vhost_async_desc *descs,
|
|
struct rte_vhost_async_status *opaque_data, uint16_t count);
|
|
|
|
int32_t
|
|
ioat_check_completed_copies_cb(int vid, uint16_t queue_id,
|
|
struct rte_vhost_async_status *opaque_data,
|
|
uint16_t max_packets);
|
|
#else
|
|
static int open_ioat(const char *value __rte_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static int32_t
|
|
ioat_transfer_data_cb(int vid __rte_unused, uint16_t queue_id __rte_unused,
|
|
struct rte_vhost_async_desc *descs __rte_unused,
|
|
struct rte_vhost_async_status *opaque_data __rte_unused,
|
|
uint16_t count __rte_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
static int32_t
|
|
ioat_check_completed_copies_cb(int vid __rte_unused,
|
|
uint16_t queue_id __rte_unused,
|
|
struct rte_vhost_async_status *opaque_data __rte_unused,
|
|
uint16_t max_packets __rte_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
#endif
|
|
#endif /* _IOAT_H_ */
|