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:
parent
d6c3525d13
commit
b526599020
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user