]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
mlxsw: core_acl_flex_actions: Add extack messages
authorNir Dotan <nird@mellanox.com>
Tue, 24 Jul 2018 14:13:12 +0000 (17:13 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Jul 2018 17:10:33 +0000 (10:10 -0700)
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>
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_actions.c

index b09de724e9a1aee41e7b9ad7ceda1db9d1eb4d9d..a4669e79fdf90a82cc69853684600986bb936a1d 100644 (file)
@@ -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;
 }