mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 15:41:39 +00:00
mlxsw: core_acl_flex_actions: Add extack messages
Return extack messages for failures in action set creation. Errors may occur when action is not currently supported or due to lack of resources. 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
ad7769ca2d
commit
9c10812afe
@ -760,8 +760,10 @@ int mlxsw_afa_block_append_vlan_modify(struct mlxsw_afa_block *block,
|
||||
MLXSW_AFA_VLAN_CODE,
|
||||
MLXSW_AFA_VLAN_SIZE);
|
||||
|
||||
if (!act)
|
||||
if (!act) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append vlan_modify action");
|
||||
return -ENOBUFS;
|
||||
}
|
||||
mlxsw_afa_vlan_pack(act, MLXSW_AFA_VLAN_VLAN_TAG_CMD_NOP,
|
||||
MLXSW_AFA_VLAN_CMD_SET_OUTER, vid,
|
||||
MLXSW_AFA_VLAN_CMD_SET_OUTER, pcp,
|
||||
@ -962,12 +964,15 @@ mlxsw_afa_block_append_mirror(struct mlxsw_afa_block *block, u8 local_in_port,
|
||||
|
||||
mirror = mlxsw_afa_mirror_create(block, local_in_port, out_dev,
|
||||
ingress);
|
||||
if (IS_ERR(mirror))
|
||||
if (IS_ERR(mirror)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot create mirror action");
|
||||
return PTR_ERR(mirror);
|
||||
|
||||
}
|
||||
err = mlxsw_afa_block_append_allocated_mirror(block, mirror->span_id);
|
||||
if (err)
|
||||
if (err) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append mirror action");
|
||||
goto err_append_allocated_mirror;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@ -1025,17 +1030,22 @@ int mlxsw_afa_block_append_fwd(struct mlxsw_afa_block *block,
|
||||
char *act;
|
||||
int err;
|
||||
|
||||
if (in_port)
|
||||
if (in_port) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Forwarding to ingress port is not supported");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
fwd_entry_ref = mlxsw_afa_fwd_entry_ref_create(block, local_port);
|
||||
if (IS_ERR(fwd_entry_ref))
|
||||
if (IS_ERR(fwd_entry_ref)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot create forward action");
|
||||
return PTR_ERR(fwd_entry_ref);
|
||||
}
|
||||
kvdl_index = fwd_entry_ref->fwd_entry->kvdl_index;
|
||||
|
||||
act = mlxsw_afa_block_append_action(block, MLXSW_AFA_FORWARD_CODE,
|
||||
MLXSW_AFA_FORWARD_SIZE);
|
||||
if (!act) {
|
||||
err = -ENOBUFS;
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append forward action");
|
||||
goto err_append_action;
|
||||
}
|
||||
mlxsw_afa_forward_pack(act, MLXSW_AFA_FORWARD_TYPE_PBS,
|
||||
@ -1107,14 +1117,17 @@ int mlxsw_afa_block_append_counter(struct mlxsw_afa_block *block,
|
||||
int err;
|
||||
|
||||
counter = mlxsw_afa_counter_create(block);
|
||||
if (IS_ERR(counter))
|
||||
if (IS_ERR(counter)) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot create count action");
|
||||
return PTR_ERR(counter);
|
||||
}
|
||||
counter_index = counter->counter_index;
|
||||
|
||||
err = mlxsw_afa_block_append_allocated_counter(block, counter_index);
|
||||
if (err)
|
||||
if (err) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append count action");
|
||||
goto err_append_allocated_counter;
|
||||
|
||||
}
|
||||
if (p_counter_index)
|
||||
*p_counter_index = counter_index;
|
||||
return 0;
|
||||
@ -1163,8 +1176,10 @@ int mlxsw_afa_block_append_fid_set(struct mlxsw_afa_block *block, u16 fid,
|
||||
char *act = mlxsw_afa_block_append_action(block,
|
||||
MLXSW_AFA_VIRFWD_CODE,
|
||||
MLXSW_AFA_VIRFWD_SIZE);
|
||||
if (!act)
|
||||
if (!act) {
|
||||
NL_SET_ERR_MSG_MOD(extack, "Cannot append fid_set action");
|
||||
return -ENOBUFS;
|
||||
}
|
||||
mlxsw_afa_virfwd_pack(act, MLXSW_AFA_VIRFWD_FID_CMD_SET, fid);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user