Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

netdevsim: dev: Initialize FIB module after debugfs

Initialize the dummy FIB offload module after debugfs, so that the FIB
module could create its own directory there.

Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Ido Schimmel and committed by
David S. Miller
f57ab5b7 484a4dfb

+21 -19
+21 -19
drivers/net/netdevsim/dev.c
··· 1012 1012 nsim_dev->fw_update_status = true; 1013 1013 nsim_dev->fw_update_overwrite_mask = 0; 1014 1014 1015 - nsim_dev->fib_data = nsim_fib_create(devlink, extack); 1016 - if (IS_ERR(nsim_dev->fib_data)) 1017 - return PTR_ERR(nsim_dev->fib_data); 1018 - 1019 1015 nsim_devlink_param_load_driverinit_values(devlink); 1020 1016 1021 1017 err = nsim_dev_dummy_region_init(nsim_dev, devlink); 1022 1018 if (err) 1023 - goto err_fib_destroy; 1019 + return err; 1024 1020 1025 1021 err = nsim_dev_traps_init(devlink); 1026 1022 if (err) 1027 1023 goto err_dummy_region_exit; 1028 1024 1025 + nsim_dev->fib_data = nsim_fib_create(devlink, extack); 1026 + if (IS_ERR(nsim_dev->fib_data)) { 1027 + err = PTR_ERR(nsim_dev->fib_data); 1028 + goto err_traps_exit; 1029 + } 1030 + 1029 1031 err = nsim_dev_health_init(nsim_dev, devlink); 1030 1032 if (err) 1031 - goto err_traps_exit; 1033 + goto err_fib_destroy; 1032 1034 1033 1035 err = nsim_dev_port_add_all(nsim_dev, nsim_bus_dev->port_count); 1034 1036 if (err) ··· 1045 1043 1046 1044 err_health_exit: 1047 1045 nsim_dev_health_exit(nsim_dev); 1046 + err_fib_destroy: 1047 + nsim_fib_destroy(devlink, nsim_dev->fib_data); 1048 1048 err_traps_exit: 1049 1049 nsim_dev_traps_exit(devlink); 1050 1050 err_dummy_region_exit: 1051 1051 nsim_dev_dummy_region_exit(nsim_dev); 1052 - err_fib_destroy: 1053 - nsim_fib_destroy(devlink, nsim_dev->fib_data); 1054 1052 return err; 1055 1053 } 1056 1054 ··· 1082 1080 if (err) 1083 1081 goto err_devlink_free; 1084 1082 1085 - nsim_dev->fib_data = nsim_fib_create(devlink, NULL); 1086 - if (IS_ERR(nsim_dev->fib_data)) { 1087 - err = PTR_ERR(nsim_dev->fib_data); 1088 - goto err_resources_unregister; 1089 - } 1090 - 1091 1083 err = devlink_register(devlink, &nsim_bus_dev->dev); 1092 1084 if (err) 1093 - goto err_fib_destroy; 1085 + goto err_resources_unregister; 1094 1086 1095 1087 err = devlink_params_register(devlink, nsim_devlink_params, 1096 1088 ARRAY_SIZE(nsim_devlink_params)); ··· 1104 1108 if (err) 1105 1109 goto err_traps_exit; 1106 1110 1111 + nsim_dev->fib_data = nsim_fib_create(devlink, NULL); 1112 + if (IS_ERR(nsim_dev->fib_data)) { 1113 + err = PTR_ERR(nsim_dev->fib_data); 1114 + goto err_debugfs_exit; 1115 + } 1116 + 1107 1117 err = nsim_dev_health_init(nsim_dev, devlink); 1108 1118 if (err) 1109 - goto err_debugfs_exit; 1119 + goto err_fib_destroy; 1110 1120 1111 1121 err = nsim_bpf_dev_init(nsim_dev); 1112 1122 if (err) ··· 1130 1128 nsim_bpf_dev_exit(nsim_dev); 1131 1129 err_health_exit: 1132 1130 nsim_dev_health_exit(nsim_dev); 1131 + err_fib_destroy: 1132 + nsim_fib_destroy(devlink, nsim_dev->fib_data); 1133 1133 err_debugfs_exit: 1134 1134 nsim_dev_debugfs_exit(nsim_dev); 1135 1135 err_traps_exit: ··· 1143 1139 ARRAY_SIZE(nsim_devlink_params)); 1144 1140 err_dl_unregister: 1145 1141 devlink_unregister(devlink); 1146 - err_fib_destroy: 1147 - nsim_fib_destroy(devlink, nsim_dev->fib_data); 1148 1142 err_resources_unregister: 1149 1143 devlink_resources_unregister(devlink, NULL); 1150 1144 err_devlink_free: ··· 1159 1157 debugfs_remove(nsim_dev->take_snapshot); 1160 1158 nsim_dev_port_del_all(nsim_dev); 1161 1159 nsim_dev_health_exit(nsim_dev); 1160 + nsim_fib_destroy(devlink, nsim_dev->fib_data); 1162 1161 nsim_dev_traps_exit(devlink); 1163 1162 nsim_dev_dummy_region_exit(nsim_dev); 1164 1163 mutex_destroy(&nsim_dev->port_list_lock); 1165 - nsim_fib_destroy(devlink, nsim_dev->fib_data); 1166 1164 } 1167 1165 1168 1166 void nsim_dev_remove(struct nsim_bus_dev *nsim_bus_dev)