Re: [PATCH 09/20] dlb2: add ioctl to configure ports, query poll mode

From: Arnd Bergmann
Date: Sun Jul 12 2020 - 11:34:37 EST


On Sun, Jul 12, 2020 at 3:46 PM Gage Eads <gage.eads@xxxxxxxxx> wrote:
> enum dlb2_user_interface_commands {
> DLB2_CMD_GET_DEVICE_VERSION,
> DLB2_CMD_CREATE_SCHED_DOMAIN,
> DLB2_CMD_GET_SCHED_DOMAIN_FD,
> DLB2_CMD_GET_NUM_RESOURCES,
> DLB2_CMD_GET_DRIVER_VERSION,
> + DLB2_CMD_QUERY_CQ_POLL_MODE,
>
> /* NUM_DLB2_CMD must be last */
> NUM_DLB2_CMD,

> @@ -427,6 +513,8 @@ struct dlb2_get_dir_queue_depth_args {
> enum dlb2_domain_user_interface_commands {
> DLB2_DOMAIN_CMD_CREATE_LDB_QUEUE,
> DLB2_DOMAIN_CMD_CREATE_DIR_QUEUE,
> + DLB2_DOMAIN_CMD_CREATE_LDB_PORT,
> + DLB2_DOMAIN_CMD_CREATE_DIR_PORT,
> DLB2_DOMAIN_CMD_GET_LDB_QUEUE_DEPTH,
> DLB2_DOMAIN_CMD_GET_DIR_QUEUE_DEPTH,


You cannot add new commands in the middle without changing the ABI.

Maybe use individual #define lines in place of the enum to make sure these
remain constants, or add a numeric value for each one when they are
originally introduced.

(yes, I realize this is the initial contribution of the new driver, but it still
seems wrong to have it change in the middle of the series).

Arnd