From: Jiri Pirko <j...@resnulli.us> Date: Fri, 21 Jul 2017 18:04:28 +0200
> From: Ido Schimmel <ido...@mellanox.com> > > Each FIB node holds a linked list of routes sharing the same prefix and > length. In the case of IPv4 it's ordered according to table ID, metric > and TOS and only the first route in the list is actually programmed to > the device. > > In case a gatewayed route is added somewhere in the list, then after its > nexthop group will be refreshed and become valid (due to the resolution > of its gateway), it'll mistakenly overwrite the existing entry. > > Example: > 192.168.200.0/24 dev enp3s0np3 scope link metric 1000 offload > 192.168.200.0/24 via 192.168.100.1 dev enp3s0np3 metric 1000 offload > > Both routes are marked as offloaded despite the fact only the first one > should actually be present in the device's table. > > When refreshing the nexthop group, don't write the route to the device's > table unless it's the first in its node. > > Fixes: 9aecce1c7d97 ("mlxsw: spectrum_router: Correctly handle identical > routes") > Signed-off-by: Ido Schimmel <ido...@mellanox.com> > Signed-off-by: Jiri Pirko <j...@mellanox.com> Applied.