From: Ido Schimmel <ido...@nvidia.com>

The validation of a nexthop group entry is also necessary for resilient
nexthop groups, so break the validation to a separate function to allow
for code reuse in subsequent patches.

Signed-off-by: Ido Schimmel <ido...@nvidia.com>
Reviewed-by: Petr Machata <pe...@nvidia.com>
---
 .../ethernet/mellanox/mlxsw/spectrum_router.c | 36 +++++++++++++------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c 
b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
index 6be225ec1997..fa190e27323e 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
@@ -4296,6 +4296,29 @@ mlxsw_sp_nexthop_obj_single_validate(struct mlxsw_sp 
*mlxsw_sp,
        return err;
 }
 
+static int
+mlxsw_sp_nexthop_obj_group_entry_validate(struct mlxsw_sp *mlxsw_sp,
+                                         const struct nh_notifier_single_info 
*nh,
+                                         struct netlink_ext_ack *extack)
+{
+       int err;
+
+       err = mlxsw_sp_nexthop_obj_single_validate(mlxsw_sp, nh, extack);
+       if (err)
+               return err;
+
+       /* Device only nexthops with an IPIP device are programmed as
+        * encapsulating adjacency entries.
+        */
+       if (!nh->gw_family && !nh->is_reject &&
+           !mlxsw_sp_netdev_ipip_type(mlxsw_sp, nh->dev, NULL)) {
+               NL_SET_ERR_MSG_MOD(extack, "Nexthop group entry does not have a 
gateway");
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
 static int
 mlxsw_sp_nexthop_obj_group_validate(struct mlxsw_sp *mlxsw_sp,
                                    const struct nh_notifier_grp_info *nh_grp,
@@ -4313,19 +4336,10 @@ mlxsw_sp_nexthop_obj_group_validate(struct mlxsw_sp 
*mlxsw_sp,
                int err;
 
                nh = &nh_grp->nh_entries[i].nh;
-               err = mlxsw_sp_nexthop_obj_single_validate(mlxsw_sp, nh,
-                                                          extack);
+               err = mlxsw_sp_nexthop_obj_group_entry_validate(mlxsw_sp, nh,
+                                                               extack);
                if (err)
                        return err;
-
-               /* Device only nexthops with an IPIP device are programmed as
-                * encapsulating adjacency entries.
-                */
-               if (!nh->gw_family && !nh->is_reject &&
-                   !mlxsw_sp_netdev_ipip_type(mlxsw_sp, nh->dev, NULL)) {
-                       NL_SET_ERR_MSG_MOD(extack, "Nexthop group entry does 
not have a gateway");
-                       return -EINVAL;
-               }
        }
 
        return 0;
-- 
2.29.2

Reply via email to