Re: [patch net-next 24/26] mlxsw: spectrum: Implement LAG port join/leave

David Miller
2015-12-02T17:30:09Z

From: Or Gerlitz <gerlitz.or@gmail.com>
Date: Wed, 2 Dec 2015 07:47:51 +0200

> On Tue, Dec 1, 2015 at 3:49 PM, Jiri Pirko <jiri@resnulli.us> wrote:
>> Implement basic procedures for joining/leaving port to/from LAG. That
>> includes HW setup of collector, core LAG mapping setup.
>>
>> Signed-off-by: Jiri Pirko <jiri@mellanox.com>
>> ---
>> drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 284 +++++++++++++++++++++++--
>> drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 35 ++-
>> 2 files changed, 302 insertions(+), 17 deletions(-)
>>
>> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
>> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
>
> [...]
>
>> +static int mlxsw_sp_port_lag_leave(struct mlxsw_sp_port *mlxsw_sp_port,
>> + struct net_device *lag_dev)
>> +{
>> + struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port->mlxsw_sp;
>> + struct mlxsw_sp_upper *lag;
>> + u16 lag_id = mlxsw_sp_port->lag_id;
>> + int err;
>> +
>> + if (!mlxsw_sp_port->lagged)
>> + return 0;
>> + lag = mlxsw_sp_lag_get(mlxsw_sp, lag_id);
>> + BUG_ON(lag->ref_count == 0);
>
> is this a must to crash the system here? can't we do something less drastic?

Indeed, please use WARN_ON() and return an error or perform some other kind of
recovery operation.

BUG_ON() is bad and is only to ever be used when the kernel's
continued operation is absolutely impossible.