Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[linux-2.6-microblaze.git] / drivers / net / ethernet / mellanox / mlxsw / spectrum_router.c
index f7948e9..0514697 100644 (file)
@@ -1,10 +1,10 @@
 /*
  * drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
- * Copyright (c) 2016-2017 Mellanox Technologies. All rights reserved.
+ * Copyright (c) 2016-2018 Mellanox Technologies. All rights reserved.
  * Copyright (c) 2016 Jiri Pirko <jiri@mellanox.com>
  * Copyright (c) 2016 Ido Schimmel <idosch@mellanox.com>
  * Copyright (c) 2016 Yotam Gigi <yotamg@mellanox.com>
- * Copyright (c) 2017 Petr Machata <petrm@mellanox.com>
+ * Copyright (c) 2017-2018 Petr Machata <petrm@mellanox.com>
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -796,7 +796,7 @@ static struct mlxsw_sp_vr *mlxsw_sp_vr_create(struct mlxsw_sp *mlxsw_sp,
 
        vr = mlxsw_sp_vr_find_unused(mlxsw_sp);
        if (!vr) {
-               NL_SET_ERR_MSG(extack, "spectrum: Exceeded number of supported virtual routers");
+               NL_SET_ERR_MSG_MOD(extack, "Exceeded number of supported virtual routers");
                return ERR_PTR(-EBUSY);
        }
        fib4 = mlxsw_sp_fib_create(mlxsw_sp, vr, MLXSW_SP_L3_PROTO_IPV4);
@@ -1024,9 +1024,11 @@ mlxsw_sp_ipip_entry_alloc(struct mlxsw_sp *mlxsw_sp,
                          enum mlxsw_sp_ipip_type ipipt,
                          struct net_device *ol_dev)
 {
+       const struct mlxsw_sp_ipip_ops *ipip_ops;
        struct mlxsw_sp_ipip_entry *ipip_entry;
        struct mlxsw_sp_ipip_entry *ret = NULL;
 
+       ipip_ops = mlxsw_sp->router->ipip_ops_arr[ipipt];
        ipip_entry = kzalloc(sizeof(*ipip_entry), GFP_KERNEL);
        if (!ipip_entry)
                return ERR_PTR(-ENOMEM);
@@ -1040,7 +1042,15 @@ mlxsw_sp_ipip_entry_alloc(struct mlxsw_sp *mlxsw_sp,
 
        ipip_entry->ipipt = ipipt;
        ipip_entry->ol_dev = ol_dev;
-       ipip_entry->parms = mlxsw_sp_ipip_netdev_parms(ol_dev);
+
+       switch (ipip_ops->ul_proto) {
+       case MLXSW_SP_L3_PROTO_IPV4:
+               ipip_entry->parms4 = mlxsw_sp_ipip_netdev_parms4(ol_dev);
+               break;
+       case MLXSW_SP_L3_PROTO_IPV6:
+               WARN_ON(1);
+               break;
+       }
 
        return ipip_entry;
 
@@ -5793,7 +5803,7 @@ static int mlxsw_sp_router_fib_rule_event(unsigned long event,
        }
 
        if (err < 0)
-               NL_SET_ERR_MSG(extack, "spectrum: FIB rules not supported. Aborting offload");
+               NL_SET_ERR_MSG_MOD(extack, "FIB rules not supported. Aborting offload");
 
        return err;
 }
@@ -6032,7 +6042,7 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp,
 
        err = mlxsw_sp_rif_index_alloc(mlxsw_sp, &rif_index);
        if (err) {
-               NL_SET_ERR_MSG(extack, "spectrum: Exceeded number of supported router interfaces");
+               NL_SET_ERR_MSG_MOD(extack, "Exceeded number of supported router interfaces");
                goto err_rif_index_alloc;
        }