Message ID | 20180502071735.32352-2-idosch@mellanox.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | mlxsw: Reject unsupported FIB configurations | expand |
On 5/2/18 1:17 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. Next, I think we need a user override flag for rules to prevent hardware from limiting the rules that can be added and aborting offload. For example, if the user knows that a rule is meant to direct traffic out of a management VRF and is unrelated to front panel ports the offload should ignore it. > > 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 <idosch@mellanox.com> > --- > drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > Acked-by: David Ahern <dsahern@gmail.com>
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 8e4edb634b11..added380e344 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -5882,24 +5882,24 @@ static int mlxsw_sp_router_fib_rule_event(unsigned long event, switch (info->family) { case AF_INET: if (!fib4_rule_default(rule) && !rule->l3mdev) - err = -1; + err = -EOPNOTSUPP; break; case AF_INET6: if (!fib6_rule_default(rule) && !rule->l3mdev) - err = -1; + err = -EOPNOTSUPP; break; case RTNL_FAMILY_IPMR: if (!ipmr_rule_default(rule) && !rule->l3mdev) - err = -1; + err = -EOPNOTSUPP; break; case RTNL_FAMILY_IP6MR: if (!ip6mr_rule_default(rule) && !rule->l3mdev) - err = -1; + err = -EOPNOTSUPP; break; } 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; } @@ -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);
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 <idosch@mellanox.com> --- drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)