Since we now allow some parameter checking inside the driver info_get()
functions, it makes sense to allow error return from those functions to the
caller. Therefore we change the driver callback return type from void to
int.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Rosen Xu <rosen.xu@intel.com>
Acked-by: Nipun Gupta <nipun.gupta@nxp.com>
``rte_rawdev_info_get()``,
allowing limited driver type-checking and ABI compatibility.
``rte_rawdev_info_get()``,
allowing limited driver type-checking and ABI compatibility.
+* rawdev: Changed the return type of the function ``rte_dev_info_get()``
+ from ``void`` to ``int`` allowing the return of error codes from drivers.
+
ifpga_rawdev_info_get(struct rte_rawdev *dev,
rte_rawdev_obj_t dev_info,
size_t dev_info_size)
ifpga_rawdev_info_get(struct rte_rawdev *dev,
rte_rawdev_obj_t dev_info,
size_t dev_info_size)
if (!dev_info || dev_info_size != sizeof(*afu_dev)) {
IFPGA_RAWDEV_PMD_ERR("Invalid request");
if (!dev_info || dev_info_size != sizeof(*afu_dev)) {
IFPGA_RAWDEV_PMD_ERR("Invalid request");
}
adapter = ifpga_rawdev_get_priv(dev);
if (!adapter)
}
adapter = ifpga_rawdev_get_priv(dev);
if (!adapter)
afu_dev = dev_info;
afu_dev->rawdev = dev;
afu_dev = dev_info;
afu_dev->rawdev = dev;
if (ifpga_fill_afu_dev(acc, afu_dev)) {
IFPGA_RAWDEV_PMD_ERR("cannot get info\n");
if (ifpga_fill_afu_dev(acc, afu_dev)) {
IFPGA_RAWDEV_PMD_ERR("cannot get info\n");
/* get LineSide BAR Index */
if (opae_manager_get_eth_group_region_info(mgr, 0,
&opae_lside_eth_info)) {
/* get LineSide BAR Index */
if (opae_manager_get_eth_group_region_info(mgr, 0,
&opae_lside_eth_info)) {
}
lside_bar_idx = opae_lside_eth_info.mem_idx;
/* get NICSide BAR Index */
if (opae_manager_get_eth_group_region_info(mgr, 1,
&opae_nside_eth_info)) {
}
lside_bar_idx = opae_lside_eth_info.mem_idx;
/* get NICSide BAR Index */
if (opae_manager_get_eth_group_region_info(mgr, 1,
&opae_nside_eth_info)) {
}
nside_bar_idx = opae_nside_eth_info.mem_idx;
if (lside_bar_idx >= PCI_MAX_RESOURCE ||
nside_bar_idx >= PCI_MAX_RESOURCE ||
lside_bar_idx == nside_bar_idx)
}
nside_bar_idx = opae_nside_eth_info.mem_idx;
if (lside_bar_idx >= PCI_MAX_RESOURCE ||
nside_bar_idx >= PCI_MAX_RESOURCE ||
lside_bar_idx == nside_bar_idx)
/* fill LineSide BAR Index */
afu_dev->mem_resource[lside_bar_idx].phys_addr =
/* fill LineSide BAR Index */
afu_dev->mem_resource[lside_bar_idx].phys_addr =
afu_dev->mem_resource[nside_bar_idx].addr =
opae_nside_eth_info.addr;
}
afu_dev->mem_resource[nside_bar_idx].addr =
opae_nside_eth_info.addr;
}
ioat_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info,
size_t dev_info_size)
{
struct rte_ioat_rawdev_config *cfg = dev_info;
struct rte_ioat_rawdev *ioat = dev->dev_private;
ioat_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info,
size_t dev_info_size)
{
struct rte_ioat_rawdev_config *cfg = dev_info;
struct rte_ioat_rawdev *ioat = dev->dev_private;
- if (cfg != NULL && dev_info_size == sizeof(*cfg))
- cfg->ring_size = ioat->ring_size;
+ if (dev_info == NULL || dev_info_size != sizeof(*cfg))
+ return -EINVAL;
+
+ cfg->ring_size = ioat->ring_size;
+ return 0;
}
static const char * const xstat_names[] = {
}
static const char * const xstat_names[] = {
ntb_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info,
size_t dev_info_size)
{
ntb_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info,
size_t dev_info_size)
{
if (dev_info_size != sizeof(*info)) {
NTB_LOG(ERR, "Invalid size parameter to %s", __func__);
if (dev_info_size != sizeof(*info)) {
NTB_LOG(ERR, "Invalid size parameter to %s", __func__);
}
info->mw_cnt = hw->mw_cnt;
}
info->mw_cnt = hw->mw_cnt;
if (!hw->queue_size || !hw->queue_pairs) {
NTB_LOG(ERR, "No queue size and queue num assigned.");
if (!hw->queue_size || !hw->queue_pairs) {
NTB_LOG(ERR, "No queue size and queue num assigned.");
}
hw->hdr_size_per_queue = RTE_ALIGN(sizeof(struct ntb_header) +
}
hw->hdr_size_per_queue = RTE_ALIGN(sizeof(struct ntb_header) +
hw->queue_size * sizeof(struct ntb_used),
RTE_CACHE_LINE_SIZE);
info->ntb_hdr_size = hw->hdr_size_per_queue * hw->queue_pairs;
hw->queue_size * sizeof(struct ntb_used),
RTE_CACHE_LINE_SIZE);
info->ntb_hdr_size = hw->hdr_size_per_queue * hw->queue_pairs;
static struct queue_buffers queue_buf[SKELETON_MAX_QUEUES] = {};
static void clear_queue_bufs(int queue_id);
static struct queue_buffers queue_buf[SKELETON_MAX_QUEUES] = {};
static void clear_queue_bufs(int queue_id);
-static void skeleton_rawdev_info_get(struct rte_rawdev *dev,
+static int skeleton_rawdev_info_get(struct rte_rawdev *dev,
rte_rawdev_obj_t dev_info,
size_t dev_info_size)
{
rte_rawdev_obj_t dev_info,
size_t dev_info_size)
{
if (!dev_info || dev_info_size != sizeof(*skeldev_conf)) {
SKELETON_PMD_ERR("Invalid request");
if (!dev_info || dev_info_size != sizeof(*skeldev_conf)) {
SKELETON_PMD_ERR("Invalid request");
}
skeldev = skeleton_rawdev_get_priv(dev);
}
skeldev = skeleton_rawdev_get_priv(dev);
skeldev_conf->capabilities = skeldev->capabilities;
skeldev_conf->device_state = skeldev->device_state;
skeldev_conf->firmware_state = skeldev->fw.firmware_state;
skeldev_conf->capabilities = skeldev->capabilities;
skeldev_conf->device_state = skeldev->device_state;
skeldev_conf->firmware_state = skeldev->fw.firmware_state;
}
static int skeleton_rawdev_configure(const struct rte_rawdev *dev,
}
static int skeleton_rawdev_configure(const struct rte_rawdev *dev,
size_t dev_private_size)
{
struct rte_rawdev *rawdev;
size_t dev_private_size)
{
struct rte_rawdev *rawdev;
RTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);
RTE_FUNC_PTR_OR_ERR_RET(dev_info, -EINVAL);
RTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);
RTE_FUNC_PTR_OR_ERR_RET(dev_info, -EINVAL);
if (dev_info->dev_private != NULL) {
RTE_FUNC_PTR_OR_ERR_RET(*rawdev->dev_ops->dev_info_get, -ENOTSUP);
if (dev_info->dev_private != NULL) {
RTE_FUNC_PTR_OR_ERR_RET(*rawdev->dev_ops->dev_info_get, -ENOTSUP);
- (*rawdev->dev_ops->dev_info_get)(rawdev, dev_info->dev_private,
+ ret = (*rawdev->dev_ops->dev_info_get)(rawdev,
+ dev_info->dev_private,
dev_info->device = rawdev->device;
dev_info->socket_id = rawdev->socket_id;
dev_info->device = rawdev->device;
dev_info->socket_id = rawdev->socket_id;
* The size of the structure pointed to by dev_info->dev_private
*
* @return
* The size of the structure pointed to by dev_info->dev_private
*
* @return
+ * Returns 0 on success, negative error code on failure
-typedef void (*rawdev_info_get_t)(struct rte_rawdev *dev,
+typedef int (*rawdev_info_get_t)(struct rte_rawdev *dev,
rte_rawdev_obj_t dev_info,
size_t dev_private_size);
rte_rawdev_obj_t dev_info,
size_t dev_private_size);