@@ -8069,16 +8069,6 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
8069
8069
mlxsw_sp -> router = router ;
8070
8070
router -> mlxsw_sp = mlxsw_sp ;
8071
8071
8072
- router -> inetaddr_nb .notifier_call = mlxsw_sp_inetaddr_event ;
8073
- err = register_inetaddr_notifier (& router -> inetaddr_nb );
8074
- if (err )
8075
- goto err_register_inetaddr_notifier ;
8076
-
8077
- router -> inet6addr_nb .notifier_call = mlxsw_sp_inet6addr_event ;
8078
- err = register_inet6addr_notifier (& router -> inet6addr_nb );
8079
- if (err )
8080
- goto err_register_inet6addr_notifier ;
8081
-
8082
8072
INIT_LIST_HEAD (& mlxsw_sp -> router -> nexthop_neighs_list );
8083
8073
err = __mlxsw_sp_router_init (mlxsw_sp );
8084
8074
if (err )
@@ -8119,12 +8109,6 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
8119
8109
if (err )
8120
8110
goto err_neigh_init ;
8121
8111
8122
- mlxsw_sp -> router -> netevent_nb .notifier_call =
8123
- mlxsw_sp_router_netevent_event ;
8124
- err = register_netevent_notifier (& mlxsw_sp -> router -> netevent_nb );
8125
- if (err )
8126
- goto err_register_netevent_notifier ;
8127
-
8128
8112
err = mlxsw_sp_mp_hash_init (mlxsw_sp );
8129
8113
if (err )
8130
8114
goto err_mp_hash_init ;
@@ -8133,6 +8117,22 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
8133
8117
if (err )
8134
8118
goto err_dscp_init ;
8135
8119
8120
+ router -> inetaddr_nb .notifier_call = mlxsw_sp_inetaddr_event ;
8121
+ err = register_inetaddr_notifier (& router -> inetaddr_nb );
8122
+ if (err )
8123
+ goto err_register_inetaddr_notifier ;
8124
+
8125
+ router -> inet6addr_nb .notifier_call = mlxsw_sp_inet6addr_event ;
8126
+ err = register_inet6addr_notifier (& router -> inet6addr_nb );
8127
+ if (err )
8128
+ goto err_register_inet6addr_notifier ;
8129
+
8130
+ mlxsw_sp -> router -> netevent_nb .notifier_call =
8131
+ mlxsw_sp_router_netevent_event ;
8132
+ err = register_netevent_notifier (& mlxsw_sp -> router -> netevent_nb );
8133
+ if (err )
8134
+ goto err_register_netevent_notifier ;
8135
+
8136
8136
mlxsw_sp -> router -> fib_nb .notifier_call = mlxsw_sp_router_fib_event ;
8137
8137
err = register_fib_notifier (mlxsw_sp_net (mlxsw_sp ),
8138
8138
& mlxsw_sp -> router -> fib_nb ,
@@ -8143,10 +8143,15 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
8143
8143
return 0 ;
8144
8144
8145
8145
err_register_fib_notifier :
8146
- err_dscp_init :
8147
- err_mp_hash_init :
8148
8146
unregister_netevent_notifier (& mlxsw_sp -> router -> netevent_nb );
8149
8147
err_register_netevent_notifier :
8148
+ unregister_inet6addr_notifier (& router -> inet6addr_nb );
8149
+ err_register_inet6addr_notifier :
8150
+ unregister_inetaddr_notifier (& router -> inetaddr_nb );
8151
+ err_register_inetaddr_notifier :
8152
+ mlxsw_core_flush_owq ();
8153
+ err_dscp_init :
8154
+ err_mp_hash_init :
8150
8155
mlxsw_sp_neigh_fini (mlxsw_sp );
8151
8156
err_neigh_init :
8152
8157
mlxsw_sp_vrs_fini (mlxsw_sp );
@@ -8165,10 +8170,6 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp,
8165
8170
err_rifs_init :
8166
8171
__mlxsw_sp_router_fini (mlxsw_sp );
8167
8172
err_router_init :
8168
- unregister_inet6addr_notifier (& router -> inet6addr_nb );
8169
- err_register_inet6addr_notifier :
8170
- unregister_inetaddr_notifier (& router -> inetaddr_nb );
8171
- err_register_inetaddr_notifier :
8172
8173
mutex_destroy (& mlxsw_sp -> router -> lock );
8173
8174
kfree (mlxsw_sp -> router );
8174
8175
return err ;
@@ -8179,6 +8180,9 @@ void mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp)
8179
8180
unregister_fib_notifier (mlxsw_sp_net (mlxsw_sp ),
8180
8181
& mlxsw_sp -> router -> fib_nb );
8181
8182
unregister_netevent_notifier (& mlxsw_sp -> router -> netevent_nb );
8183
+ unregister_inet6addr_notifier (& mlxsw_sp -> router -> inet6addr_nb );
8184
+ unregister_inetaddr_notifier (& mlxsw_sp -> router -> inetaddr_nb );
8185
+ mlxsw_core_flush_owq ();
8182
8186
mlxsw_sp_neigh_fini (mlxsw_sp );
8183
8187
mlxsw_sp_vrs_fini (mlxsw_sp );
8184
8188
mlxsw_sp_mr_fini (mlxsw_sp );
@@ -8188,8 +8192,6 @@ void mlxsw_sp_router_fini(struct mlxsw_sp *mlxsw_sp)
8188
8192
mlxsw_sp_ipips_fini (mlxsw_sp );
8189
8193
mlxsw_sp_rifs_fini (mlxsw_sp );
8190
8194
__mlxsw_sp_router_fini (mlxsw_sp );
8191
- unregister_inet6addr_notifier (& mlxsw_sp -> router -> inet6addr_nb );
8192
- unregister_inetaddr_notifier (& mlxsw_sp -> router -> inetaddr_nb );
8193
8195
mutex_destroy (& mlxsw_sp -> router -> lock );
8194
8196
kfree (mlxsw_sp -> router );
8195
8197
}
0 commit comments