On 4/9/2022 7:14 PM, Li Zhang wrote:
DSA and IAA test need to get completion record size for allocating
and dumping completion record. DSA completion record is 32 bytes
while IAA completion record is 64 bytes. So add compl_size field
in struct accfg_device for using by DSA and IAA test code.
Signed-off-by: Li Zhang <li4.zhang(a)intel.com>
Reviewed-by: Dave Jiang <dave.jiang(a)intel.com>
---
accfg/lib/libaccfg.c | 17 +++++++++++++++++
accfg/lib/private.h | 1 +
accfg/libaccel_config.h | 5 +++++
3 files changed, 23 insertions(+)
diff --git a/accfg/lib/libaccfg.c b/accfg/lib/libaccfg.c
index 8d883b1..200bd70 100644
--- a/accfg/lib/libaccfg.c
+++ b/accfg/lib/libaccfg.c
@@ -547,6 +547,19 @@ static int device_parse_type(struct accfg_device *device)
return -ENODEV;
}
+/*set completion record size*/
+static int device_parse_compl_size(struct accfg_device *device)
+{
+ if (device->type == ACCFG_DEVICE_DSA)
+ device->compl_size = ACCFG_DEVICE_COMPL_SIZE_DSA;
+ else if (device->type == ACCFG_DEVICE_IAX)
+ device->compl_size = ACCFG_DEVICE_COMPL_SIZE_IAX;
Please make this dynamic. See how basenames is used. No need for this
function.
+ else
+ return -ENODEV;
+
+ return 0;
+}
+
static int mdev_str_to_type(char *mdev_type_str)
{
char **b;
@@ -706,6 +719,10 @@ static void *add_device(void *parent, int id, const char *ctl_base,
if (rc < 0)
goto err_dev_path;
+ rc = device_parse_compl_size(device);
No need to call function. Assign from array indexed by device type.
+ if (rc < 0)
+ goto err_dev_path;
+
device->bus_type_str = bus_type;
if (is_mdev_registered(device) && add_device_mdevs(ctx, device))
diff --git a/accfg/lib/private.h b/accfg/lib/private.h
index f88044c..773aba2 100644
--- a/accfg/lib/private.h
+++ b/accfg/lib/private.h
@@ -46,6 +46,7 @@ struct accfg_device {
int numa_node;
int ims_size;
int max_batch_size;
+ int compl_size;
int configurable;
int max_read_buffers;
unsigned int read_buffer_limit;
diff --git a/accfg/libaccel_config.h b/accfg/libaccel_config.h
index 9e952a7..ef7c8ae 100644
--- a/accfg/libaccel_config.h
+++ b/accfg/libaccel_config.h
@@ -45,6 +45,11 @@ enum accfg_device_state {
ACCFG_DEVICE_UNKNOWN = -1,
};
+enum accfg_device_compl_size {
+ ACCFG_DEVICE_COMPL_SIZE_DSA = 32,
+ ACCFG_DEVICE_COMPL_SIZE_IAX = 64,
+};
+
No need for this enum. Create an array like basenames and store the
corresponding value for each type
enum accfg_wq_mode {
ACCFG_WQ_SHARED = 0,
ACCFG_WQ_DEDICATED,