Fri, Nov 11, 2016 at 01:54:05PM CET, ido...@idosch.org wrote: >On Fri, Nov 11, 2016 at 11:20:42AM +0100, Jiri Pirko wrote: >> From: Arkadi Sharshevsky <arka...@mellanox.com> >> >> During neighbour activity check the device's table is dumped by multiple >> query requests. The query session should end when the response carries >> less records than requested or when a given record is not full. Current >> code only stops the dumping process if the number of returned records is >> zero, which can result in infinite loop in case of activity. >> >> Fix this by stopping the dumping process according to the above logic. >> >> Fixes: c723c735fa6b ("mlxsw: spectrum_router: Periodically update the >> kernel's neigh table") >> Signed-off-by: Arkadi Sharshevsky <arka...@mellanox.com> >> Signed-off-by: Ido Schimmel <ido...@mellanox.com> >> Signed-off-by: Jiri Pirko <j...@mellanox.com> >> --- >> .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 22 >> +++++++++++++++++++++- >> 1 file changed, 21 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c >> b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c >> index 040737e..d437457 100644 >> --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c >> +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c >> @@ -800,6 +800,26 @@ static void mlxsw_sp_router_neigh_rec_process(struct >> mlxsw_sp *mlxsw_sp, >> } >> } >> >> +static bool mlxsw_sp_router_rauhtd_is_full(char *rauhtd_pl) >> +{ >> + u8 num_rec, last_rec_index, num_entries; >> + >> + num_rec = mlxsw_reg_rauhtd_num_rec_get(rauhtd_pl); >> + last_rec_index = num_rec - 1; >> + >> + if (num_rec < MLXSW_REG_RAUHTD_REC_MAX_NUM) >> + return false; >> + if (mlxsw_reg_rauhtd_rec_type_get(rauhtd_pl, last_rec_index) == >> + MLXSW_REG_RAUHTD_TYPE_IPV6) >> + return true; >> + >> + num_entries = mlxsw_reg_rauhtd_ipv4_rec_num_entries_get(rauhtd_pl, >> + last_rec_index); >> + if (++num_entries == MLXSW_REG_RAUHTD_IPV4_ENT_PER_REC) > >Jiri, I just noticed we have an extra space after the '=='. Can you >please remove it in v2? Sorry for not spotting this earlier.
Will do.