]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
mlxsw: Save EtherType as part of mlxsw_sp_nve_config
authorAmit Cohen <amcohen@nvidia.com>
Tue, 8 Dec 2020 09:22:46 +0000 (11:22 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 8 Dec 2020 23:45:56 +0000 (15:45 -0800)
Add EtherType field to mlxsw_sp_nve_config struct.
Set EtherType according to mlxsw_sp_nve_params.ethertype.

Pass 'mlxsw_sp_nve_params' instead of 'mlxsw_sp_nve_params->dev' to the
function which initializes mlxsw_sp_nve_config struct to know which
EtherType to use.

This field is needed to configure which EtherType will be used when
VLAN is pushed at ingress of the tunnel port.

Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.c
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_nve_vxlan.c

index ed0d334b5fd1a1191122c887b0c7eb3938aa1b9a..adf499665f8717d2db2c919c65bd17f62f8690df 100644 (file)
@@ -802,7 +802,7 @@ int mlxsw_sp_nve_fid_enable(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_fid *fid,
                return -EINVAL;
 
        memset(&config, 0, sizeof(config));
-       ops->nve_config(nve, params->dev, &config);
+       ops->nve_config(nve, params, &config);
        if (nve->num_nve_tunnels &&
            memcmp(&config, &nve->config, sizeof(config))) {
                NL_SET_ERR_MSG_MOD(extack, "Conflicting NVE tunnels configuration");
index 12f664f42f2108abfc85b381959905713d8971cf..68bd9422be2a02b79eafe708a81a658bd6bb5df3 100644 (file)
@@ -18,6 +18,7 @@ struct mlxsw_sp_nve_config {
        u32 ul_tb_id;
        enum mlxsw_sp_l3proto ul_proto;
        union mlxsw_sp_l3addr ul_sip;
+       u16 ethertype;
 };
 
 struct mlxsw_sp_nve {
@@ -38,7 +39,7 @@ struct mlxsw_sp_nve_ops {
                            const struct net_device *dev,
                            struct netlink_ext_ack *extack);
        void (*nve_config)(const struct mlxsw_sp_nve *nve,
-                          const struct net_device *dev,
+                          const struct mlxsw_sp_nve_params *params,
                           struct mlxsw_sp_nve_config *config);
        int (*init)(struct mlxsw_sp_nve *nve,
                    const struct mlxsw_sp_nve_config *config);
index e9bff13ec2648130d9b4d3e49c748f670ce88543..f9a48a0109ff0a60c313d23ecd54b5a42ad08586 100644 (file)
@@ -87,10 +87,10 @@ static bool mlxsw_sp_nve_vxlan_can_offload(const struct mlxsw_sp_nve *nve,
 }
 
 static void mlxsw_sp_nve_vxlan_config(const struct mlxsw_sp_nve *nve,
-                                     const struct net_device *dev,
+                                     const struct mlxsw_sp_nve_params *params,
                                      struct mlxsw_sp_nve_config *config)
 {
-       struct vxlan_dev *vxlan = netdev_priv(dev);
+       struct vxlan_dev *vxlan = netdev_priv(params->dev);
        struct vxlan_config *cfg = &vxlan->cfg;
 
        config->type = MLXSW_SP_NVE_TYPE_VXLAN;
@@ -101,6 +101,7 @@ static void mlxsw_sp_nve_vxlan_config(const struct mlxsw_sp_nve *nve,
        config->ul_proto = MLXSW_SP_L3_PROTO_IPV4;
        config->ul_sip.addr4 = cfg->saddr.sin.sin_addr.s_addr;
        config->udp_dport = cfg->dst_port;
+       config->ethertype = params->ethertype;
 }
 
 static int __mlxsw_sp_nve_parsing_set(struct mlxsw_sp *mlxsw_sp,