|
@@ -676,6 +676,7 @@ enum mlxsw_afa_trapdisc_trap_action {
|
|
|
MLXSW_ITEM32(afa, trapdisc, trap_action, 0x00, 24, 4);
|
|
|
|
|
|
enum mlxsw_afa_trapdisc_forward_action {
|
|
|
+ MLXSW_AFA_TRAPDISC_FORWARD_ACTION_FORWARD = 1,
|
|
|
MLXSW_AFA_TRAPDISC_FORWARD_ACTION_DISCARD = 3,
|
|
|
};
|
|
|
|
|
@@ -729,6 +730,22 @@ int mlxsw_afa_block_append_trap(struct mlxsw_afa_block *block, u16 trap_id)
|
|
|
}
|
|
|
EXPORT_SYMBOL(mlxsw_afa_block_append_trap);
|
|
|
|
|
|
+int mlxsw_afa_block_append_trap_and_forward(struct mlxsw_afa_block *block,
|
|
|
+ u16 trap_id)
|
|
|
+{
|
|
|
+ char *act = mlxsw_afa_block_append_action(block,
|
|
|
+ MLXSW_AFA_TRAPDISC_CODE,
|
|
|
+ MLXSW_AFA_TRAPDISC_SIZE);
|
|
|
+
|
|
|
+ if (!act)
|
|
|
+ return -ENOBUFS;
|
|
|
+ mlxsw_afa_trapdisc_pack(act, MLXSW_AFA_TRAPDISC_TRAP_ACTION_TRAP,
|
|
|
+ MLXSW_AFA_TRAPDISC_FORWARD_ACTION_FORWARD,
|
|
|
+ trap_id);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mlxsw_afa_block_append_trap_and_forward);
|
|
|
+
|
|
|
/* Forwarding Action
|
|
|
* -----------------
|
|
|
* Forwarding Action can be used to implement Policy Based Switching (PBS)
|