net/cnxk: fix build with GCC 12

Resolve following compilation error with gcc 12 version.
error: storing the address of local variable message in *error.message

Fixes: 26b034f78c ("net/cnxk: support to validate meter policy")
Cc: stable@dpdk.org

Reported-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
This commit is contained in:
Rakesh Kudurumalla 2022-02-23 15:25:40 +05:30 committed by Jerin Jacob
parent d6c3525d13
commit b526599020

View File

@ -285,15 +285,54 @@ cnxk_nix_mtr_profile_delete(struct rte_eth_dev *eth_dev, uint32_t profile_id,
return 0;
}
static int
update_mtr_err(uint32_t act_color, struct rte_mtr_error *error, bool action)
{
const char *str;
switch (act_color) {
case RTE_COLOR_GREEN:
if (action) {
str = "Green action is not valid";
goto notsup;
} else {
str = "Green action is null";
goto notvalid;
}
break;
case RTE_COLOR_YELLOW:
if (action) {
str = "Yellow action is not valid";
goto notsup;
} else {
str = "Yellow action is null";
goto notvalid;
}
break;
case RTE_COLOR_RED:
if (action) {
str = "Red action is not valid";
goto notsup;
} else {
str = "Red action is null";
goto notvalid;
}
break;
}
notsup:
return -rte_mtr_error_set(error, ENOTSUP,
RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, str);
notvalid:
return -rte_mtr_error_set(error, EINVAL,
RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, str);
}
static int
cnxk_nix_mtr_policy_validate(struct rte_eth_dev *dev,
struct rte_mtr_meter_policy_params *policy,
struct rte_mtr_error *error)
{
static const char *const action_color[] = {"Green", "Yellow", "Red"};
bool supported[RTE_COLORS] = {false, false, false};
const struct rte_flow_action *action;
char message[1024];
uint32_t i;
RTE_SET_USED(dev);
@ -315,21 +354,11 @@ cnxk_nix_mtr_policy_validate(struct rte_eth_dev *dev,
if (action->type == RTE_FLOW_ACTION_TYPE_VOID)
supported[i] = true;
if (!supported[i]) {
sprintf(message,
"%s action is not valid",
action_color[i]);
return -rte_mtr_error_set(error,
ENOTSUP,
RTE_MTR_ERROR_TYPE_METER_POLICY, NULL,
message);
}
if (!supported[i])
return update_mtr_err(i, error, true);
}
} else {
sprintf(message, "%s action is null", action_color[i]);
return -rte_mtr_error_set(error, EINVAL,
RTE_MTR_ERROR_TYPE_METER_POLICY, NULL,
message);
return update_mtr_err(i, error, false);
}
}