Skip to content

Commit

Permalink
mlxsw: core_acl_flex_actions: Add extack messages
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Nir Dotan authored and David S. Miller committed Jul 24, 2018
1 parent ad7769c commit 9c10812
Showing 1 changed file with 25 additions and 10 deletions.
35 changes: 25 additions & 10 deletions drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_actions.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 9c10812

Please sign in to comment.