mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-05 02:38:20 +00:00
mlxsw: spectrum_flower: Add extack messages
Return extack messages in order to explain failures of unsupported actions, keys and invalid user input. Signed-off-by: Nir Dotan <nird@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
af1fe78643
commit
27c203cd14
@ -67,16 +67,22 @@ static int mlxsw_sp_flower_parse_actions(struct mlxsw_sp *mlxsw_sp,
|
||||
list_for_each_entry(a, &actions, list) {
|
||||
if (is_tcf_gact_ok(a)) {
|
||||
err = mlxsw_sp_acl_rulei_act_terminate(rulei);
|
||||
if (err)
|
||||
if (err) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append terminate action");
|
||||
return err;
|
||||
}
|
||||
} else if (is_tcf_gact_shot(a)) {
|
||||
err = mlxsw_sp_acl_rulei_act_drop(rulei);
|
||||
if (err)
|
||||
if (err) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append drop action");
|
||||
return err;
|
||||
}
|
||||
} else if (is_tcf_gact_trap(a)) {
|
||||
err = mlxsw_sp_acl_rulei_act_trap(rulei);
|
||||
if (err)
|
||||
if (err) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append trap action");
|
||||
return err;
|
||||
}
|
||||
} else if (is_tcf_gact_goto_chain(a)) {
|
||||
u32 chain_index = tcf_gact_goto_chain_index(a);
|
||||
struct mlxsw_sp_acl_ruleset *ruleset;
|
||||
@ -90,8 +96,10 @@ static int mlxsw_sp_flower_parse_actions(struct mlxsw_sp *mlxsw_sp,
|
||||
|
||||
group_id = mlxsw_sp_acl_ruleset_group_id(ruleset);
|
||||
err = mlxsw_sp_acl_rulei_act_jump(rulei, group_id);
|
||||
if (err)
|
||||
if (err) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append jump action");
|
||||
return err;
|
||||
}
|
||||
} else if (is_tcf_mirred_egress_redirect(a)) {
|
||||
struct net_device *out_dev;
|
||||
struct mlxsw_sp_fid *fid;
|
||||
@ -127,6 +135,7 @@ static int mlxsw_sp_flower_parse_actions(struct mlxsw_sp *mlxsw_sp,
|
||||
action, vid,
|
||||
proto, prio, extack);
|
||||
} else {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Unsupported action");
|
||||
dev_err(mlxsw_sp->bus_info->dev, "Unsupported action\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
@ -203,6 +212,7 @@ static int mlxsw_sp_flower_parse_ports(struct mlxsw_sp *mlxsw_sp,
|
||||
return 0;
|
||||
|
||||
if (ip_proto != IPPROTO_TCP && ip_proto != IPPROTO_UDP) {
|
||||
NL_SET_ERR_MSG_MOD(f->common.extack, "Only UDP and TCP keys are supported");
|
||||
dev_err(mlxsw_sp->bus_info->dev, "Only UDP and TCP keys are supported\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -231,6 +241,7 @@ static int mlxsw_sp_flower_parse_tcp(struct mlxsw_sp *mlxsw_sp,
|
||||
return 0;
|
||||
|
||||
if (ip_proto != IPPROTO_TCP) {
|
||||
NL_SET_ERR_MSG_MOD(f->common.extack, "TCP keys supported only for TCP");
|
||||
dev_err(mlxsw_sp->bus_info->dev, "TCP keys supported only for TCP\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -257,6 +268,7 @@ static int mlxsw_sp_flower_parse_ip(struct mlxsw_sp *mlxsw_sp,
|
||||
return 0;
|
||||
|
||||
if (n_proto != ETH_P_IP && n_proto != ETH_P_IPV6) {
|
||||
NL_SET_ERR_MSG_MOD(f->common.extack, "IP keys supported only for IPv4/6");
|
||||
dev_err(mlxsw_sp->bus_info->dev, "IP keys supported only for IPv4/6\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -301,6 +313,7 @@ static int mlxsw_sp_flower_parse(struct mlxsw_sp *mlxsw_sp,
|
||||
BIT(FLOW_DISSECTOR_KEY_IP) |
|
||||
BIT(FLOW_DISSECTOR_KEY_VLAN))) {
|
||||
dev_err(mlxsw_sp->bus_info->dev, "Unsupported key\n");
|
||||
NL_SET_ERR_MSG_MOD(f->common.extack, "Unsupported key");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user