On 5/1/18 2:16 AM, Ido Schimmel wrote:
> Since commit 9776d32537d2 ("net: Move call_fib_rule_notifiers up in
> fib_nl_newrule") it is possible to forbid the installation of
> unsupported FIB rules.
>
> Have mlxsw return an error for non-default FIB rules in addition to the
> existing extack message.
>
> Example:
> # ip rule add from 198.51.100.1 table 10
> Error: mlxsw_spectrum: FIB rules not supported.
>
> Note that offload is only aborted when non-default FIB rules are already
> installed and merely replayed during module initialization.
>
> Signed-off-by: Ido Schimmel <[email protected]>
> ---
> drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
> b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
> index 8e4edb634b11..baea97560029 100644
> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
> @@ -5899,7 +5899,7 @@ static int mlxsw_sp_router_fib_rule_event(unsigned long
> event,
> }
>
> if (err < 0)
> - NL_SET_ERR_MSG_MOD(extack, "FIB rules not supported. Aborting
> offload");
> + NL_SET_ERR_MSG_MOD(extack, "FIB rules not supported");
>
> return err;
shouldn't mlxsw_sp_router_fib_rule_event return -EOPNOTSUPP instead of
-1 (EPERM)?
> }
> @@ -5926,8 +5926,8 @@ static int mlxsw_sp_router_fib_event(struct
> notifier_block *nb,
> case FIB_EVENT_RULE_DEL:
> err = mlxsw_sp_router_fib_rule_event(event, info,
> router->mlxsw_sp);
> - if (!err)
> - return NOTIFY_DONE;
> + if (!err || info->extack)
> + return notifier_from_errno(err);
> }
>
> fib_work = kzalloc(sizeof(*fib_work), GFP_ATOMIC);
>