for (i = 0; i < nh_grp->count; i++) {
                        nh = &nh_grp->nexthops[i];
                        val ^= jhash(&nh->ifindex, sizeof(nh->ifindex), seed);
+                       val ^= jhash(&nh->gw_addr, sizeof(nh->gw_addr), seed);
                }
                return jhash(&val, sizeof(val), seed);
        default:
 {
        unsigned int val = fib6_entry->nrt6;
        struct mlxsw_sp_rt6 *mlxsw_sp_rt6;
-       struct net_device *dev;
 
        list_for_each_entry(mlxsw_sp_rt6, &fib6_entry->rt6_list, list) {
-               dev = mlxsw_sp_rt6->rt->fib6_nh->fib_nh_dev;
+               struct fib6_nh *fib6_nh = mlxsw_sp_rt6->rt->fib6_nh;
+               struct net_device *dev = fib6_nh->fib_nh_dev;
+               struct in6_addr *gw = &fib6_nh->fib_nh_gw6;
+
                val ^= jhash(&dev->ifindex, sizeof(dev->ifindex), seed);
+               val ^= jhash(gw, sizeof(*gw), seed);
        }
 
        return jhash(&val, sizeof(val), seed);